diff --git a/README.md b/README.md index 1f8f32e..e8fa81e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## What is this? -this is a ax650 linux bsp sdk form AX650_SDK_V1.45.0_P1. currently it is application layer open source. +this is a ax650 linux bsp sdk form AX650_SDK_V1.45.0_P39. currently it is application layer open source. ## How to compile diff --git a/app/demo/bin/boxdemo/run.sh b/app/demo/bin/boxdemo/run.sh index 627f631..1d456c4 100644 --- a/app/demo/bin/boxdemo/run.sh +++ b/app/demo/bin/boxdemo/run.sh @@ -15,8 +15,14 @@ fi # settings # # ----------------------------------------------------------------------------------------------# -# core dump -core_dump=1 + +# Check whether config coredump path (Only "-q 0" to disable config) +if [[ $(expr match "$*" ".*-q 0.*") != 0 ]] +then + core_dump=0 +else + core_dump=1 +fi # mount video mount_video=1 @@ -55,6 +61,10 @@ export TIMESTAMP_APP_BUF_NUM=20 # RTP transport mode, 0: UDP (default) 1: TCP # export RTP_TRANSPORT_MODE=1 +# net +echo 1048576 > /proc/sys/net/core/rmem_max +echo 786432 > /proc/sys/net/core/rmem_default + echo "rm all syslogs ..." rm /opt/data/AXSyslog/syslog/* mkdir -p /var/log/ diff --git a/app/demo/src/audio/AencObserver.hpp b/app/demo/src/audio/AencObserver.hpp index 0910b4c..2b1d809 100644 --- a/app/demo/src/audio/AencObserver.hpp +++ b/app/demo/src/audio/AencObserver.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AplayObserver.hpp b/app/demo/src/audio/AplayObserver.hpp index 878d895..ce6fd88 100644 --- a/app/demo/src/audio/AplayObserver.hpp +++ b/app/demo/src/audio/AplayObserver.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioCap.cpp b/app/demo/src/audio/AudioCap.cpp index 0b5c6d3..c01b106 100644 --- a/app/demo/src/audio/AudioCap.cpp +++ b/app/demo/src/audio/AudioCap.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioCap.hpp b/app/demo/src/audio/AudioCap.hpp index a145130..d7d65f1 100644 --- a/app/demo/src/audio/AudioCap.hpp +++ b/app/demo/src/audio/AudioCap.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioCapDev.cpp b/app/demo/src/audio/AudioCapDev.cpp index fbcfbd2..6a3cfa5 100644 --- a/app/demo/src/audio/AudioCapDev.cpp +++ b/app/demo/src/audio/AudioCapDev.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioCapDev.hpp b/app/demo/src/audio/AudioCapDev.hpp index 8e703fb..f1e6f01 100644 --- a/app/demo/src/audio/AudioCapDev.hpp +++ b/app/demo/src/audio/AudioCapDev.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -20,7 +20,7 @@ #define AUDIO_CAP_DEV_META_SIZE (8 * 1024) #define AUDIO_CAP_DEV_DEFAULT_BLK_SIZE (8 * 1024) #define AUDIO_CAP_DEV_DEFAULT_BLK_CNT (64) -#define AUDIO_CAP_DEV_DEFAULT_DEPTH (32) +#define AUDIO_CAP_DEV_DEFAULT_DEPTH (30) typedef struct audio_CAP_FRAME_T { AX_U32 nChnCnt; diff --git a/app/demo/src/audio/AudioDecoder.cpp b/app/demo/src/audio/AudioDecoder.cpp index ff1086c..e0480d9 100644 --- a/app/demo/src/audio/AudioDecoder.cpp +++ b/app/demo/src/audio/AudioDecoder.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioDecoder.hpp b/app/demo/src/audio/AudioDecoder.hpp index 5d3c874..e7c3c3a 100644 --- a/app/demo/src/audio/AudioDecoder.hpp +++ b/app/demo/src/audio/AudioDecoder.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioEncoder.cpp b/app/demo/src/audio/AudioEncoder.cpp index e3aa3aa..66f6b89 100644 --- a/app/demo/src/audio/AudioEncoder.cpp +++ b/app/demo/src/audio/AudioEncoder.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioEncoder.hpp b/app/demo/src/audio/AudioEncoder.hpp index 7c48f7a..3616a3f 100644 --- a/app/demo/src/audio/AudioEncoder.hpp +++ b/app/demo/src/audio/AudioEncoder.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioFilePlay.cpp b/app/demo/src/audio/AudioFilePlay.cpp index 3df40ec..57fe6ee 100644 --- a/app/demo/src/audio/AudioFilePlay.cpp +++ b/app/demo/src/audio/AudioFilePlay.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioFilePlay.hpp b/app/demo/src/audio/AudioFilePlay.hpp index 18e7ac7..d126858 100644 --- a/app/demo/src/audio/AudioFilePlay.hpp +++ b/app/demo/src/audio/AudioFilePlay.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioPlay.cpp b/app/demo/src/audio/AudioPlay.cpp index b37df49..4a4a517 100644 --- a/app/demo/src/audio/AudioPlay.cpp +++ b/app/demo/src/audio/AudioPlay.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioPlay.hpp b/app/demo/src/audio/AudioPlay.hpp index 7fbd0b5..1bb00d3 100644 --- a/app/demo/src/audio/AudioPlay.hpp +++ b/app/demo/src/audio/AudioPlay.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioPlayDev.cpp b/app/demo/src/audio/AudioPlayDev.cpp index 7df2070..8cbc5b7 100644 --- a/app/demo/src/audio/AudioPlayDev.cpp +++ b/app/demo/src/audio/AudioPlayDev.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/audio/AudioPlayDev.hpp b/app/demo/src/audio/AudioPlayDev.hpp index 0838e33..4ba8819 100644 --- a/app/demo/src/audio/AudioPlayDev.hpp +++ b/app/demo/src/audio/AudioPlayDev.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -15,7 +15,7 @@ #include "ax_comm_aio.h" #include "ax_ao_api.h" -#define AUDIO_PLAY_DEV_DEFAULT_DEPTH (32) +#define AUDIO_PLAY_DEV_DEFAULT_DEPTH (30) typedef enum audioPLAY_DEV_STATUS_E { AUDIO_PLAY_DEV_STATUS_DISABLE, diff --git a/app/demo/src/audio/AudioWrapperObserver.hpp b/app/demo/src/audio/AudioWrapperObserver.hpp index 5f25001..e713124 100644 --- a/app/demo/src/audio/AudioWrapperObserver.hpp +++ b/app/demo/src/audio/AudioWrapperObserver.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/capture/Capture.cpp b/app/demo/src/capture/Capture.cpp index 838bc1a..071b107 100644 --- a/app/demo/src/capture/Capture.cpp +++ b/app/demo/src/capture/Capture.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/capture/Capture.hpp b/app/demo/src/capture/Capture.hpp index 0e3615c..d991595 100644 --- a/app/demo/src/capture/Capture.hpp +++ b/app/demo/src/capture/Capture.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/capture/CaptureObserver.hpp b/app/demo/src/capture/CaptureObserver.hpp index 59aad39..81b0463 100644 --- a/app/demo/src/capture/CaptureObserver.hpp +++ b/app/demo/src/capture/CaptureObserver.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config/ini/IniWrapper.cpp b/app/demo/src/config/ini/IniWrapper.cpp index 3a5e824..ce1a5d5 100644 --- a/app/demo/src/config/ini/IniWrapper.cpp +++ b/app/demo/src/config/ini/IniWrapper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config/ini/IniWrapper.hpp b/app/demo/src/config/ini/IniWrapper.hpp index f287396..c4d6ac1 100644 --- a/app/demo/src/config/ini/IniWrapper.hpp +++ b/app/demo/src/config/ini/IniWrapper.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/AlgoCfgParser.cpp b/app/demo/src/config_parser/AlgoCfgParser.cpp index 8efbfe0..fbb967d 100644 --- a/app/demo/src/config_parser/AlgoCfgParser.cpp +++ b/app/demo/src/config_parser/AlgoCfgParser.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/AlgoCfgParser.h b/app/demo/src/config_parser/AlgoCfgParser.h index deae4ad..cf54b6c 100644 --- a/app/demo/src/config_parser/AlgoCfgParser.h +++ b/app/demo/src/config_parser/AlgoCfgParser.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/AudioCfgParser.cpp b/app/demo/src/config_parser/AudioCfgParser.cpp index 4ee4489..bf4b979 100644 --- a/app/demo/src/config_parser/AudioCfgParser.cpp +++ b/app/demo/src/config_parser/AudioCfgParser.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/AudioCfgParser.h b/app/demo/src/config_parser/AudioCfgParser.h index 8239214..353e789 100644 --- a/app/demo/src/config_parser/AudioCfgParser.h +++ b/app/demo/src/config_parser/AudioCfgParser.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/AvsCfgParser.cpp b/app/demo/src/config_parser/AvsCfgParser.cpp index 2094516..f577b61 100644 --- a/app/demo/src/config_parser/AvsCfgParser.cpp +++ b/app/demo/src/config_parser/AvsCfgParser.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/CmdLineParser.cpp b/app/demo/src/config_parser/CmdLineParser.cpp index 5c8ce24..e1f0ec7 100644 --- a/app/demo/src/config_parser/CmdLineParser.cpp +++ b/app/demo/src/config_parser/CmdLineParser.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/CmdLineParser.h b/app/demo/src/config_parser/CmdLineParser.h index 3baba8c..d276a12 100644 --- a/app/demo/src/config_parser/CmdLineParser.h +++ b/app/demo/src/config_parser/CmdLineParser.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/DspCfgParser.cpp b/app/demo/src/config_parser/DspCfgParser.cpp index a868afe..9081427 100644 --- a/app/demo/src/config_parser/DspCfgParser.cpp +++ b/app/demo/src/config_parser/DspCfgParser.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/DspCfgParser.h b/app/demo/src/config_parser/DspCfgParser.h index a463db4..4e15d47 100644 --- a/app/demo/src/config_parser/DspCfgParser.h +++ b/app/demo/src/config_parser/DspCfgParser.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/EncoderCfgParser.cpp b/app/demo/src/config_parser/EncoderCfgParser.cpp index cb761f2..721bfd7 100644 --- a/app/demo/src/config_parser/EncoderCfgParser.cpp +++ b/app/demo/src/config_parser/EncoderCfgParser.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/EncoderCfgParser.h b/app/demo/src/config_parser/EncoderCfgParser.h index 8293847..f56f839 100644 --- a/app/demo/src/config_parser/EncoderCfgParser.h +++ b/app/demo/src/config_parser/EncoderCfgParser.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/IvpsCfgParser.cpp b/app/demo/src/config_parser/IvpsCfgParser.cpp index e204660..7f9c51d 100644 --- a/app/demo/src/config_parser/IvpsCfgParser.cpp +++ b/app/demo/src/config_parser/IvpsCfgParser.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/IvpsCfgParser.h b/app/demo/src/config_parser/IvpsCfgParser.h index 6707b83..6dfd130 100644 --- a/app/demo/src/config_parser/IvpsCfgParser.h +++ b/app/demo/src/config_parser/IvpsCfgParser.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/PPLCfgParser.cpp b/app/demo/src/config_parser/PPLCfgParser.cpp index ef6d2c9..bbac511 100644 --- a/app/demo/src/config_parser/PPLCfgParser.cpp +++ b/app/demo/src/config_parser/PPLCfgParser.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/PPLCfgParser.h b/app/demo/src/config_parser/PPLCfgParser.h index 384ee40..96d62bd 100644 --- a/app/demo/src/config_parser/PPLCfgParser.h +++ b/app/demo/src/config_parser/PPLCfgParser.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/SensorCfgParser.cpp b/app/demo/src/config_parser/SensorCfgParser.cpp index cfe713c..5f03aaf 100644 --- a/app/demo/src/config_parser/SensorCfgParser.cpp +++ b/app/demo/src/config_parser/SensorCfgParser.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/config_parser/SensorCfgParser.h b/app/demo/src/config_parser/SensorCfgParser.h index 8b161c7..1ff5668 100644 --- a/app/demo/src/config_parser/SensorCfgParser.h +++ b/app/demo/src/config_parser/SensorCfgParser.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/detector/DetectObserver.hpp b/app/demo/src/detector/DetectObserver.hpp index 0969170..2edb349 100644 --- a/app/demo/src/detector/DetectObserver.hpp +++ b/app/demo/src/detector/DetectObserver.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/detector/DetectResult.hpp b/app/demo/src/detector/DetectResult.hpp index 6b41867..bcc05ff 100644 --- a/app/demo/src/detector/DetectResult.hpp +++ b/app/demo/src/detector/DetectResult.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/detector/Detector.cpp b/app/demo/src/detector/Detector.cpp index f1ec080..fd425a1 100644 --- a/app/demo/src/detector/Detector.cpp +++ b/app/demo/src/detector/Detector.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/detector/Detector.hpp b/app/demo/src/detector/Detector.hpp index 61bee64..fd985ff 100644 --- a/app/demo/src/detector/Detector.hpp +++ b/app/demo/src/detector/Detector.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/detector/attrParser.cpp b/app/demo/src/detector/attrParser.cpp index db2052e..4251e05 100644 --- a/app/demo/src/detector/attrParser.cpp +++ b/app/demo/src/detector/attrParser.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "attrParser.hpp" diff --git a/app/demo/src/detector/attrParser.hpp b/app/demo/src/detector/attrParser.hpp index 5658071..a4542c4 100644 --- a/app/demo/src/detector/attrParser.hpp +++ b/app/demo/src/detector/attrParser.hpp @@ -1,19 +1,19 @@ -/************************************************************************************************** - * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. - * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and - * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. - * - **************************************************************************************************/ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ #pragma once #include "ax_global_type.h" #include "ax_sys_api.h" -#include "ax_skel_api.h" -#include "AXSingleton.h" -#include "AXAlgo.hpp" +#include "ax_skel_api.h" +#include "AXSingleton.h" +#include "AXAlgo.hpp" #include "DetectResult.hpp" typedef struct _ATTR_FACEINFO_T { @@ -48,11 +48,11 @@ class CAttrParser : public CAXSingleton { public: AX_VOID AttrParser(const AX_SKEL_OBJECT_ITEM_T *pstObjectItems, ATTR_INFO_T *pAttrInfo); - -private: - AX_APP_ALGO_PLATE_COLOR_TYPE_E PlateAttrColor(const std::string &strPlateColor); - AX_APP_ALGO_FACE_RESPIRATOR_TYPE_E FaceAttrRespirator(const std::string &strRespirator); - AX_VOID FaceAttrResult(const AX_SKEL_OBJECT_ITEM_T *pstObjectItems, ATTR_INFO_T *pAttrInfo); - AX_VOID PlateAttrResult(const AX_SKEL_OBJECT_ITEM_T *pstObjectItems, ATTR_INFO_T *pAttrInfo); - AX_VOID VehicleAttrResult(const AX_SKEL_OBJECT_ITEM_T *pstObjectItems, ATTR_INFO_T *pAttrInfo); + +private: + AX_APP_ALGO_PLATE_COLOR_TYPE_E PlateAttrColor(const std::string &strPlateColor); + AX_APP_ALGO_FACE_RESPIRATOR_TYPE_E FaceAttrRespirator(const std::string &strRespirator); + AX_VOID FaceAttrResult(const AX_SKEL_OBJECT_ITEM_T *pstObjectItems, ATTR_INFO_T *pAttrInfo); + AX_VOID PlateAttrResult(const AX_SKEL_OBJECT_ITEM_T *pstObjectItems, ATTR_INFO_T *pAttrInfo); + AX_VOID VehicleAttrResult(const AX_SKEL_OBJECT_ITEM_T *pstObjectItems, ATTR_INFO_T *pAttrInfo); }; diff --git a/app/demo/src/detector/statMgr.cpp b/app/demo/src/detector/statMgr.cpp index 870c11c..27326bb 100644 --- a/app/demo/src/detector/statMgr.cpp +++ b/app/demo/src/detector/statMgr.cpp @@ -1,13 +1,13 @@ -/************************************************************************************************** - * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. - * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and - * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. - * - **************************************************************************************************/ -#include +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include #include "statMgr.hpp" AX_VOID CStatMgr::StatTrackMgr(const AX_SKEL_OBJECT_ITEM_T *pstObjectItems, STAT_OBJECT_NUM_T &stObjectNum) { diff --git a/app/demo/src/detector/statMgr.hpp b/app/demo/src/detector/statMgr.hpp index 3e0d7d7..9d8a42d 100644 --- a/app/demo/src/detector/statMgr.hpp +++ b/app/demo/src/detector/statMgr.hpp @@ -1,18 +1,18 @@ -/************************************************************************************************** - * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. - * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and - * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. - * - **************************************************************************************************/ -#pragma once +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once #include "ax_global_type.h" #include "ax_sys_api.h" -#include "ax_skel_api.h" -#include "AXSingleton.h" +#include "ax_skel_api.h" +#include "AXSingleton.h" typedef struct _STAT_OBJECT_NUM_T { AX_U32 nBodyNum; diff --git a/app/demo/src/dsp/DspObserver.hpp b/app/demo/src/dsp/DspObserver.hpp index 6ce0d27..fc1c2b1 100644 --- a/app/demo/src/dsp/DspObserver.hpp +++ b/app/demo/src/dsp/DspObserver.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/dsp/DspStage.h b/app/demo/src/dsp/DspStage.h index 68daef8..c893b8a 100644 --- a/app/demo/src/dsp/DspStage.h +++ b/app/demo/src/dsp/DspStage.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/encoder/JencObserver.h b/app/demo/src/encoder/JencObserver.h index cb241f0..2943aab 100644 --- a/app/demo/src/encoder/JencObserver.h +++ b/app/demo/src/encoder/JencObserver.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/encoder/JpegEncoder.cpp b/app/demo/src/encoder/JpegEncoder.cpp index 05f70fd..e32b263 100644 --- a/app/demo/src/encoder/JpegEncoder.cpp +++ b/app/demo/src/encoder/JpegEncoder.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/encoder/JpegEncoder.h b/app/demo/src/encoder/JpegEncoder.h index 59d0131..12becb0 100644 --- a/app/demo/src/encoder/JpegEncoder.h +++ b/app/demo/src/encoder/JpegEncoder.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/encoder/VencObserver.h b/app/demo/src/encoder/VencObserver.h index f8d3627..8fb9c94 100644 --- a/app/demo/src/encoder/VencObserver.h +++ b/app/demo/src/encoder/VencObserver.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/encoder/VideoEncoder.cpp b/app/demo/src/encoder/VideoEncoder.cpp index 529f544..692c50f 100644 --- a/app/demo/src/encoder/VideoEncoder.cpp +++ b/app/demo/src/encoder/VideoEncoder.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/encoder/VideoEncoder.h b/app/demo/src/encoder/VideoEncoder.h index 2f86802..b3338b1 100644 --- a/app/demo/src/encoder/VideoEncoder.h +++ b/app/demo/src/encoder/VideoEncoder.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/AXAlgo.hpp b/app/demo/src/header/AXAlgo.hpp index 6705418..d45170b 100644 --- a/app/demo/src/header/AXAlgo.hpp +++ b/app/demo/src/header/AXAlgo.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/AXEvent.hpp b/app/demo/src/header/AXEvent.hpp index 524b130..f727713 100644 --- a/app/demo/src/header/AXEvent.hpp +++ b/app/demo/src/header/AXEvent.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/AXException.hpp b/app/demo/src/header/AXException.hpp index b66507d..157f7a5 100644 --- a/app/demo/src/header/AXException.hpp +++ b/app/demo/src/header/AXException.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/AXExport.h b/app/demo/src/header/AXExport.h index b36032d..6c6e677 100644 --- a/app/demo/src/header/AXExport.h +++ b/app/demo/src/header/AXExport.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/AXFrame.hpp b/app/demo/src/header/AXFrame.hpp index 9d91b3c..227c867 100644 --- a/app/demo/src/header/AXFrame.hpp +++ b/app/demo/src/header/AXFrame.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/AXLockQ.hpp b/app/demo/src/header/AXLockQ.hpp index a94c1c6..43ac0fc 100644 --- a/app/demo/src/header/AXLockQ.hpp +++ b/app/demo/src/header/AXLockQ.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/AXResource.hpp b/app/demo/src/header/AXResource.hpp index 8a973d2..e8ffe58 100644 --- a/app/demo/src/header/AXResource.hpp +++ b/app/demo/src/header/AXResource.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/AXThread.hpp b/app/demo/src/header/AXThread.hpp index e1ed5ce..6eeecfc 100644 --- a/app/demo/src/header/AXThread.hpp +++ b/app/demo/src/header/AXThread.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/GlobalDef.h b/app/demo/src/header/GlobalDef.h index 25e99b2..3c86dd4 100644 --- a/app/demo/src/header/GlobalDef.h +++ b/app/demo/src/header/GlobalDef.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/IModule.h b/app/demo/src/header/IModule.h index 86b9b5d..3f89980 100644 --- a/app/demo/src/header/IModule.h +++ b/app/demo/src/header/IModule.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/IObserver.h b/app/demo/src/header/IObserver.h index 9ff8449..e2bf871 100644 --- a/app/demo/src/header/IObserver.h +++ b/app/demo/src/header/IObserver.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/IPPLBuilder.h b/app/demo/src/header/IPPLBuilder.h index 2be9062..054605e 100644 --- a/app/demo/src/header/IPPLBuilder.h +++ b/app/demo/src/header/IPPLBuilder.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/arraysize.h b/app/demo/src/header/arraysize.h index 54b7ce5..63dd916 100644 --- a/app/demo/src/header/arraysize.h +++ b/app/demo/src/header/arraysize.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/condition_variable.hpp b/app/demo/src/header/condition_variable.hpp index 8ac3fc5..7c6690c 100644 --- a/app/demo/src/header/condition_variable.hpp +++ b/app/demo/src/header/condition_variable.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/header/make_unique.hpp b/app/demo/src/header/make_unique.hpp index 8decc19..613da3b 100644 --- a/app/demo/src/header/make_unique.hpp +++ b/app/demo/src/header/make_unique.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/ives/IVESStage.cpp b/app/demo/src/ives/IVESStage.cpp index 1f6d9b8..a1c82ff 100644 --- a/app/demo/src/ives/IVESStage.cpp +++ b/app/demo/src/ives/IVESStage.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ives/IVESStage.h b/app/demo/src/ives/IVESStage.h index 8755b69..946487d 100644 --- a/app/demo/src/ives/IVESStage.h +++ b/app/demo/src/ives/IVESStage.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ives/IvesObserver.hpp b/app/demo/src/ives/IvesObserver.hpp index 4f26b89..ebbaf95 100644 --- a/app/demo/src/ives/IvesObserver.hpp +++ b/app/demo/src/ives/IvesObserver.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ives/IvesResult.hpp b/app/demo/src/ives/IvesResult.hpp index 82c6d10..8dce4e8 100644 --- a/app/demo/src/ives/IvesResult.hpp +++ b/app/demo/src/ives/IvesResult.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ivps/IOSDHelper.h b/app/demo/src/ivps/IOSDHelper.h index 260756f..80e6e3e 100644 --- a/app/demo/src/ivps/IOSDHelper.h +++ b/app/demo/src/ivps/IOSDHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ivps/IVPSGrpStage.cpp b/app/demo/src/ivps/IVPSGrpStage.cpp index 099f76e..11fe820 100644 --- a/app/demo/src/ivps/IVPSGrpStage.cpp +++ b/app/demo/src/ivps/IVPSGrpStage.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ivps/IVPSGrpStage.h b/app/demo/src/ivps/IVPSGrpStage.h index 8ba1278..9ff3d07 100644 --- a/app/demo/src/ivps/IVPSGrpStage.h +++ b/app/demo/src/ivps/IVPSGrpStage.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ivps/IvpsObserver.h b/app/demo/src/ivps/IvpsObserver.h index 2e6929d..bd29920 100644 --- a/app/demo/src/ivps/IvpsObserver.h +++ b/app/demo/src/ivps/IvpsObserver.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ivps/osd/OSDHandler.cpp b/app/demo/src/ivps/osd/OSDHandler.cpp index ad5d938..0f9dafa 100644 --- a/app/demo/src/ivps/osd/OSDHandler.cpp +++ b/app/demo/src/ivps/osd/OSDHandler.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ivps/osd/OSDHandler.h b/app/demo/src/ivps/osd/OSDHandler.h index 689f555..4d8e03e 100644 --- a/app/demo/src/ivps/osd/OSDHandler.h +++ b/app/demo/src/ivps/osd/OSDHandler.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ivps/osd/OSDHandlerWrapper.cpp b/app/demo/src/ivps/osd/OSDHandlerWrapper.cpp index c3626d3..d7359dc 100644 --- a/app/demo/src/ivps/osd/OSDHandlerWrapper.cpp +++ b/app/demo/src/ivps/osd/OSDHandlerWrapper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ivps/osd/OSDHandlerWrapper.h b/app/demo/src/ivps/osd/OSDHandlerWrapper.h index c0920a2..c3d5329 100644 --- a/app/demo/src/ivps/osd/OSDHandlerWrapper.h +++ b/app/demo/src/ivps/osd/OSDHandlerWrapper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ivps/osd/OsdObserver.h b/app/demo/src/ivps/osd/OsdObserver.h index acbb1f8..29694d9 100644 --- a/app/demo/src/ivps/osd/OsdObserver.h +++ b/app/demo/src/ivps/osd/OsdObserver.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/linkage/BaseLinkage.cpp b/app/demo/src/linkage/BaseLinkage.cpp index 93ba260..53eaf62 100644 --- a/app/demo/src/linkage/BaseLinkage.cpp +++ b/app/demo/src/linkage/BaseLinkage.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/linkage/BaseLinkage.h b/app/demo/src/linkage/BaseLinkage.h index e6a70ee..4bddb98 100644 --- a/app/demo/src/linkage/BaseLinkage.h +++ b/app/demo/src/linkage/BaseLinkage.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/log/AppLog.cpp b/app/demo/src/log/AppLog.cpp index 830dde0..e07c198 100644 --- a/app/demo/src/log/AppLog.cpp +++ b/app/demo/src/log/AppLog.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/log/AppLog.hpp b/app/demo/src/log/AppLog.hpp index bfa2de9..e271333 100644 --- a/app/demo/src/log/AppLog.hpp +++ b/app/demo/src/log/AppLog.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/log/AppLogApi.cpp b/app/demo/src/log/AppLogApi.cpp index 23f81c1..526e671 100644 --- a/app/demo/src/log/AppLogApi.cpp +++ b/app/demo/src/log/AppLogApi.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/log/AppLogApi.h b/app/demo/src/log/AppLogApi.h index 54123e2..4c24bd0 100644 --- a/app/demo/src/log/AppLogApi.h +++ b/app/demo/src/log/AppLogApi.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/log/AppLogWrapper.cpp b/app/demo/src/log/AppLogWrapper.cpp index d071de0..dce3f98 100644 --- a/app/demo/src/log/AppLogWrapper.cpp +++ b/app/demo/src/log/AppLogWrapper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/log/AppLogWrapper.hpp b/app/demo/src/log/AppLogWrapper.hpp index 424efb5..2549ba1 100644 --- a/app/demo/src/log/AppLogWrapper.hpp +++ b/app/demo/src/log/AppLogWrapper.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/log/IAppLog.hpp b/app/demo/src/log/IAppLog.hpp index 58275bb..a5d4216 100644 --- a/app/demo/src/log/IAppLog.hpp +++ b/app/demo/src/log/IAppLog.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/log/SysLog.hpp b/app/demo/src/log/SysLog.hpp index 6af8115..962728c 100644 --- a/app/demo/src/log/SysLog.hpp +++ b/app/demo/src/log/SysLog.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/mp4enc/Mpeg4Encoder.cpp b/app/demo/src/mp4enc/Mpeg4Encoder.cpp index 4e789e7..bbb706d 100644 --- a/app/demo/src/mp4enc/Mpeg4Encoder.cpp +++ b/app/demo/src/mp4enc/Mpeg4Encoder.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "Mpeg4Encoder.h" diff --git a/app/demo/src/mp4enc/Mpeg4Encoder.h b/app/demo/src/mp4enc/Mpeg4Encoder.h index 6255131..32f1319 100644 --- a/app/demo/src/mp4enc/Mpeg4Encoder.h +++ b/app/demo/src/mp4enc/Mpeg4Encoder.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/mp4enc/MpegObserver.h b/app/demo/src/mp4enc/MpegObserver.h index 6b543fa..df94635 100644 --- a/app/demo/src/mp4enc/MpegObserver.h +++ b/app/demo/src/mp4enc/MpegObserver.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/option_helper/AlgoOptionHelper.cpp b/app/demo/src/option_helper/AlgoOptionHelper.cpp index e331d5b..5106b39 100644 --- a/app/demo/src/option_helper/AlgoOptionHelper.cpp +++ b/app/demo/src/option_helper/AlgoOptionHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "AlgoCfgParser.h" diff --git a/app/demo/src/option_helper/AlgoOptionHelper.h b/app/demo/src/option_helper/AlgoOptionHelper.h index 228b9f3..542b32d 100644 --- a/app/demo/src/option_helper/AlgoOptionHelper.h +++ b/app/demo/src/option_helper/AlgoOptionHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/option_helper/AudioOptionHelper.cpp b/app/demo/src/option_helper/AudioOptionHelper.cpp index ed8c735..adef885 100644 --- a/app/demo/src/option_helper/AudioOptionHelper.cpp +++ b/app/demo/src/option_helper/AudioOptionHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "AudioCfgParser.h" diff --git a/app/demo/src/option_helper/AudioOptionHelper.h b/app/demo/src/option_helper/AudioOptionHelper.h index 7b0de74..981f6f6 100644 --- a/app/demo/src/option_helper/AudioOptionHelper.h +++ b/app/demo/src/option_helper/AudioOptionHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/option_helper/EncoderOptionHelper.cpp b/app/demo/src/option_helper/EncoderOptionHelper.cpp index b5af113..2ad1779 100644 --- a/app/demo/src/option_helper/EncoderOptionHelper.cpp +++ b/app/demo/src/option_helper/EncoderOptionHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "EncoderCfgParser.h" diff --git a/app/demo/src/option_helper/EncoderOptionHelper.h b/app/demo/src/option_helper/EncoderOptionHelper.h index 6e5cfea..3aca840 100644 --- a/app/demo/src/option_helper/EncoderOptionHelper.h +++ b/app/demo/src/option_helper/EncoderOptionHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/option_helper/IvpsOptionHelper.cpp b/app/demo/src/option_helper/IvpsOptionHelper.cpp index 3e0ad19..e38e136 100644 --- a/app/demo/src/option_helper/IvpsOptionHelper.cpp +++ b/app/demo/src/option_helper/IvpsOptionHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "IvpsCfgParser.h" diff --git a/app/demo/src/option_helper/IvpsOptionHelper.h b/app/demo/src/option_helper/IvpsOptionHelper.h index aecd7c5..00e4378 100644 --- a/app/demo/src/option_helper/IvpsOptionHelper.h +++ b/app/demo/src/option_helper/IvpsOptionHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/option_helper/OptionHelper.cpp b/app/demo/src/option_helper/OptionHelper.cpp index e8fa1f0..951a56f 100644 --- a/app/demo/src/option_helper/OptionHelper.cpp +++ b/app/demo/src/option_helper/OptionHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/option_helper/OptionHelper.h b/app/demo/src/option_helper/OptionHelper.h index bc51680..6d95b97 100644 --- a/app/demo/src/option_helper/OptionHelper.h +++ b/app/demo/src/option_helper/OptionHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/option_helper/OsdOptionHelper.cpp b/app/demo/src/option_helper/OsdOptionHelper.cpp index 89a78b0..619fb95 100644 --- a/app/demo/src/option_helper/OsdOptionHelper.cpp +++ b/app/demo/src/option_helper/OsdOptionHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "OsdOptionHelper.h" diff --git a/app/demo/src/option_helper/OsdOptionHelper.h b/app/demo/src/option_helper/OsdOptionHelper.h index 8d7bcf6..20e3d3f 100644 --- a/app/demo/src/option_helper/OsdOptionHelper.h +++ b/app/demo/src/option_helper/OsdOptionHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/option_helper/PPLOptionHelper.cpp b/app/demo/src/option_helper/PPLOptionHelper.cpp index 168c70d..7c73a6d 100644 --- a/app/demo/src/option_helper/PPLOptionHelper.cpp +++ b/app/demo/src/option_helper/PPLOptionHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "PPLCfgParser.h" diff --git a/app/demo/src/option_helper/PPLOptionHelper.h b/app/demo/src/option_helper/PPLOptionHelper.h index 848e7a0..57601b8 100644 --- a/app/demo/src/option_helper/PPLOptionHelper.h +++ b/app/demo/src/option_helper/PPLOptionHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/option_helper/SensorOptionHelper.cpp b/app/demo/src/option_helper/SensorOptionHelper.cpp index e214005..a1dd3ef 100644 --- a/app/demo/src/option_helper/SensorOptionHelper.cpp +++ b/app/demo/src/option_helper/SensorOptionHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "SensorCfgParser.h" diff --git a/app/demo/src/option_helper/SensorOptionHelper.h b/app/demo/src/option_helper/SensorOptionHelper.h index b446953..38cc243 100644 --- a/app/demo/src/option_helper/SensorOptionHelper.h +++ b/app/demo/src/option_helper/SensorOptionHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/option_helper/WebOptionHelper.cpp b/app/demo/src/option_helper/WebOptionHelper.cpp index 3b77040..c42993a 100644 --- a/app/demo/src/option_helper/WebOptionHelper.cpp +++ b/app/demo/src/option_helper/WebOptionHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/option_helper/WebOptionHelper.h b/app/demo/src/option_helper/WebOptionHelper.h index 25681af..38ccd4c 100644 --- a/app/demo/src/option_helper/WebOptionHelper.h +++ b/app/demo/src/option_helper/WebOptionHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/pool/AXPoolManager.cpp b/app/demo/src/pool/AXPoolManager.cpp index 67392a1..286cd9d 100644 --- a/app/demo/src/pool/AXPoolManager.cpp +++ b/app/demo/src/pool/AXPoolManager.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/pool/AXPoolManager.hpp b/app/demo/src/pool/AXPoolManager.hpp index 4d5e105..b0f0eee 100644 --- a/app/demo/src/pool/AXPoolManager.hpp +++ b/app/demo/src/pool/AXPoolManager.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/pool/PoolConfig.cpp b/app/demo/src/pool/PoolConfig.cpp index 17be2d8..42ef9b6 100644 --- a/app/demo/src/pool/PoolConfig.cpp +++ b/app/demo/src/pool/PoolConfig.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/pool/PoolConfig.h b/app/demo/src/pool/PoolConfig.h index de844e4..6d5b9c6 100644 --- a/app/demo/src/pool/PoolConfig.h +++ b/app/demo/src/pool/PoolConfig.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/aicard/Makefile b/app/demo/src/ppl/aicard/Makefile new file mode 100644 index 0000000..a990dea --- /dev/null +++ b/app/demo/src/ppl/aicard/Makefile @@ -0,0 +1,51 @@ +SUBDIRS = master_ppl slave_ppl + + +################################################################################ +# prepare param +################################################################################ +CUR_PATH := $(shell pwd) +HOME_PATH := $(abspath $(CUR_PATH)/../../../../..) + +include $(HOME_PATH)/build/color.mk +include $(HOME_PATH)/build/config.mak + +PRJ_OUT_HOME := $(HOME_PATH)/build/out/$(PROJECT) +OBJ_OUT_PATH := $(PRJ_OUT_HOME)/objs +MSP_OUT_PATH := $(HOME_PATH)/msp/out +ROOTFS_TARGET_PATH := $(MSP_OUT_PATH) + +################################################################################ +# set task +################################################################################ +SUBDIRS_CLEAN = $(addsuffix .clean, $(SUBDIRS)) +SUBDIRS_INSTALL = $(addsuffix .install, $(SUBDIRS)) + +.PHONY: $(SUBDIRS) $(SUBDIRS_INSTALL) $(SUBDIRS_CLEAN) + +all: $(SUBDIRS) + @$(ECHO) -e $(GREEN)"\nBuild All $(CURDIR) Modules success!!\n" $(DONE) + +install: $(SUBDIRS_INSTALL) + @$(ECHO) -e $(GREEN)"\nInstall $(CURDIR) success!!\n" $(DONE) + +clean: $(SUBDIRS_CLEAN) + @$(ECHO) -e $(GREEN)"\nClean $(CURDIR) success!!\n" $(DONE) + +$(SUBDIRS): + @$(ECHO) + @$(ECHO) -e $(CYAN)"In subdir $@ ..." $(DONE) + @$(MAKE) -C $(basename $@ ) + +$(SUBDIRS_INSTALL): + @$(ECHO) + @$(ECHO) -e $(CYAN)"In subdir $(basename $@ )..." $(DONE) + @$(MAKE) -C $(basename $@ ) install + +$(SUBDIRS_CLEAN): + @$(ECHO) -e $(CYAN)"In subdir $(basename $@ )..." $(DONE) + @$(MAKE) -C $(basename $@ ) clean + + +# Export val +export ROOTFS_TARGET_PATH diff --git a/app/demo/src/ppl/aicard/master_ppl/AiCardMstAppSys.cpp b/app/demo/src/ppl/aicard/master_ppl/AiCardMstAppSys.cpp new file mode 100644 index 0000000..6ccfb1c --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/AiCardMstAppSys.cpp @@ -0,0 +1,218 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "AiCardMstAppSys.hpp" +#include +#include +#include +#include "AXPoolManager.hpp" +#include "AppLogApi.h" +#include "arraysize.h" +#include "ax_engine_api.h" +#include "ax_ivps_api.h" +#include "ax_sys_api.h" +#include "ax_vdec_api.h" +#include "ax_vo_api.h" +#include "AiCardMstConfig.hpp" + +using namespace std; +using namespace aicard_mst; + +AX_BOOL CAiCardMstAppSys::Init(const AICARD_APP_SYS_ATTR_T& stAttr, const std::string& strAppName) { + if (0 == stAttr.nMaxGrp) { + LOG_E("%s: 0 grp", __func__); + return AX_FALSE; + } else { + m_strAttr = stAttr; + } + + if (!InitAppLog(strAppName)) { + return AX_FALSE; + } + + if (!InitSysMods()) { + DeInitAppLog(); + return AX_FALSE; + } + + LOG_C("============== APP(APP Ver: %s, SDK Ver: %s) Started %s %s ==============\n", APP_BUILD_VERSION, GetSdkVersion().c_str(), + __DATE__, __TIME__); + return AX_TRUE; +} + +AX_BOOL CAiCardMstAppSys::DeInit(AX_VOID) { + if (!DeInitSysMods()) { + return AX_FALSE; + } + + LOG_C("============== APP(APP Ver: %s, SDK Ver: %s) Exited %s %s ==============\n", APP_BUILD_VERSION, GetSdkVersion().c_str(), + __DATE__, __TIME__); + + DeInitAppLog(); + + return AX_TRUE; +} + +AX_BOOL CAiCardMstAppSys::InitAppLog(const string& strAppName) { + APP_LOG_ATTR_T stAttr; + memset(&stAttr, 0, sizeof(stAttr)); + stAttr.nTarget = APP_LOG_TARGET_STDOUT; + stAttr.nLv = APP_LOG_WARN; + strncpy(stAttr.szAppName, strAppName.c_str(), arraysize(stAttr.szAppName) - 1); + + AX_CHAR* env1 = getenv("APP_LOG_TARGET"); + if (env1) { + stAttr.nTarget = atoi(env1); + } + + AX_CHAR* env2 = getenv("APP_LOG_LEVEL"); + if (env2) { + stAttr.nLv = atoi(env2); + } + + return (0 == AX_APP_Log_Init(&stAttr)) ? AX_TRUE : AX_FALSE; +} + +AX_BOOL CAiCardMstAppSys::DeInitAppLog(AX_VOID) { + AX_APP_Log_DeInit(); + return AX_TRUE; +} + +AX_BOOL CAiCardMstAppSys::InitSysMods(AX_VOID) { + m_arrMods.clear(); + m_arrMods.reserve(8); + m_arrMods.push_back({AX_FALSE, "SYS", bind(&CAiCardMstAppSys::APP_SYS_Init, this), bind(&CAiCardMstAppSys::APP_SYS_DeInit, this)}); + m_arrMods.push_back({AX_FALSE, "VDEC", bind(&CAiCardMstAppSys::APP_VDEC_Init, this), AX_VDEC_Deinit}); + m_arrMods.push_back({AX_FALSE, "IVPS", AX_IVPS_Init, AX_IVPS_Deinit}); + +#ifndef __DUMMY_VO__ + m_arrMods.push_back({AX_FALSE, "DISP", AX_VO_Init, AX_VO_Deinit}); +#endif + + for (auto& m : m_arrMods) { + AX_S32 ret = m.Init(); + if (0 != ret) { + LOG_E("%s: init module %s fail, ret = 0x%x", __func__, m.strName.c_str(), ret); + return AX_FALSE; + } else { + m.bInited = AX_TRUE; + } + } + + return AX_TRUE; +} + +AX_BOOL CAiCardMstAppSys::DeInitSysMods(AX_VOID) { + const auto nSize = m_arrMods.size(); + if (0 == nSize) { + return AX_TRUE; + } + + for (AX_S32 i = (AX_S32)(nSize - 1); i >= 0; --i) { + if (m_arrMods[i].bInited) { + AX_S32 ret = m_arrMods[i].DeInit(); + if (0 != ret) { + LOG_E("%s: deinit module %s fail, ret = 0x%x", __func__, m_arrMods[i].strName.c_str(), ret); + return AX_FALSE; + } + + m_arrMods[i].bInited = AX_FALSE; + } + } + + m_arrMods.clear(); + return AX_TRUE; +} + +AX_S32 CAiCardMstAppSys::APP_VDEC_Init(AX_VOID) { + AX_VDEC_MOD_ATTR_T stModAttr; + memset(&stModAttr, 0, sizeof(stModAttr)); + stModAttr.u32MaxGroupCount = m_strAttr.nMaxGrp; + stModAttr.enDecModule = AX_ENABLE_ONLY_VDEC; + AX_S32 ret = AX_VDEC_Init(&stModAttr); + if (0 != ret) { + LOG_E("%s: AX_VDEC_Init() fail, ret = 0x%x", __func__, ret); + return ret; + } + + return 0; +} + +AX_S32 CAiCardMstAppSys::APP_SYS_Init(AX_VOID) { + AX_S32 ret = AX_SYS_Init(); + if (0 != ret) { + LOG_E("%s: AX_SYS_Init() fail, ret = 0x%x", __func__, ret); + return ret; + } + + AX_APP_Log_SetSysModuleInited(AX_TRUE); + + ret = AX_POOL_Exit(); + if (0 != ret) { + LOG_E("%s: AX_POOL_Exit() fail, ret = 0x%x", __func__, ret); + return ret; + } + + return 0; +} + +AX_S32 CAiCardMstAppSys::APP_SYS_DeInit(AX_VOID) { + AX_S32 ret = AX_SUCCESS; + + if (!CAXPoolManager::GetInstance()->DestoryAllPools()) { + return -1; + } + + AX_APP_Log_SetSysModuleInited(AX_FALSE); + + ret = AX_SYS_Deinit(); + if (0 != ret) { + LOG_E("%s: AX_SYS_Deinit() fail, ret = 0x%x", __func__, ret); + return ret; + } + + return 0; +} + +AX_BOOL CAiCardMstAppSys::Link(const AX_MOD_INFO_T& tSrc, const AX_MOD_INFO_T& tDst) { + AX_S32 ret = AX_SYS_Link(&tSrc, &tDst); + if (0 != ret) { + LOG_E("%s: [%d, %d, %d] link to [%d, %d, %d] fail, ret = 0x%x", __func__, tSrc.enModId, tSrc.s32GrpId, tSrc.s32ChnId, tDst.enModId, + tDst.s32GrpId, tDst.s32ChnId, ret); + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_BOOL CAiCardMstAppSys::UnLink(const AX_MOD_INFO_T& tSrc, const AX_MOD_INFO_T& tDst) { + AX_S32 ret = AX_SYS_UnLink(&tSrc, &tDst); + if (0 != ret) { + LOG_E("%s: [%d, %d, %d] unlink to [%d, %d, %d] fail, ret = 0x%x", __func__, tSrc.enModId, tSrc.s32GrpId, tSrc.s32ChnId, + tDst.enModId, tDst.s32GrpId, tDst.s32ChnId, ret); + return AX_FALSE; + } + + return AX_TRUE; +} + +string CAiCardMstAppSys::GetSdkVersion(AX_VOID) { + string strSdkVer{"Unknown"}; + if (FILE* fp = fopen("/proc/ax_proc/version", "r")) { + constexpr AX_U32 SDK_VERSION_PREFIX_LEN = strlen("Ax_Version") + 1; + AX_CHAR szSdkVer[64] = {0}; + fread(&szSdkVer[0], 64, 1, fp); + fclose(fp); + szSdkVer[strlen(szSdkVer) - 1] = 0; + strSdkVer = szSdkVer + SDK_VERSION_PREFIX_LEN; + } + + return strSdkVer; +} diff --git a/app/demo/src/ppl/aicard/master_ppl/AiCardMstAppSys.hpp b/app/demo/src/ppl/aicard/master_ppl/AiCardMstAppSys.hpp new file mode 100644 index 0000000..8558ebc --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/AiCardMstAppSys.hpp @@ -0,0 +1,55 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include +#include +#include "ax_global_type.h" + +typedef struct { + AX_U32 nMaxGrp; +} AICARD_APP_SYS_ATTR_T; + +class CAiCardMstAppSys { +public: + CAiCardMstAppSys(AX_VOID) = default; + virtual ~CAiCardMstAppSys(AX_VOID) = default; + + AX_BOOL Init(const AICARD_APP_SYS_ATTR_T& stAttr, const std::string& strAppName = "AiCardMst"); + AX_BOOL DeInit(AX_VOID); + + AX_BOOL Link(const AX_MOD_INFO_T& tSrc, const AX_MOD_INFO_T& tDst); + AX_BOOL UnLink(const AX_MOD_INFO_T& tSrc, const AX_MOD_INFO_T& tDst); + +protected: + static std::string GetSdkVersion(AX_VOID); + + AX_BOOL InitAppLog(const std::string& strAppName); + AX_BOOL DeInitAppLog(AX_VOID); + + virtual AX_BOOL InitSysMods(AX_VOID); + virtual AX_BOOL DeInitSysMods(AX_VOID); + + virtual AX_S32 APP_SYS_Init(AX_VOID); + virtual AX_S32 APP_SYS_DeInit(AX_VOID); + virtual AX_S32 APP_VDEC_Init(AX_VOID); + +private: + typedef struct { + AX_BOOL bInited; + std::string strName; + std::function Init; + std::function DeInit; + } SYS_MOD_T; + + AICARD_APP_SYS_ATTR_T m_strAttr; + std::vector m_arrMods; +}; diff --git a/app/demo/src/ppl/aicard/master_ppl/AiCardMstBuilder.cpp b/app/demo/src/ppl/aicard/master_ppl/AiCardMstBuilder.cpp new file mode 100644 index 0000000..dc6efc3 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/AiCardMstBuilder.cpp @@ -0,0 +1,579 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "AiCardMstBuilder.hpp" +#include +#include "AXPoolManager.hpp" +#include "AppLogApi.h" +#include "DispatchObserver.hpp" +#include "GlobalDef.h" +#include "PrintHelper.hpp" +#include "StreamerFactory.hpp" +#include "VoObserver.hpp" +#include "make_unique.hpp" + +#define AICARD "AICARD_MST" +using namespace std; + +#define VDEC_CHN0 0 +#define VDEC_CHN1 1 +#define VDEC_CHN2 2 +#define DISPVO_CHN VDEC_CHN1 +#define DETECT_CHN VDEC_CHN2 + +AX_BOOL CAiCardMstBuilder::Init(AX_VOID) { + CAiCardMstConfig *pConfig = CAiCardMstConfig::GetInstance(); + if (!pConfig->Init()) { + printf("Load aicard config file failed.\n"); + return AX_FALSE; + } + + /* [1]: Load configuration */ + STREAM_CONFIG_T streamConfig = pConfig->GetStreamConfig(); + DISPVO_CONFIG_T dispVoConfig = pConfig->GetDispVoConfig(); + + m_nDecodeGrpCount = streamConfig.nDecodeGrps; + + /* [2]: Init system */ + AICARD_APP_SYS_ATTR_T tSysAttr{.nMaxGrp = (AX_U32)m_nDecodeGrpCount}; + if (!m_sys.Init(tSysAttr, "AiCardMst")) { + return AX_FALSE; + } + + /* [3]: Init streamers */ + if (!InitStreamer(streamConfig)) { + return AX_FALSE; + } + + /* [4]: Init display and observer */ + dispVoConfig.nChnDepth = 2; + if (!InitDisplay(dispVoConfig)) { + return AX_FALSE; + } + + /* [5]: Init detector and observer */ + CDetectResult::GetInstance()->Clear(); + + /* [6]: Init dispatchers */ + if (!InitDispatcher(dispVoConfig.strBmpPath)) { + return AX_FALSE; + } + + /* [7]: Init data sender. */ + /* Transfer module must be initialized before Decoder to make sure that register option for FileStreamer observer is earlier */ + if (!InitTransHelper()) { + return AX_FALSE; + } + + /* [8]: Init video decoder */ + streamConfig.nChnW[DISPVO_CHN] = m_disp->GetVideoLayout()[0].u32Width; + streamConfig.nChnH[DISPVO_CHN] = m_disp->GetVideoLayout()[0].u32Height; + if (!InitDecoder(streamConfig)) { + return AX_FALSE; + } + + /* [9]: Init AI switch simulator */ + if (!InitAiSwitchSimlator()) { + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_BOOL CAiCardMstBuilder::InitStreamer(const STREAM_CONFIG_T &streamConfig) { + const AX_U32 nCount = streamConfig.v.size(); + m_arrStreamer.resize(nCount); + for (AX_U32 i = 0; i < nCount; ++i) { + STREAMER_ATTR_T stAttr; + stAttr.strPath = streamConfig.v[i]; + stAttr.nMaxWidth = streamConfig.nMaxGrpW; + stAttr.nMaxHeight = streamConfig.nMaxGrpH; + stAttr.nCookie = (AX_S32)i; + stAttr.bLoop = AX_TRUE; + stAttr.bSyncObs = AX_TRUE; + + m_arrStreamer[i] = CStreamerFactory::GetInstance()->CreateHandler(stAttr.strPath); + if (!m_arrStreamer[i]) { + return AX_FALSE; + } + + if (!m_arrStreamer[i]->Init(stAttr)) { + return AX_FALSE; + } + + LOG_M_C(AICARD, "stream %d: %s", i, stAttr.strPath.c_str()); + } + + return AX_TRUE; +} + +AX_BOOL CAiCardMstBuilder::InitDisplay(const DISPVO_CONFIG_T &dispVoConfig) { + m_disp = make_unique(); + if (!m_disp) { + LOG_MM_E(AICARD, "Create display instance fail"); + return AX_FALSE; + } + + VO_ATTR_T stAttr; + stAttr.voDev = dispVoConfig.nDevId; + stAttr.enIntfType = AX_VO_INTF_HDMI; + stAttr.enIntfSync = (AX_VO_INTF_SYNC_E)dispVoConfig.nHDMI; + stAttr.nBgClr = 0x000000; + stAttr.nLayerDepth = dispVoConfig.nLayerDepth; + stAttr.nTolerance = dispVoConfig.nTolerance; + stAttr.strResDirPath = dispVoConfig.strResDirPath; + stAttr.bShowLogo = dispVoConfig.bShowLogo; + stAttr.bShowNoVideo = dispVoConfig.bShowNoVideo; + stAttr.arrChns.resize(m_nDecodeGrpCount); + for (auto &&m : stAttr.arrChns) { + m.nPriority = 0; + m.nDepth = dispVoConfig.nChnDepth; + if (m.nDepth < 1) { + m.nDepth = 1; + } + } + if (!m_disp->Init(stAttr)) { + return AX_FALSE; + } + + m_dispObserver = CObserverMaker::CreateObserver(m_disp.get(), DISPVO_CHN); + if (!m_dispObserver) { + LOG_MM_E(AICARD, "Create display observer instance fail"); + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_BOOL CAiCardMstBuilder::InitDispatcher(const string &strFontPath) { + m_arrDispatcher.resize(m_nDecodeGrpCount); + m_arrDispatchObserver.resize(m_nDecodeGrpCount); + for (AX_U32 i = 0; i < m_nDecodeGrpCount; ++i) { + m_arrDispatcher[i] = make_unique(); + if (!m_arrDispatcher[i]) { + LOG_MM_E(AICARD, "Create dispatcher %d instance fail", i); + return AX_FALSE; + } else { + if (m_dispObserver) { + m_arrDispatcher[i]->RegObserver(m_dispObserver.get()); + } + } + + DISPATCH_ATTR_T stAttr; + stAttr.vdGrp = i; + stAttr.strBmpFontPath = strFontPath; + stAttr.nDepth = -1; + if (!m_arrDispatcher[i]->Init(stAttr)) { + return AX_FALSE; + } + + m_arrDispatchObserver[i] = CObserverMaker::CreateObserver(m_arrDispatcher[i].get(), DISPVO_CHN); + if (!m_arrDispatchObserver[i]) { + LOG_MM_E(AICARD, "Create dispatch %d observer instance fail", i); + return AX_FALSE; + } + } + + return AX_TRUE; +} + +AX_BOOL CAiCardMstBuilder::InitDecoder(const STREAM_CONFIG_T &streamConfig) { + LOG_MM_C(AICARD, "+++"); + + m_vdec = make_unique(); + if (!m_vdec) { + LOG_MM_E(AICARD, "Create vidoe decoder instance failed."); + return AX_FALSE; + } + + vector arrVdGrps(m_nDecodeGrpCount); + for (AX_U32 i = 0; i < m_nDecodeGrpCount; ++i) { + const STREAMER_INFO_T &stInfo = m_arrStreamer[i]->GetStreamInfo(); + + VDEC_GRP_ATTR_T tGrpAttr; + tGrpAttr.bEnable = AX_TRUE; + tGrpAttr.enCodecType = stInfo.eVideoType; + tGrpAttr.nMaxWidth = ALIGN_UP(streamConfig.nMaxGrpW, 16); /* H264 MB 16x16 */ + tGrpAttr.nMaxHeight = ALIGN_UP(streamConfig.nMaxGrpH, 16); /* H264 MB 16x16 */ + + if (0 == streamConfig.nDefaultFps) { + /* if default fps is 0 or RTSP, fps is parsed by streamer */ + tGrpAttr.nFps = stInfo.nFps; + } else { + /* use configured fps for file streamer */ + tGrpAttr.nFps = streamConfig.nDefaultFps; + } + + if (STREAM_TYPE_E::FILE == stInfo.eStreamType) { + /* TODO: debug specified fps for VO module */ + char name[32]; + sprintf(name, "VDEC_GRP%d_DECODED_FPS", i); + const char *env = getenv(name); + if (env) { + tGrpAttr.nFps = atoi(env); + } + } + + if (tGrpAttr.nFps > 0) { + tGrpAttr.bFramerateCtrl = AX_TRUE; + } + + tGrpAttr.bPrivatePool = (2 == streamConfig.nUserPool) ? AX_TRUE : AX_FALSE; + + /* FILE: playback + frame or stream mode according configuration */ + tGrpAttr.eDecodeMode = AX_VDEC_DISPLAY_MODE_PLAYBACK; + if (0 == streamConfig.nInputMode) { + tGrpAttr.enInputMode = AX_VDEC_INPUT_MODE_FRAME; + tGrpAttr.nMaxStreamBufSize = tGrpAttr.nMaxWidth * tGrpAttr.nMaxHeight * 2; + } else { + tGrpAttr.enInputMode = AX_VDEC_INPUT_MODE_STREAM; + tGrpAttr.nMaxStreamBufSize = streamConfig.nMaxStreamBufSize; + } + + for (AX_U32 j = 0; j < MAX_VDEC_CHN_NUM; ++j) { + AX_VDEC_CHN_ATTR_T &tChnAttr = tGrpAttr.stChnAttr[j]; + switch (j) { + case VDEC_CHN0: + /* pp0 disable, because scaler is not support */ + tGrpAttr.bChnEnable[j] = AX_FALSE; + break; + case DISPVO_CHN: + /* pp1 scaler max. 4096x2160 */ + tGrpAttr.bChnEnable[j] = AX_TRUE; + tChnAttr.u32PicWidth = streamConfig.nChnW[j]; + tChnAttr.u32PicHeight = streamConfig.nChnH[j]; + tChnAttr.u32FrameStride = ALIGN_UP(tChnAttr.u32PicWidth, VDEC_STRIDE_ALIGN); + tChnAttr.u32OutputFifoDepth = streamConfig.nChnDepth[j]; + tChnAttr.enOutputMode = AX_VDEC_OUTPUT_SCALE; + tChnAttr.enImgFormat = AX_FORMAT_YUV420_SEMIPLANAR; + tChnAttr.stCompressInfo.enCompressMode = AX_COMPRESS_MODE_NONE; + break; + case DETECT_CHN: + /* pp2 scaler max. 1920x1080 */ + tGrpAttr.bChnEnable[j] = AX_FALSE; + break; + default: + break; + } + } + + arrVdGrps[i] = move(tGrpAttr); + } + + if (!m_vdec->Init(arrVdGrps)) { + return AX_FALSE; + } + + for (AX_U32 i = 0; i < m_nDecodeGrpCount; ++i) { + /* register vdec to streamer */ + m_arrStreamer[i]->RegObserver(m_vdec.get()); + + AX_VDEC_GRP vdGrp = (AX_VDEC_GRP)i; + m_vdec->RegObserver(vdGrp, m_arrDispatchObserver[i].get()); + + VDEC_GRP_ATTR_T tGrpAttr; + m_vdec->GetGrpAttr(vdGrp, tGrpAttr); + m_disp->SetChnFrameRate(m_disp->GetVideoChn(i), tGrpAttr.nFps); + + for (AX_U32 j = 0; j < MAX_VDEC_CHN_NUM; ++j) { + if (!tGrpAttr.bChnEnable[j]) { + continue; + } + + if (tGrpAttr.bPrivatePool) { + continue; + } + + AX_VDEC_CHN_ATTR_T &stChn = tGrpAttr.stChnAttr[j]; + AX_U32 nBlkSize = CVideoDecoder::GetBlkSize(stChn.u32PicWidth, stChn.u32PicHeight, stChn.u32FrameStride, tGrpAttr.enCodecType, + &stChn.stCompressInfo, stChn.enImgFormat); + + if (0 == streamConfig.nUserPool) { + CAXPoolManager::GetInstance()->AddBlockToFloorPlan(nBlkSize, stChn.u32OutputFifoDepth); + LOG_M_N(AICARD, "VDEC vdGrp %d vdChn %d blkSize %d blkCount %d", vdGrp, j, nBlkSize, stChn.u32OutputFifoDepth); + } else { + AX_POOL_CONFIG_T stPoolConfig; + memset(&stPoolConfig, 0, sizeof(stPoolConfig)); + stPoolConfig.MetaSize = 4096; + stPoolConfig.BlkSize = nBlkSize; + stPoolConfig.BlkCnt = stChn.u32OutputFifoDepth; + stPoolConfig.IsMergeMode = AX_FALSE; + stPoolConfig.CacheMode = POOL_CACHE_MODE_NONCACHE; + sprintf((AX_CHAR *)stPoolConfig.PoolName, "vdec_%d_pp%d_pool", i, j); + AX_POOL pool = CAXPoolManager::GetInstance()->CreatePool(stPoolConfig); + if (AX_INVALID_POOLID == pool) { + return AX_FALSE; + } + + if (!m_vdec->AttachPool(vdGrp, (AX_VDEC_CHN)j, pool)) { + return AX_FALSE; + } + + LOG_M_C(AICARD, "pool %2d (blkSize %d blkCount %d) is attached to VDEC vdGrp %d vdChn %d", pool, stPoolConfig.BlkSize, + stPoolConfig.BlkCnt, vdGrp, j); + } + } + } + + if (0 == streamConfig.nUserPool) { + if (!CAXPoolManager::GetInstance()->CreateFloorPlan(512)) { + return AX_FALSE; + } + } + + LOG_MM_C(AICARD, "---"); + + return AX_TRUE; +} + +AX_BOOL CAiCardMstBuilder::InitTransHelper() { + LOG_MM_C(AICARD, "+++"); + m_transHelper = make_unique(); + if (!m_transHelper) { + LOG_MM_E(AICARD, "Create transfer helper instance failed."); + return AX_FALSE; + } + + PCIE_CONFIG_T tPcieConfig = CAiCardMstConfig::GetInstance()->GetPCIECofnig(); + + TRANSFER_ATTR_T tAttr; + tAttr.nSlaveCount = tPcieConfig.nSlaveCount; + tAttr.nMaxVideoCount = m_nDecodeGrpCount; + tAttr.nBuffCount = tPcieConfig.nBuffCount; + tAttr.nBuffSize = tPcieConfig.nBuffSize; + tAttr.nSendTimeout = tPcieConfig.nSendTimeout; + tAttr.nRecvTimeout = tPcieConfig.nRecvTimeout; + tAttr.nTraceData = tPcieConfig.nTraceData; + tAttr.nRetryCount = tPcieConfig.nRetryCount; + if (!m_transHelper->Init(tAttr)) { + return AX_FALSE; + } + + for (AX_U32 i = 0; i < m_nDecodeGrpCount; ++i) { + m_arrStreamer[i]->RegObserver(m_transHelper.get()); + } + + LOG_MM_C(AICARD, "---"); + return AX_TRUE; +} + +AX_BOOL CAiCardMstBuilder::InitAiSwitchSimlator() { + CAiSwitchConfig *pConfig = CAiSwitchConfig::GetInstance(); + if (!pConfig->Init() || 0 == pConfig->GetAttrCount()) { + LOG_M_E(AICARD, "Parse ai switch config file failed."); + return AX_FALSE; + } + + if (pConfig->IsEnabled()) { + m_aiSwitchSimulator = make_unique(); + if (!m_aiSwitchSimulator) { + LOG_MM_E(AICARD, "Create ai switch simulator instance failed."); + return AX_FALSE; + } + + m_aiSwitchSimulator->BindTransfer(m_transHelper.get()); + } + + return AX_TRUE; +} + +AX_BOOL CAiCardMstBuilder::DeInit(AX_VOID) { + /* destory instances */ +#define DESTORY_INSTANCE(p) \ + do { \ + if (p) { \ + p->DeInit(); \ + p = nullptr; \ + } \ + } while (0) + + for (auto &&m : m_arrStreamer) { + DESTORY_INSTANCE(m); + } + + DESTORY_INSTANCE(m_transHelper); + + for (auto &&m : m_arrDispatcher) { + DESTORY_INSTANCE(m); + } + m_arrDispatcher.clear(); + + /* If private pool, destory consumer before producer */ + DESTORY_INSTANCE(m_disp); + DESTORY_INSTANCE(m_vdec); + +#undef DESTORY_INSTANCE + + m_sys.DeInit(); + return AX_TRUE; +} + +AX_BOOL CAiCardMstBuilder::Start(AX_VOID) { + LOG_MM_W(AICARD, "+++"); + + if (!Init()) { + DeInit(); + return AX_FALSE; + } + + do { + if (m_disp) { + if (!m_disp->Start()) { + return AX_FALSE; + } + } else { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> DISP module is disabled <<<<<<<<<<<<<<<<<<<<<"); + } + + for (auto &m : m_arrDispatcher) { + if (!m->Start()) { + return AX_FALSE; + } + } + + if (m_vdec) { + if (!m_vdec->Start()) { + return AX_FALSE; + } + } else { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> VDEC module is disabled <<<<<<<<<<<<<<<<<<<<<"); + return AX_FALSE; + } + + if (m_transHelper) { + if (!m_transHelper->Start()) { + return AX_FALSE; + } + } else { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> TRANSFER module is disabled <<<<<<<<<<<<<<<<<<<<<"); + return AX_FALSE; + } + + for (auto &&m : m_arrStreamer) { + if (m) { + thread t([](IStreamHandler *p) { p->Start(); }, m.get()); + t.detach(); + } + } + + if (m_aiSwitchSimulator) { + if (!m_aiSwitchSimulator->Start()) { + return AX_FALSE; + } + } else { + LOG_MM_C(AICARD, ">>>>>>>>>>>>>>>> AI SWITCH SIMULATOR module is disabled <<<<<<<<<<<<<<<<<<<<<"); + } + + CPrintHelper::GetInstance()->Start(); + + return AX_TRUE; + + } while (0); + + Stop(); + + LOG_MM_W(AICARD, "---"); + + return AX_FALSE; +} + +AX_BOOL CAiCardMstBuilder::Stop(AX_VOID) { + CPrintHelper::GetInstance()->Stop(); + + for (auto &&m : m_arrStreamer) { + m->UnRegObserver(m_vdec.get()); + } + + vector v; + v.reserve(m_arrStreamer.size()); + for (auto &&m : m_arrStreamer) { + if (m) { + STREAMER_STAT_T stStat; + if (m->QueryStatus(stStat) && stStat.bStarted) { + v.emplace_back([](IStreamHandler *p) { p->Stop(); }, m.get()); + } + } + } + + for (auto &&m : v) { + if (m.joinable()) { + m.join(); + } + } + + if (m_vdec) { + m_vdec->UnRegAllObservers(); + } + + for (auto &&m : m_arrDispatcher) { + m->Clear(); + } + + if (m_transHelper) { + if (!m_transHelper->Stop()) { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> TRANSFER module stop failed <<<<<<<<<<<<<<<<<<<<<"); + } else { + LOG_MM_C(AICARD, ">>>>>>>>>>>>>>>> TRANSFER module stop successfully <<<<<<<<<<<<<<<<<<<<<"); + } + } + + if (m_disp) { + if (!m_disp->Stop()) { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> DISPLAY module stop failed <<<<<<<<<<<<<<<<<<<<<"); + } else { + LOG_MM_C(AICARD, ">>>>>>>>>>>>>>>> DISPLAY module stop successfully <<<<<<<<<<<<<<<<<<<<<"); + } + } + + if (m_aiSwitchSimulator) { + if (!m_aiSwitchSimulator->Stop()) { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> AI SWITCH SIMULATOR module stop failed <<<<<<<<<<<<<<<<<<<<<"); + } else { + LOG_MM_C(AICARD, ">>>>>>>>>>>>>>>> AI SWITCH SIMULATOR module stop successfully <<<<<<<<<<<<<<<<<<<<<"); + } + } + + for (auto &&m : m_arrDispatcher) { + if (!m->Stop()) { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> DISPATCH module stop failed <<<<<<<<<<<<<<<<<<<<<"); + } else { + LOG_MM_C(AICARD, ">>>>>>>>>>>>>>>> [%d] DISPATCH module stop successfully <<<<<<<<<<<<<<<<<<<<<", m->GetGrp()); + } + } + + if (m_vdec) { + if (!m_vdec->Stop()) { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> VDEC module stop failed <<<<<<<<<<<<<<<<<<<<<"); + } else { + LOG_MM_C(AICARD, ">>>>>>>>>>>>>>>> VDEC module stop successfully <<<<<<<<<<<<<<<<<<<<<"); + } + } + + DeInit(); + return AX_TRUE; +} + +AX_BOOL CAiCardMstBuilder::QueryStreamsAllEof(AX_VOID) { + AX_U32 nEofCnt = 0; + + STREAMER_STAT_T stStat; + for (auto &&m : m_arrStreamer) { + if (m) { + m->QueryStatus(stStat); + if (!stStat.bStarted) { + ++nEofCnt; + } + } else { + ++nEofCnt; + } + } + + return (nEofCnt >= m_arrStreamer.size()) ? AX_TRUE : AX_FALSE; +} \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/master_ppl/AiCardMstBuilder.hpp b/app/demo/src/ppl/aicard/master_ppl/AiCardMstBuilder.hpp new file mode 100644 index 0000000..f13744b --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/AiCardMstBuilder.hpp @@ -0,0 +1,59 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include +#include +#include "AiCardMstAppSys.hpp" +#include "AiCardMstConfig.hpp" +#include "AiSwitchConfig.hpp" +#include "Dispatcher.hpp" +#include "IObserver.h" +#include "IStreamHandler.hpp" +#include "VideoDecoder.hpp" +#include "Vo.hpp" +#include "TransferHelper.hpp" +#include "AiSwitchSimulator.hpp" + +using namespace aicard_mst; + +class CAiCardMstBuilder final { +public: + CAiCardMstBuilder(AX_VOID) noexcept = default; + + AX_BOOL Start(AX_VOID); + AX_BOOL Stop(AX_VOID); + + AX_BOOL QueryStreamsAllEof(AX_VOID); + +protected: + AX_BOOL Init(AX_VOID); + AX_BOOL DeInit(AX_VOID); + + AX_BOOL InitStreamer(const STREAM_CONFIG_T& streamConfig); + AX_BOOL InitDisplay(const DISPVO_CONFIG_T& dispVoConfig); + AX_BOOL InitDispatcher(const std::string& strFontPath); + AX_BOOL InitDecoder(const STREAM_CONFIG_T& streamConfig); + AX_BOOL InitTransHelper(); + AX_BOOL InitAiSwitchSimlator(); + +protected: + CAiCardMstAppSys m_sys; + AX_U32 m_nDecodeGrpCount{0}; + std::unique_ptr m_vdec; + std::unique_ptr m_disp; + std::vector> m_arrDispatcher; + IObserverUniquePtr m_dispObserver; + std::vector m_arrDispatchObserver; + std::vector m_arrStreamer; + std::unique_ptr m_transHelper; + std::unique_ptr m_aiSwitchSimulator; +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/master_ppl/AiCardMstConfig.cpp b/app/demo/src/ppl/aicard/master_ppl/AiCardMstConfig.cpp new file mode 100644 index 0000000..854b378 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/AiCardMstConfig.cpp @@ -0,0 +1,110 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "AiCardMstConfig.hpp" +#include +#include "GlobalDef.h" +#include "ax_global_type.h" +#include "ax_venc_rc.h" +using namespace std; +using namespace aicard_mst; + +string CAiCardMstConfig::GetExecPath(AX_VOID) { + string strPath; + AX_CHAR szPath[260] = {0}; + ssize_t sz = readlink("/proc/self/exe", szPath, sizeof(szPath)); + if (sz <= 0) { + strPath = "./"; + } else { + strPath = szPath; + strPath = strPath.substr(0, strPath.rfind('/') + 1); + } + + return strPath; +} + +AX_BOOL CAiCardMstConfig::Init(AX_VOID) { + string strIniPath = GetExecPath() + "aicard_master.conf"; + if (!m_Ini.Load(strIniPath)) { + return AX_FALSE; + } + + return AX_TRUE; +} + +STREAM_CONFIG_T CAiCardMstConfig::GetStreamConfig(AX_VOID) { + STREAM_CONFIG_T conf; + const AX_CHAR *SECT = "STREAM"; + + conf.nMaxGrpW = m_Ini.GetIntValue(SECT, "max width", 1920); + conf.nMaxGrpH = m_Ini.GetIntValue(SECT, "max height", 1080); + for (AX_U32 i = 0; i < 3; ++i) { + AX_CHAR szKey[32]; + sprintf(szKey, "chn%d depth", i); + conf.nChnDepth[i] = m_Ini.GetIntValue(SECT, szKey, 8); + } + conf.nDefaultFps = m_Ini.GetIntValue(SECT, "default fps", 30); + conf.nInputMode = m_Ini.GetIntValue(SECT, "input mode", 0); + + conf.nUserPool = m_Ini.GetIntValue(SECT, "user pool", 1); + if (conf.nUserPool > 2) { + conf.nUserPool = 1; + } + + conf.nMaxStreamBufSize = m_Ini.GetIntValue(SECT, "max stream buf size", 0x200000); + AX_U32 nCount = m_Ini.GetIntValue(SECT, "count", 1); + if (nCount > 0) { + conf.v.resize(nCount); + for (AX_U32 i = 1; i <= nCount; ++i) { + AX_CHAR szKey[32]; + sprintf(szKey, "stream%02d", i); + conf.v[i - 1] = m_Ini.GetStringValue(SECT, szKey, ""); + } + } + + conf.nDecodeGrps = m_Ini.GetIntValue(SECT, "vdec count", 0); + if (0 == conf.nDecodeGrps || conf.nDecodeGrps > nCount) { + conf.nDecodeGrps = nCount; + } + + return conf; /* RVO: optimized by compiler */ +} + +DISPVO_CONFIG_T CAiCardMstConfig::GetDispVoConfig(AX_VOID) { + DISPVO_CONFIG_T conf; + const AX_CHAR *SECT = "DISPC"; + + conf.nDevId = m_Ini.GetIntValue(SECT, "dev", 0); + conf.nHDMI = m_Ini.GetIntValue(SECT, "HDMI", 10); + conf.nLayerDepth = m_Ini.GetIntValue(SECT, "layer depth", 3); + /* if 0, vo using default tolerance, VO_LAYER_TOLERATION_DEF = 10*1000*1000 */ + conf.nTolerance = m_Ini.GetIntValue(SECT, "tolerance", 0); + conf.bShowLogo = (AX_BOOL)m_Ini.GetIntValue(SECT, "show logo", 1); + conf.bShowNoVideo = (AX_BOOL)m_Ini.GetIntValue(SECT, "show no video", 1); + conf.strResDirPath = GetExecPath() + "res"; + conf.strBmpPath = conf.strResDirPath + "/font.bmp"; + + return conf; /* RVO: optimized by compiler */ +} + +PCIE_CONFIG_T CAiCardMstConfig::GetPCIECofnig(AX_VOID) { + PCIE_CONFIG_T conf; + const AX_CHAR *SECT = "PCIE"; + + conf.nSlaveCount = m_Ini.GetIntValue(SECT, "slave count", 1); + conf.nBuffSize = m_Ini.GetIntValue(SECT, "buff size", 600); + conf.nBuffCount = m_Ini.GetIntValue(SECT, "buff count", 2); + conf.nSendTimeout = m_Ini.GetIntValue(SECT, "send timeout", -1); + conf.nRecvTimeout = m_Ini.GetIntValue(SECT, "recv timeout", -1); + conf.nTraceData = m_Ini.GetIntValue(SECT, "log data", 0); + conf.nRetryCount = m_Ini.GetIntValue(SECT, "retry count", 1); + return conf; /* RVO: optimized by compiler */ +} + diff --git a/app/demo/src/ppl/aicard/master_ppl/AiCardMstConfig.hpp b/app/demo/src/ppl/aicard/master_ppl/AiCardMstConfig.hpp new file mode 100644 index 0000000..176cb65 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/AiCardMstConfig.hpp @@ -0,0 +1,79 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include +#include "AXSingleton.h" +#include "IniWrapper.hpp" + +namespace aicard_mst { + +typedef struct { + AX_U32 nUserPool; + AX_U32 nMaxGrpW; + AX_U32 nMaxGrpH; + AX_U32 nChnW[3]; + AX_U32 nChnH[3]; + AX_U32 nDefaultFps; + AX_S32 nChnDepth[3]; + AX_U32 nInputMode; + AX_U32 nMaxStreamBufSize; + AX_U32 nDecodeGrps; + std::vector v; +} STREAM_CONFIG_T; + +typedef struct { + AX_U32 nDevId; + AX_U32 nHDMI; + AX_U32 nChnDepth; + AX_U32 nLayerDepth; + AX_U32 nTolerance; + AX_BOOL bShowLogo; + AX_BOOL bShowNoVideo; + std::string strResDirPath; + std::string strBmpPath; +} DISPVO_CONFIG_T; + +typedef struct { + AX_S16 nSlaveCount {1}; + AX_S16 nBuffSize {600}; + AX_U8 nBuffCount {2}; + AX_S16 nSendTimeout {-1}; + AX_S16 nRecvTimeout {-1}; + AX_S16 nTraceData {0}; + AX_S16 nRetryCount {1}; +} PCIE_CONFIG_T; + +/** + * @brief + * + */ +class CAiCardMstConfig : public CAXSingleton { + friend class CAXSingleton; + +public: + AX_BOOL Init(AX_VOID); + + STREAM_CONFIG_T GetStreamConfig(AX_VOID); + DISPVO_CONFIG_T GetDispVoConfig(AX_VOID); + PCIE_CONFIG_T GetPCIECofnig(AX_VOID); + +private: + CAiCardMstConfig(AX_VOID) = default; + virtual ~CAiCardMstConfig(AX_VOID) = default; + + string GetExecPath(AX_VOID); + +private: + CIniWrapper m_Ini; +}; + +} // namespace aicard_mst diff --git a/app/demo/src/ppl/aicard/master_ppl/AiSwitchConfig.cpp b/app/demo/src/ppl/aicard/master_ppl/AiSwitchConfig.cpp new file mode 100644 index 0000000..9818bf8 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/AiSwitchConfig.cpp @@ -0,0 +1,132 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "AiSwitchConfig.hpp" +#include +#include "GlobalDef.h" +#include "AppLogApi.h" +#include "ax_global_type.h" + +using namespace std; +using namespace aicard_mst; + +#define AI_CFG "AI_SWITCH_CONFIG" + + +AX_BOOL CAiSwitchConfig::Init(AX_VOID) { + string strIniPath = GetExecPath() + "ai_switch.conf"; + if (!m_iniParser.Load(strIniPath)) { + return AX_FALSE; + } + + if (!ParseConfig()) { + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_BOOL CAiSwitchConfig::ParseConfig() { + const AX_CHAR *STRGY = "STRATEGY"; + m_tAiSwitchStrgy.bEnable = m_iniParser.GetIntValue(STRGY, "enable", 0) == 1 ? AX_TRUE : AX_FALSE; + m_tAiSwitchStrgy.eType = (AI_CARD_AI_SWITCH_TYPE_E)m_iniParser.GetIntValue(STRGY, "type", 0); + m_tAiSwitchStrgy.nInterval = m_iniParser.GetIntValue(STRGY, "interval", 60); + m_tAiSwitchStrgy.nAttrCount = m_iniParser.GetIntValue(STRGY, "count", 0); + + if (m_tAiSwitchStrgy.nAttrCount > MAX_SWITCH_CONFIG_NUM) { + LOG_MM_W(AI_CFG, "AI attribute count %d is out of range(%d, %d), max value %d is set to count.", m_tAiSwitchStrgy.nAttrCount, 0, MAX_SWITCH_CONFIG_NUM, MAX_SWITCH_CONFIG_NUM); + m_tAiSwitchStrgy.nAttrCount = MAX_SWITCH_CONFIG_NUM; + } + + for (AX_U8 i = 0; i < m_tAiSwitchStrgy.nAttrCount; i++) { + std::string strAttrSec = "AI_ATTR_GRP_" + std::to_string(i); + string strModelPath = m_iniParser.GetStringValue(strAttrSec.c_str(), "model path", ""); + + if (strModelPath.empty()) { + LOG_MM_E(AI_CFG, "%s is not configured.", strAttrSec.c_str()); + return AX_FALSE; + } + + strcpy(m_arrSwitchAttrConfig[i].szModelPath, strModelPath.c_str()); + m_arrSwitchAttrConfig[i].nChannelNum = m_iniParser.GetIntValue(strAttrSec.c_str(), "channel num", 0); + + for (AX_S32 j = 0; j < m_arrSwitchAttrConfig[i].nChannelNum; ++j) { + std::string str = "channel" + std::to_string(j) + " attr"; + + vector vec; + m_iniParser.GetIntValue(strAttrSec.c_str(), str, vec); + + if (vec.size() == 3) { + m_arrSwitchAttrConfig[i].arrChnParam[j].nPPL = vec[0]; + m_arrSwitchAttrConfig[i].arrChnParam[j].bTrackEnable = (AX_BOOL)vec[1]; + m_arrSwitchAttrConfig[i].arrChnParam[j].nVNPU = vec[2]; + } else { + m_arrSwitchAttrConfig[i].arrChnParam[j].nPPL = 4; + m_arrSwitchAttrConfig[i].arrChnParam[j].bTrackEnable = AX_FALSE; + m_arrSwitchAttrConfig[i].arrChnParam[j].nVNPU = 0; + } + } + } + + return AX_TRUE; +} + +AX_BOOL CAiSwitchConfig::IsEnabled() { + return m_tAiSwitchStrgy.bEnable; +} + +AX_S8 CAiSwitchConfig::GetAttrCount() { + return m_tAiSwitchStrgy.nAttrCount; +} + +AX_S32 CAiSwitchConfig::GetInterval() { + return m_tAiSwitchStrgy.nInterval; +} + +AX_BOOL CAiSwitchConfig::GetNextAttr(AI_CARD_AI_SWITCH_ATTR_T& tAttr) { + m_nCurrAttrIndex = GetNextAttrIndex(); + if (-1 != m_nCurrAttrIndex) { + tAttr = m_arrSwitchAttrConfig[m_nCurrAttrIndex]; + return AX_TRUE; + } + + return AX_FALSE; +} + +AX_S8 CAiSwitchConfig::GetNextAttrIndex() { + if (AI_CARD_AI_SWITCH_TYPE_ORDERED == m_tAiSwitchStrgy.eType) { + return (m_nCurrAttrIndex + 1) % m_tAiSwitchStrgy.nAttrCount; + } else if (AI_CARD_AI_SWITCH_TYPE_RANDOM == m_tAiSwitchStrgy.eType) { + AX_U8 nNextIndex = 0; + while (m_tAiSwitchStrgy.nAttrCount > 1 && nNextIndex == m_nCurrAttrIndex) { + nNextIndex = rand() % m_tAiSwitchStrgy.nAttrCount; + } + + return nNextIndex; + } else { + LOG_MM_E(AI_CFG, "Unrecognized ai switch type: %d", m_tAiSwitchStrgy.eType); + } + + return -1; +} + +string CAiSwitchConfig::GetExecPath(AX_VOID) { + string strPath; + AX_CHAR szPath[260] = {0}; + ssize_t sz = readlink("/proc/self/exe", szPath, sizeof(szPath)); + if (sz <= 0) { + strPath = "./"; + } else { + strPath = szPath; + strPath = strPath.substr(0, strPath.rfind('/') + 1); + } + + return strPath; +} diff --git a/app/demo/src/ppl/aicard/master_ppl/AiSwitchConfig.hpp b/app/demo/src/ppl/aicard/master_ppl/AiSwitchConfig.hpp new file mode 100644 index 0000000..d97a09b --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/AiSwitchConfig.hpp @@ -0,0 +1,65 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include +#include "AXSingleton.h" +#include "IniWrapper.hpp" +#include "PcieAdapter.hpp" + +namespace aicard_mst { + +#define MAX_SWITCH_CONFIG_NUM (10) + +typedef enum { + AI_CARD_AI_SWITCH_TYPE_ORDERED = 0, + AI_CARD_AI_SWITCH_TYPE_RANDOM, + AI_CARD_AI_SWITCH_TYPE_MAX +} AI_CARD_AI_SWITCH_TYPE_E; + +typedef struct { + AX_BOOL bEnable; + AI_CARD_AI_SWITCH_TYPE_E eType; + AX_U32 nInterval; + AX_U8 nAttrCount; +} AI_CARD_AI_SWITCH_STRATEGY_T; + +/** + * @brief + * + */ +class CAiSwitchConfig : public CAXSingleton { + friend class CAXSingleton; + +public: + AX_BOOL Init(AX_VOID); + AX_BOOL IsEnabled(); + AX_S8 GetAttrCount(); + AX_BOOL GetNextAttr(AI_CARD_AI_SWITCH_ATTR_T& tAttr); + AX_S32 GetInterval(); + +private: + CAiSwitchConfig(AX_VOID) = default; + virtual ~CAiSwitchConfig(AX_VOID) = default; + + AX_BOOL ParseConfig(); + AX_S8 GetNextAttrIndex(); + + string GetExecPath(AX_VOID); + +private: + CIniWrapper m_iniParser; + AI_CARD_AI_SWITCH_STRATEGY_T m_tAiSwitchStrgy; + AI_CARD_AI_SWITCH_ATTR_T m_arrSwitchAttrConfig[MAX_SWITCH_CONFIG_NUM]; + AX_U8 m_nCurrAttrIndex {0}; +}; + +} // namespace aicard_mst diff --git a/app/demo/src/ppl/aicard/master_ppl/AiSwitchSimulator.cpp b/app/demo/src/ppl/aicard/master_ppl/AiSwitchSimulator.cpp new file mode 100644 index 0000000..a39531a --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/AiSwitchSimulator.cpp @@ -0,0 +1,83 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "AiSwitchSimulator.hpp" +#include "AppLog.hpp" +#include "PcieAdapter.hpp" +#include "ElapsedTimer.hpp" +#include "AiSwitchConfig.hpp" + +#define AI_SWITCH "AI_SWITCH" + +using namespace std; +using namespace aicard_mst; + +AX_VOID CAiSwitchSimulator::BindTransfer(CTransferHelper* pInstance) { + m_pTransferHelper = pInstance; +} + +AX_BOOL CAiSwitchSimulator::Init(std::string strPath) { + return AX_TRUE; +} + +AX_BOOL CAiSwitchSimulator::DeInit(AX_VOID) { + return AX_TRUE; +} + +AX_BOOL CAiSwitchSimulator::Start(AX_VOID) { + if (0 == CAiSwitchConfig::GetInstance()->GetAttrCount()) { + LOG_MM_E(AI_SWITCH, "AI switch attr not configured."); + return AX_FALSE; + } + + if (!m_threadWork.Start([this](AX_VOID* pArg) -> AX_VOID { WorkThread(pArg); }, nullptr, "AiSwitch")) { + LOG_MM_E(AI_SWITCH, "Create ai switch thread fail."); + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_BOOL CAiSwitchSimulator::Stop(AX_VOID) { + if (0 == CAiSwitchConfig::GetInstance()->GetAttrCount()) { + LOG_MM_E(AI_SWITCH, "AI switch attr not configured."); + return AX_FALSE; + } + + m_threadWork.Stop(); + m_threadWork.Join(); + + return AX_TRUE; +} + +AX_VOID CAiSwitchSimulator::WorkThread(AX_VOID* pArg) { + LOG_MM_I(AI_SWITCH, "+++"); + + while (m_threadWork.IsRunning()) { + AX_U32 nIntervalSec = CAiSwitchConfig::GetInstance()->GetInterval(); + while (nIntervalSec-- > 0) { + CElapsedTimer::GetInstance()->mSleep(1000); + if (!m_threadWork.IsRunning()) { + break; + } + } + + if (m_pTransferHelper) { + AI_CARD_AI_SWITCH_ATTR_T tAiAttr; + if (CAiSwitchConfig::GetInstance()->GetNextAttr(tAiAttr)) { + m_pTransferHelper->SendAiAttr(tAiAttr); + } else { + LOG_M_E(AI_SWITCH, "Get ai switch attr failed."); + } + } + } + + LOG_MM_I(AI_SWITCH, "---"); +} diff --git a/app/demo/src/ppl/aicard/master_ppl/AiSwitchSimulator.hpp b/app/demo/src/ppl/aicard/master_ppl/AiSwitchSimulator.hpp new file mode 100644 index 0000000..08f4ecf --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/AiSwitchSimulator.hpp @@ -0,0 +1,41 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "ax_global_type.h" +#include "AXThread.hpp" +#include "TransferHelper.hpp" + + +class CAiSwitchSimulator { +public: + CAiSwitchSimulator(AX_VOID) = default; + ~CAiSwitchSimulator(AX_VOID) = default; + + AX_BOOL Init(std::string strPath); + AX_BOOL DeInit(AX_VOID); + + AX_BOOL Start(AX_VOID); + AX_BOOL Stop(AX_VOID); + + AX_VOID BindTransfer(CTransferHelper* pInstance); + +protected: + AX_BOOL LoadConfig(std::string& strConfigPath); + +private: + AX_VOID WorkThread(AX_VOID* pArg); + +protected: + CAXThread m_threadWork; + CTransferHelper* m_pTransferHelper {nullptr}; + +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/master_ppl/DetectResult.hpp b/app/demo/src/ppl/aicard/master_ppl/DetectResult.hpp new file mode 100644 index 0000000..b2e3ae2 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/DetectResult.hpp @@ -0,0 +1,98 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include +#include +#include "AXSingleton.h" +#include "ax_skel_type.h" + +#define MAX_DETECT_RESULT_COUNT (64) + +typedef enum { + DETECT_TYPE_UNKNOWN = 0, + DETECT_TYPE_FACE = 1, + DETECT_TYPE_BODY = 2, + DETECT_TYPE_VEHICLE = 3, + DETECT_TYPE_PLATE = 4, + DETECT_TYPE_CYCLE = 5, + DETECT_TYPE_BUTT +} DETECT_TYPE_E; + +typedef struct { + DETECT_TYPE_E eType; + AX_U64 nTrackId; + AX_SKEL_RECT_T tBox; +} DETECT_RESULT_ITEM_T; + +typedef struct DETECT_RESULT_S { + AX_U64 nSeqNum; + AX_U32 nW; + AX_U32 nH; + AX_U32 nCount; + AX_S32 nGrpId; + DETECT_RESULT_ITEM_T item[MAX_DETECT_RESULT_COUNT]; + + DETECT_RESULT_S(AX_VOID) { + memset(this, 0, sizeof(*this)); + } + +} DETECT_RESULT_T; + +/** + * @brief + * + */ +class CDetectResult : public CAXSingleton { + friend class CAXSingleton; + +public: + AX_BOOL Set(AX_S32 nGrp, const DETECT_RESULT_T& fhvp) { + std::lock_guard lck(m_mtx); + m_mapRlts[nGrp] = fhvp; + + for (AX_U32 i = 0; i < fhvp.nCount; ++i) { + ++m_arrCount[fhvp.item[i].eType]; + } + + return AX_TRUE; + } + + AX_BOOL Get(AX_S32 nGrp, DETECT_RESULT_T& fhvp) { + std::lock_guard lck(m_mtx); + if (m_mapRlts.end() == m_mapRlts.find(nGrp)) { + return AX_FALSE; + } + + fhvp = m_mapRlts[nGrp]; + return AX_TRUE; + } + + AX_U64 GetTotalCount(DETECT_TYPE_E eType) { + std::lock_guard lck(m_mtx); + return m_arrCount[eType]; + } + + AX_VOID Clear(AX_VOID) { + std::lock_guard lck(m_mtx); + memset(m_arrCount, 0, sizeof(m_arrCount)); + m_mapRlts.clear(); + } + +protected: + CDetectResult(AX_VOID) noexcept = default; + virtual ~CDetectResult(AX_VOID) = default; + +private: + std::mutex m_mtx; + std::map m_mapRlts; + AX_U64 m_arrCount[DETECT_TYPE_BUTT] = {0}; +}; diff --git a/app/demo/src/ppl/aicard/master_ppl/DispatchObserver.hpp b/app/demo/src/ppl/aicard/master_ppl/DispatchObserver.hpp new file mode 100644 index 0000000..d417ded --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/DispatchObserver.hpp @@ -0,0 +1,45 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include "AXFrame.hpp" +#include "Dispatcher.hpp" +#include "IObserver.h" + +/** + * @brief + * + */ +class CDispatchObserver final : public IObserver { +public: + CDispatchObserver(CDispatcher* pSink, AX_U32 nChn) noexcept : m_pSink(pSink), m_nChn(nChn){}; + virtual ~CDispatchObserver(AX_VOID) = default; + + AX_BOOL OnRecvData(OBS_TARGET_TYPE_E eTarget, AX_U32 nGrp, AX_U32 nChn, AX_VOID* pData) override { + if (nullptr == pData) { + return AX_FALSE; + } + if (m_nChn == nChn) { + CAXFrame* pFrame = (CAXFrame*)pData; + return m_pSink->SendFrame(*pFrame); + } else { + return AX_TRUE; + } + } + + AX_BOOL OnRegisterObserver(OBS_TARGET_TYPE_E eTarget, AX_U32 nGrp, AX_U32 nChn, OBS_TRANS_ATTR_PTR pParams) override { + return AX_TRUE; + } + +private: + CDispatcher* m_pSink; + AX_U32 m_nChn; +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/master_ppl/Dispatcher.cpp b/app/demo/src/ppl/aicard/master_ppl/Dispatcher.cpp new file mode 100644 index 0000000..099f50e --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/Dispatcher.cpp @@ -0,0 +1,277 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "Dispatcher.hpp" +#include +#include "AppLog.hpp" +#include "ElapsedTimer.hpp" +#include "ax_ivps_api.h" +#include "ax_venc_api.h" +#include "ax_vo_api.h" + +#define DISPATCHER "dispatcher" +using namespace std; + +AX_VOID CDispatcher::DispatchThread(AX_VOID* pArg) { + LOG_M_D(DISPATCHER, "%s: +++", __func__); + + CAXFrame axFrame; + DETECT_RESULT_T fhvp; + while (m_DispatchThread.IsRunning()) { + if (m_qFrame.Pop(axFrame, -1)) { + if (CDetectResult::GetInstance()->Get(axFrame.nGrp, fhvp)) { + /* CPU draw rectange, needs virtual address */ + if (0 == axFrame.stFrame.stVFrame.stVFrame.u64VirAddr[0]) { + axFrame.stFrame.stVFrame.stVFrame.u64VirAddr[0] = (AX_U64)AX_POOL_GetBlockVirAddr(axFrame.stFrame.stVFrame.stVFrame.u32BlkId[0]); + } + + DrawBox(axFrame, fhvp); + } + + for (auto& m : m_lstObs) { + m->OnRecvData(E_OBS_TARGET_TYPE_VDEC, axFrame.nGrp, axFrame.nChn, (AX_VOID*)&axFrame); + } + + axFrame.DecRef(); + } + } + + LOG_M_D(DISPATCHER, "%s: ---", __func__); +} + +AX_BOOL CDispatcher::Init(const DISPATCH_ATTR_T& stAttr) { + LOG_M_D(DISPATCHER, "%s: +++", __func__); + +#ifdef DRAW_FHVP_LABEL + AX_U16 nW = 0; + AX_U16 nH = 0; + AX_U32 nSize = 0; + if (!m_font.LoadBmp(stAttr.strBmpFontPath.c_str(), nW, nH, nSize)) { + LOG_M_E(DISPATCHER, "%s: load %s fail", __func__, stAttr.strBmpFontPath.c_str()); + return AX_FALSE; + } +#endif + + m_vdGrp = stAttr.vdGrp; + m_qFrame.SetCapacity(stAttr.nDepth); + LOG_M_I(DISPATCHER, "depth: %d", stAttr.nDepth); + + LOG_M_D(DISPATCHER, "%s: ---", __func__); + return AX_TRUE; +} + +AX_BOOL CDispatcher::DeInit(AX_VOID) { + LOG_M_D(DISPATCHER, "%s: +++", __func__); + + if (m_DispatchThread.IsRunning()) { + LOG_M_E(DISPATCHER, "%s: dispatch thread is running", __func__); + return AX_FALSE; + } + + /* TODO: */ + LOG_M_D(DISPATCHER, "%s: ---", __func__); + return AX_TRUE; +} + +AX_BOOL CDispatcher::Start(AX_VOID) { + LOG_M_D(DISPATCHER, "%s: +++", __func__); + + AX_CHAR szName[32]; + sprintf(szName, "AppDispatch%d", m_vdGrp); + if (!m_DispatchThread.Start([this](AX_VOID* pArg) -> AX_VOID { DispatchThread(pArg); }, nullptr, szName)) { + LOG_M_E(DISPATCHER, "%s: create dispatch thread fail", __func__); + return AX_FALSE; + } + + LOG_M_D(DISPATCHER, "%s: ---", __func__); + return AX_TRUE; +} + +AX_BOOL CDispatcher::Stop(AX_VOID) { + LOG_M_D(DISPATCHER, "%s: +++", __func__); + + m_DispatchThread.Stop(); + m_qFrame.Wakeup(); + m_DispatchThread.Join(); + + ClearQueue(); + + LOG_M_D(DISPATCHER, "%s: ---", __func__); + return AX_TRUE; +} + +AX_BOOL CDispatcher::Clear(AX_VOID) { + ClearQueue(); + return AX_TRUE; +} + +AX_BOOL CDispatcher::RegObserver(IObserver* pObs) { + if (!pObs) { + LOG_M_E(DISPATCHER, "%s observer is nil", __func__); + return AX_FALSE; + } + + for (auto& m : m_lstObs) { + if (m == pObs) { + LOG_M_W(DISPATCHER, "%s: observer %p is already registed", __func__, pObs); + return AX_TRUE; + } + } + + m_lstObs.push_back(pObs); + LOG_M_I(DISPATCHER, "regist observer %p ok", __func__, pObs); + + return AX_TRUE; +} + +AX_BOOL CDispatcher::UnRegObserver(IObserver* pObs) { + if (!pObs) { + LOG_M_E(DISPATCHER, "%s observer is nil", __func__); + return AX_FALSE; + } + + for (auto& m : m_lstObs) { + if (m == pObs) { + m_lstObs.remove(m); + LOG_M_I(DISPATCHER, "%s: unregist observer %p ok", __func__, pObs); + return AX_TRUE; + } + } + + LOG_M_E(DISPATCHER, "%s: observer %p is not registed", __func__, pObs); + return AX_FALSE; +} + +AX_BOOL CDispatcher::SendFrame(const CAXFrame& axFrame) { + axFrame.IncRef(); + if (!m_qFrame.Push(axFrame)) { + LOG_M_E(DISPATCHER, "%s: push frame %lld, pts %lld, phy 0x%llx to queue fail", __func__, axFrame.stFrame.stVFrame.stVFrame.u64SeqNum, + axFrame.stFrame.stVFrame.stVFrame.u64PTS, axFrame.stFrame.stVFrame.stVFrame.u64PhyAddr[0]); + axFrame.DecRef(); + } else { + LOG_M_D(DISPATCHER, "recv frame %lld, pts %lld, phy 0x%llx from vdGrp %d vdChn %d", axFrame.stFrame.stVFrame.stVFrame.u64SeqNum, + axFrame.stFrame.stVFrame.stVFrame.u64PTS, axFrame.stFrame.stVFrame.stVFrame.u64PhyAddr[0], axFrame.nGrp, axFrame.nChn); + } + + return AX_TRUE; +} + +AX_VOID CDispatcher::ClearQueue(AX_VOID) { + AX_U32 nCount = m_qFrame.GetCount(); + if (nCount > 0) { + CAXFrame axFrame; + for (AX_U32 i = 0; i < nCount; ++i) { + if (m_qFrame.Pop(axFrame, 0)) { + axFrame.DecRef(); + } + } + } +} + +AX_VOID CDispatcher::DrawBox(const CAXFrame& axFrame, const DETECT_RESULT_T& fhvp) { + AX_IVPS_RGN_CANVAS_INFO_T canvas; + memset(&canvas, 0, sizeof(canvas)); + canvas.nPhyAddr = axFrame.stFrame.stVFrame.stVFrame.u64PhyAddr[0]; + if (0 == axFrame.stFrame.stVFrame.stVFrame.u64PhyAddr[0]) { + canvas.pVirAddr = AX_POOL_GetBlockVirAddr(axFrame.stFrame.stVFrame.stVFrame.u32BlkId[0]); + } else { + canvas.pVirAddr = (AX_VOID*)axFrame.stFrame.stVFrame.stVFrame.u64VirAddr[0]; + } + canvas.nW = axFrame.stFrame.stVFrame.stVFrame.u32Width; + canvas.nH = axFrame.stFrame.stVFrame.stVFrame.u32Height; + canvas.nStride = axFrame.stFrame.stVFrame.stVFrame.u32PicStride[0]; + canvas.eFormat = axFrame.stFrame.stVFrame.stVFrame.enImgFormat; + canvas.nUVOffset = axFrame.stFrame.stVFrame.stVFrame.u32PicStride[0] * axFrame.stFrame.stVFrame.stVFrame.u32Height; + + AX_IVPS_GDI_ATTR_T gdi; + memset(&gdi, 0, sizeof(gdi)); + gdi.nThick = 1; + gdi.nAlpha = 0; + gdi.nColor = 0xFF8080; + gdi.bSolid = AX_FALSE; + gdi.bAbsCoo = AX_TRUE; + +#ifdef DRAW_FHVP_LABEL + CYuvHandler yuv((const AX_U8*)canvas.pVirAddr, canvas.nW, canvas.nH, canvas.eFormat, canvas.nStride, AX_FALSE); + AX_U32 arrCount[DETECT_TYPE_BUTT] = {0}; +#endif + + for (AX_U32 i = 0; i < fhvp.nCount; ++i) { + AX_IVPS_RECT_T rc; + rc.nX = (AX_U16)((AX_F32)canvas.nW * (fhvp.item[i].tBox.fX / (AX_F32)fhvp.nW)); + rc.nY = (AX_U16)((AX_F32)canvas.nH * (fhvp.item[i].tBox.fY / (AX_F32)fhvp.nH)); + rc.nW = (AX_U16)((AX_F32)canvas.nW * (fhvp.item[i].tBox.fW / (AX_F32)fhvp.nW)); + rc.nH = (AX_U16)((AX_F32)canvas.nH * (fhvp.item[i].tBox.fH / (AX_F32)fhvp.nH)); + + if ((rc.nX + rc.nW) > canvas.nW || (rc.nY + rc.nH) > canvas.nH) { + LOG_M_W(DISPATCHER, "fhvp [%d, %d, %d, %d] [%f, %f, %f, %f] out of bound %dx%d ", rc.nX, rc.nY, rc.nW, rc.nH, + fhvp.item[i].tBox.fX, fhvp.item[i].tBox.fY, fhvp.item[i].tBox.fW, fhvp.item[i].tBox.fH, canvas.nW, canvas.nH); + + rc.nX = (AX_U16)((AX_F32)canvas.nW * (fhvp.item[i].tBox.fX / (AX_F32)fhvp.nW)); + rc.nY = (AX_U16)((AX_F32)canvas.nH * (fhvp.item[i].tBox.fY / (AX_F32)fhvp.nH)); + rc.nW = (AX_U16)((AX_F32)canvas.nW * (fhvp.item[i].tBox.fW / (AX_F32)fhvp.nW)); + rc.nH = (AX_U16)((AX_F32)canvas.nH * (fhvp.item[i].tBox.fH / (AX_F32)fhvp.nH)); + LOG_M_W(DISPATCHER, "fhvp [%d, %d, %d, %d] [%f, %f, %f, %f] out of bound %dx%d ", rc.nX, rc.nY, rc.nW, rc.nH, + fhvp.item[i].tBox.fX, fhvp.item[i].tBox.fY, fhvp.item[i].tBox.fW, fhvp.item[i].tBox.fH, canvas.nW, canvas.nH); + continue; + } + + switch (fhvp.item[i].eType) { + case DETECT_TYPE_FACE: + case DETECT_TYPE_BODY: + case DETECT_TYPE_VEHICLE: + case DETECT_TYPE_CYCLE: + if (fhvp.item[i].nTrackId == 0) { + gdi.nColor = 0xFF8080; /* YYUUVV white */ + } else { + const AX_U32 colorList[16] = {0xff8080, 0xb7ba6b, 0xb2d235, 0x5c7a29, 0x7fb80e, 0xfaa755, 0xfab27b, 0xf58220, + 0xf8aba6, 0x1d953f, 0x45b97c, 0x94d6da, 0x009ad6, 0x145b7d, 0xdecb00, 0xf36c21}; + gdi.nColor = colorList[(fhvp.item[i].nTrackId - 1) % 16]; + } +#ifdef DRAW_FHVP_LABEL + ++arrCount[fhvp.item[i].eType]; +#endif + break; + case DETECT_TYPE_PLATE: + gdi.nColor = 0x00FFFF; /* YYUUVV purple */ +#ifdef DRAW_FHVP_LABEL + ++arrCount[fhvp.item[i].eType]; +#endif + break; + default: + break; + } + + if (DETECT_TYPE_FACE == fhvp.item[i].eType) { + /* only draw body */ + continue; + } + + // START_ELAPSED_TIME; +#if 1 + AX_S32 ret = AX_IVPS_DrawRect(&canvas, gdi, rc); + if (0 != ret) { + LOG_M_E(DISPATCHER, "draw box [%d, %d, %d, %d] in canvas %dx%d fail, ret = 0x%X", rc.nX, rc.nY, rc.nW, rc.nH, canvas.nW, + canvas.nH, ret); + continue; + } +#else + yuv.DrawRect(rc.nX, rc.nY, rc.nW, rc.nH, CYuvHandler::YUV_WHITE); +#endif + // PRINT_ELAPSED_USEC("cpu draw rect"); + } + +#ifdef DRAW_FHVP_LABEL + AX_CHAR szLabel[64]{0}; + snprintf(szLabel, sizeof(szLabel), "H:%02d V:%02d C:%02d P:%02d", arrCount[DETECT_TYPE_BODY], arrCount[DETECT_TYPE_VEHICLE], + arrCount[DETECT_TYPE_CYCLE], arrCount[DETECT_TYPE_PLATE]); + m_font.FillString(szLabel, 8, canvas.nH - 12, &yuv, canvas.nW, canvas.nH); +#endif +} diff --git a/app/demo/src/ppl/aicard/master_ppl/Dispatcher.hpp b/app/demo/src/ppl/aicard/master_ppl/Dispatcher.hpp new file mode 100644 index 0000000..a75ffa8 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/Dispatcher.hpp @@ -0,0 +1,63 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include "AXFrame.hpp" +#include "AXLockQ.hpp" +#include "AXThread.hpp" +#include "BmpOSD.hpp" +#include "DetectResult.hpp" +#include "IObserver.h" + +#define DRAW_FHVP_LABEL +/** + * @brief + * + */ +typedef struct { + AX_S32 vdGrp; + std::string strBmpFontPath; + AX_S32 nDepth; +} DISPATCH_ATTR_T; + +class CDispatcher { +public: + CDispatcher(AX_VOID) = default; + + AX_BOOL Init(const DISPATCH_ATTR_T& stAttr); + AX_BOOL DeInit(AX_VOID); + + AX_BOOL Start(AX_VOID); + AX_BOOL Stop(AX_VOID); + AX_BOOL Clear(AX_VOID); + + AX_BOOL SendFrame(const CAXFrame& axFrame); + + AX_BOOL RegObserver(IObserver* pObs); + AX_BOOL UnRegObserver(IObserver* pObs); + + AX_S32 GetGrp() { return m_vdGrp; }; + +protected: + AX_VOID DispatchThread(AX_VOID* pArg); + AX_VOID ClearQueue(AX_VOID); + AX_VOID DrawBox(const CAXFrame& axFrame, const DETECT_RESULT_T& fhvp); + +protected: + CAXLockQ m_qFrame; + CAXThread m_DispatchThread; + std::list m_lstObs; + AX_S32 m_vdGrp{0}; + +#ifdef DRAW_FHVP_LABEL + CBmpOSD m_font; +#endif +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/master_ppl/Makefile b/app/demo/src/ppl/aicard/master_ppl/Makefile new file mode 100644 index 0000000..91fa87c --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/Makefile @@ -0,0 +1,114 @@ +CUR_PATH := $(shell pwd) +HOME_PATH := $(abspath $(CUR_PATH)/../../../../../..) + +include $(HOME_PATH)/build/color.mk +include $(HOME_PATH)/build/config.mak + +PRJ_OUT_HOME := $(HOME_PATH)/build/out/$(PROJECT) +OBJ_OUT_PATH := $(PRJ_OUT_HOME)/objs +MSP_OUT_PATH := $(HOME_PATH)/msp/out +SRC_PATH := $(CUR_PATH) +LIB_PATH := $(MSP_OUT_PATH)/lib +INC_PATH := $(MSP_OUT_PATH)/include +SRC_RELATIVE_PATH := $(subst $(HOME_PATH)/,,$(SRC_PATH)) +TARGET_OUT_PATH := $(OBJ_OUT_PATH)/$(SRC_RELATIVE_PATH) +ROOTFS_TARGET_PATH := $(MSP_OUT_PATH) +DEMO_SRC_PATH := $(HOME_PATH)/app/demo/src +DEMO_BIN_PATH := $(HOME_PATH)/app/demo/bin/aicard/master +THIRD_PARTY_PATH := $(HOME_PATH)/third-party +3RD_PATH := $(DEMO_SRC_PATH)/3rd + +# output +MOD_NAME := aicard_master +OUTPUT := $(TARGET_OUT_PATH)/obj + +# source +SRCCPPS := $(wildcard $(SRC_PATH)/*.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/vdec/*.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/vdec/stream/FileStreamer.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/log/*.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/stage/*.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/vo/*.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/pcie/*.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/pool/AXPoolManager.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/utils/ElapsedTimer.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/utils/SpsParser.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/utils/yuv/BmpOSD.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/utils/yuv/YuvHandler.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/config/ini/*.cpp) + +CINCLUDE := -I$(SRC_PATH) \ + -I$(INC_PATH) \ + -I$(DEMO_SRC_PATH)/header \ + -I$(DEMO_SRC_PATH)/vdec \ + -I$(DEMO_SRC_PATH)/vdec/stream \ + -I$(DEMO_SRC_PATH)/option_helper \ + -I$(DEMO_SRC_PATH)/utils \ + -I$(DEMO_SRC_PATH)/utils/yuv \ + -I$(DEMO_SRC_PATH)/log \ + -I$(DEMO_SRC_PATH)/stage \ + -I$(DEMO_SRC_PATH)/vo \ + -I$(DEMO_SRC_PATH)/pcie \ + -I$(DEMO_SRC_PATH)/pool \ + -I$(DEMO_SRC_PATH)/config/ini \ + -I$(THIRD_PARTY_PATH)/ffmpeg/include \ + -I$(THIRD_PARTY_PATH)/openssl/include + + OBJS := $(SRCS:%.c=$(OUTPUT)/%.o) + CPPOBJS := $(SRCCPPS:%.cpp=$(OUTPUT)/%.o) + + DEPS := $(OBJS:%.o=%.d) + CPPDEPS := $(CPPOBJS:%.o=%.d) + +# exec +TARGET := $(TARGET_OUT_PATH)/$(MOD_NAME) + +# build flags +CPPFLAGS := --std=c++11 +CFLAGS := $(CPPFLAGS) -Wall -Wl,-rpath-link=$(LIB_PATH):$(THIRD_PARTY_PATH)/ffmpeg/lib:-L$(THIRD_PARTY_PATH)/openssl/lib +CFLAGS += -DAPP_BUILD_VERSION=\"$(SDK_VERSION)\" + +CFLAGS += -D__RTSP_UNSUPPORT__ + +# Independant debug +# CFLAGS += -D__MASTER_DEBUG__ + +# dummy vo: not send to vo +# CFLAGS += -D__DUMMY_VO__ + +# dump vdec decoded yuv saved in ./dump_stridexh_grpx_chnx.nv12.img +# CFLAGS += -D__DUMP_VDEC_FRAME__ + +# dump nalu before send to vdec +# CFLAGS += -D__DUMP_VDEC_NALU__ + +ifeq ($(debug),yes) +CFLAGS += -O0 -ggdb3 +else +CFLAGS += -O2 +endif + +# dependency +CLIB := -lstdc++ -pthread -lm -lrt +CLIB += -L$(LIB_PATH) +CLIB += -lax_sys +CLIB += -lax_vdec +CLIB += -lax_ivps +CLIB += -lax_vo +CLIB += -lax_pcie_dma +CLIB += -lax_pcie_msg +CLIB += -L$(THIRD_PARTY_PATH)/drm/lib -ldrm +CLIB += -L$(THIRD_PARTY_PATH)/ffmpeg/lib -lavcodec -lavutil -lavformat +CLIB += -L$(THIRD_PARTY_PATH)/openssl/lib -lssl -lcrypto + + +# install +INSTALL_TARGET := $(TARGET) +INSTALL_TARGET += $(DEMO_BIN_PATH)/* +INSTALL_DIR := $(ROOTFS_TARGET_PATH)/bin/AiCard/master + +# link +LINK = $(CC) + +include $(HOME_PATH)/build/rules.mak + diff --git a/app/demo/src/ppl/aicard/master_ppl/PcieAdapter.cpp b/app/demo/src/ppl/aicard/master_ppl/PcieAdapter.cpp new file mode 100644 index 0000000..311eb86 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/PcieAdapter.cpp @@ -0,0 +1,280 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "PcieAdapter.hpp" +#include "AppLog.hpp" + +#define TAG "PCIE_ADAPTER" +#define SHARED_PORT_NUMBER (1) + +using namespace std; + +AX_BOOL CPcieAdapter::Init(AX_U32 nSlaveCount, AX_U32 nVideoCount, AX_U32 nBufferSize, AX_S16 nTraceData, AX_S16 nRetryCount) { + m_nSlaveCount = nSlaveCount; + + AX_U32 nAllChannelCount = nVideoCount * 2/* Send + Recv */ + nSlaveCount * SHARED_PORT_NUMBER; + m_vecSendData.resize(nAllChannelCount); /* Only parts used */ + m_vecRecvData.resize(nAllChannelCount); /* Only parts used */ + + AX_U32 nAllShardChnNum = SHARED_PORT_NUMBER * nSlaveCount; + AX_U32 nDataChnCnt = nAllChannelCount - nAllShardChnNum; + AX_U32 nChnNumPerDev = nDataChnCnt % nSlaveCount ? nDataChnCnt / nSlaveCount + 1 : nDataChnCnt / nSlaveCount; + AX_U32 nAllPortCnt = nChnNumPerDev * nSlaveCount + nAllShardChnNum; + AX_S32 nAllSendCount = nDataChnCnt / 2; + + for (AX_U32 i = 0; i < nAllPortCnt; i++) { + AX_U32 nDevIndex = 0; + AX_U32 nChannelIndex = 0; + if (i < nAllShardChnNum) { + /* command channels */ + nDevIndex = i / SHARED_PORT_NUMBER; + nChannelIndex = i % SHARED_PORT_NUMBER; + } else if (i < nAllShardChnNum + nAllSendCount) { + /* send channels */ + nDevIndex = (i - nAllShardChnNum) / (nChnNumPerDev / 2); + nChannelIndex = (i - nAllShardChnNum) % (nChnNumPerDev / 2) + SHARED_PORT_NUMBER; + } else { + /* recv channels */ + nDevIndex = (i - nAllShardChnNum - nAllSendCount) / (nChnNumPerDev / 2); + nChannelIndex = (i - nAllShardChnNum - nAllSendCount) % (nChnNumPerDev / 2) + SHARED_PORT_NUMBER + nChnNumPerDev / 2; + } + + LOG_MM_I(TAG, "[Port %d] => [Device %d][Channel %d]", i, nDevIndex, nChannelIndex); + + m_mapChn2DevInfo[i] = make_tuple(nDevIndex, nChannelIndex); + } + + return CPcieOperator::GetInstance()->Init(AX_TRUE, nSlaveCount, nAllPortCnt, nBufferSize, nTraceData, nRetryCount) == 0 ? AX_TRUE : AX_FALSE; +} + +AX_BOOL CPcieAdapter::DeInit() { + return CPcieOperator::GetInstance()->DeInit() == 0 ? AX_TRUE : AX_FALSE; +} + +AX_BOOL CPcieAdapter::SendStream(AX_U8 nUniChannel, AX_U8 nType, AX_VOID* pData, AX_U32 nSize, AX_S16 nTimeout /*= -1*/) { + auto devInfo = GetDevInfo(nUniChannel); + + if (!GenProtocalStreamData(nUniChannel, nType, pData, nSize)) { + return AX_FALSE; + } + + PCIE_BODY_T& tBody = m_vecSendData[nUniChannel].tBody; + CPcieOperator::GetInstance()->Send((PCIE_CMD_TYPE_E)tBody.tCtrl.nCmdType, std::get<0>(devInfo), std::get<1>(devInfo), (AX_U8*)&tBody, tBody.tCtrl.nDataLen, nTimeout); + + return AX_TRUE; +} + +DETECT_RESULT_T* CPcieAdapter::RecvDetectorResult(AX_U32 nUniChannel, AX_S16 nTimeout /*= -1*/) { + auto devInfo = GetDevInfo(nUniChannel); + AX_S16 nDeviceID = std::get<0>(devInfo); + AX_S16 nChannelID = std::get<1>(devInfo); + + memset(&m_vecRecvData[nUniChannel], 0, sizeof(PCIE_DATA_T)); + + AX_S32 nSize = CPcieOperator::GetInstance()->Recv(PCIE_CMD_AI_RESULT_E, nDeviceID, nChannelID, (AX_U8*)&m_vecRecvData[nUniChannel].tBody, MAX_PCIE_BODY_SIZE, nTimeout); + if (nSize < 0) { + if (-2 != nSize) { /* -2: Timeout */ + LOG_M_E(TAG, "Recieve detect result failed, ret=%d", nSize); + } + return nullptr; + } + + if (nSize < (AX_S32)(sizeof(DETECT_RESULT_T) + sizeof(PCIE_CMD_MSG_HEAD_T))) { + return nullptr; + } + + AX_U8* pDetectResult = (AX_U8*)&m_vecRecvData[nUniChannel].tBody.body; + return (DETECT_RESULT_T *)pDetectResult; +} + +AX_BOOL CPcieAdapter::SendCtrlCommand(AI_CARD_AI_SWITCH_ATTR_T& tSwitchAttr, AX_S16 nTimeout /*= -1*/) { + if (!GenProtocalCtrlData(tSwitchAttr)) { + return AX_FALSE; + } + + if (PCIE_CMD_SWITCH_AI_E == m_tCtrlData.tBody.tCtrl.nCmdType) { + LOG_M_C(TAG, "AI switching started: (%s, %d).", tSwitchAttr.szModelPath, tSwitchAttr.nChannelNum); + for (AX_U8 i = 0; i < tSwitchAttr.nChannelNum; i++) { + LOG_M_C(TAG, "[Chn:%d]: [%d, %d, %d]" + , i + , tSwitchAttr.arrChnParam[i].nPPL + , tSwitchAttr.arrChnParam[i].bTrackEnable + , tSwitchAttr.arrChnParam[i].nVNPU); + } + } + + for (AX_U32 i = 0; i < m_nSlaveCount; i++) { + AX_S32 nSize = CPcieOperator::GetInstance()->Send((PCIE_CMD_TYPE_E)m_tCtrlData.tBody.tCtrl.nCmdType, i, m_tCtrlData.tBody.tCtrl.nChannel, (AX_U8*)&m_tCtrlData.tBody, m_tCtrlData.tBody.tCtrl.nDataLen, nTimeout); + if (nSize < 0) { + LOG_MM_E(TAG, "[%d][%d] Send data failed, ret=%d.", i, m_tCtrlData.tBody.tCtrl.nChannel, nSize); + return AX_FALSE; + } + + if ((AX_U32)nSize != m_tCtrlData.tBody.tCtrl.nDataLen + sizeof(PCIE_CMD_MSG_HEAD_T)) { + LOG_MM_E(TAG, "Send data failed, data size: %d, send size: %d", m_tCtrlData.tBody.tCtrl.nDataLen, nSize); + return AX_FALSE; + } + } + + return AX_TRUE; +} + +AX_S32 CPcieAdapter::RecvCtrlCmdResult(PCIE_CMD_TYPE_E eType, PCIE_DATA_T* pRecvData, AX_S16 nTimeout /*= -1*/) { +#ifndef __MASTER_DEBUG__ + AX_S32 nResultTotal = 0; + for (AX_U32 i = 0; i < m_nSlaveCount; i++) { + AX_S32 nSize = CPcieOperator::GetInstance()->Recv(eType, i, PCIE_COMMON_MSG_CHANNEL, (AX_U8 *)pRecvData, sizeof(AX_S32), nTimeout); + if (nSize < 0) { + if (-2 != nSize) { /* -2: Timeout */ + LOG_M_E(TAG, "Recieve control command result failed, ret=%d", nSize); + } + return -1; + } + + if (PCIE_CMD_SWITCH_AI_E == eType) { + AX_S32 nResult = *(AX_S32*)pRecvData->tBody.body; + if (nResult) { + LOG_M_C(TAG, "[Device %d] AI switch successfully.", i); + } else { + LOG_M_C(TAG, "[Device %d] AI switch failed, ret=%d.", i, nResult); + } + + nResultTotal += nResult; + } + } + + return nResultTotal == m_nSlaveCount ? 1 : 0; +#else + AX_S32 nSize = CPcieOperator::GetInstance()->RecvCmdRet(eType, PCIE_COMMON_MSG_CHANNEL, (AX_U8 *)&nResult, sizeof(AX_U32)); + if (nSize <= 0) { + return AX_FALSE; + } + + if (PCIE_CMD_SWITCH_AI_E == eType && 1 == nResult) { + LOG_M_C(TAG, "AI switch finished."); + return AX_TRUE; + } +#endif + return AX_FALSE; +} + +AX_BOOL CPcieAdapter::SendHandShakePacket() { + PCIE_DATA_T tHandShakePacket; + memset(&tHandShakePacket, 0, sizeof(PCIE_DATA_T)); + + if (!GenProtocalHandShake(tHandShakePacket)) { + return AX_FALSE; + } + + for (AX_U32 i = 0; i < m_nSlaveCount; i++) { + AX_S32 nSize = CPcieOperator::GetInstance()->Send((PCIE_CMD_TYPE_E)tHandShakePacket.tBody.tCtrl.nCmdType, i, tHandShakePacket.tBody.tCtrl.nChannel, (AX_U8*)&tHandShakePacket.tBody, tHandShakePacket.tBody.tCtrl.nDataLen); + if (-1 == nSize) { + LOG_MM_E(TAG, "Send handshake packet failed."); + return AX_FALSE; + } + + if ((AX_U32)nSize != m_tCtrlData.tBody.tCtrl.nDataLen + sizeof(PCIE_CMD_MSG_HEAD_T)) { + LOG_MM_E(TAG, "Send handshake packet failed, data size: %d, send size: %d", m_tCtrlData.tBody.tCtrl.nDataLen, nSize); + return AX_FALSE; + } + } + + LOG_M_C(TAG, "Send handshake packet successfully."); + + return AX_TRUE; +} + +AX_S32 CPcieAdapter::RecvHandShakeFeedback() { + AX_S32 nFeedback = 0; + for (AX_U32 i = 0; i < m_nSlaveCount; i++) { + memset(&m_tCtrlData, 0, sizeof(PCIE_DATA_T)); + + AX_S32 nSize = CPcieOperator::GetInstance()->Recv(PCIE_CMD_HAND_SHAKE, i, PCIE_COMMON_MSG_CHANNEL, (AX_U8*)&m_tCtrlData.tBody, MAX_PCIE_BODY_SIZE, -1); + if (nSize < 0) { + LOG_M_E(TAG, "Recieve handshake feedback failed, ret=%d", nSize); + return 0; + } + + if (nSize < (AX_S32)(sizeof(AX_S32) + sizeof(PCIE_CMD_MSG_HEAD_T))) { + return 0; + } + + nFeedback = *(AX_S32*)&m_tCtrlData.tBody.body; + LOG_M_C(TAG, "[Device %d] Recv handshake feedback: %d successfully.", i, nFeedback); + } + + return nFeedback; +} + +AX_BOOL CPcieAdapter::GenProtocalStreamData(AX_U8 nUniChannel, AX_U8 nType, AX_VOID* pData, AX_U32 nSize) { + memset(&m_vecSendData[nUniChannel], 0, sizeof(PCIE_DATA_T)); + + m_vecSendData[nUniChannel].tBody.tCtrl.nCmdType = (PCIE_CMD_TYPE_E)nType; + m_vecSendData[nUniChannel].tBody.tCtrl.nChannel = 0; /* must filled with physical channel outside */ + m_vecSendData[nUniChannel].tBody.tCtrl.nSn = 0; + m_vecSendData[nUniChannel].tBody.tCtrl.nDataLen = nSize; + memcpy(&m_vecSendData[nUniChannel].tBody.body, pData, nSize); + + return AX_TRUE; +} + +AX_BOOL CPcieAdapter::GenProtocalCtrlData(AI_CARD_AI_SWITCH_ATTR_T& tSwitchAttr) { + memset(&m_tCtrlData, 0, sizeof(PCIE_DATA_T)); + + m_tCtrlData.tBody.tCtrl.nCmdType = PCIE_CMD_SWITCH_AI_E; + m_tCtrlData.tBody.tCtrl.nChannel = PCIE_COMMON_MSG_CHANNEL; + m_tCtrlData.tBody.tCtrl.nSn = 0; + m_tCtrlData.tBody.tCtrl.nDataLen = sizeof(AI_CARD_AI_SWITCH_ATTR_T); + memcpy(&m_tCtrlData.tBody.body, &tSwitchAttr, sizeof(AI_CARD_AI_SWITCH_ATTR_T)); + + return AX_TRUE; +} + +AX_BOOL CPcieAdapter::GenProtocalHandShake(PCIE_DATA_T &tOutPacket) { + memset(&tOutPacket, 0, sizeof(PCIE_DATA_T)); + + tOutPacket.tBody.tCtrl.nCmdType = PCIE_CMD_HAND_SHAKE; + tOutPacket.tBody.tCtrl.nChannel = PCIE_COMMON_MSG_CHANNEL; + tOutPacket.tBody.tCtrl.nSn = 0; + tOutPacket.tBody.tCtrl.nDataLen = 0; + + return AX_TRUE; +} + +AX_U8 CPcieAdapter::CheckSum8(AX_U8* pData, AX_U32 nSize) { + AX_U16 nSum = 0; + for (AX_U32 i = 0; i < nSize; i++){ + nSum += pData[i]; + } + + return (AX_U8)(nSum & 0x00FF); +} + +AX_BOOL CPcieAdapter::CheckData(AX_U8* pData) { + if (nullptr == pData) { + return AX_FALSE; + } + + PCIE_DATA_T* pRecvData = (PCIE_DATA_T*)pData; + if (pRecvData->tBody.tCtrl.nCheckSum != CheckSum8((AX_U8 *)&pRecvData->tBody.tCtrl, sizeof(pRecvData->tBody.tCtrl) - 2)) { + return AX_FALSE; + } + + return AX_TRUE; +} + +tuple CPcieAdapter::GetDevInfo(AX_S32 nUniChannel) { + map>::iterator itFinder = m_mapChn2DevInfo.find(nUniChannel); + if (itFinder != m_mapChn2DevInfo.end()) { + return itFinder->second; + } + + return {}; +} \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/master_ppl/PcieAdapter.hpp b/app/demo/src/ppl/aicard/master_ppl/PcieAdapter.hpp new file mode 100644 index 0000000..e256715 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/PcieAdapter.hpp @@ -0,0 +1,66 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "ax_global_type.h" +#include "AXThread.hpp" +#include "AXSingleton.h" +#include "DetectResult.hpp" +#include "PcieOperator.hpp" +#include +#include + +#define PCIE_COMMON_MSG_CHANNEL (0) + +typedef struct { + AX_U32 nPPL {0}; + AX_U32 nVNPU {0}; + AX_BOOL bTrackEnable {AX_FALSE}; +} AI_CARD_AI_SWITCH_DET_CHN_PARAM_T; + +typedef struct { + AX_CHAR szModelPath[128] {0}; + AX_S32 nChannelNum {0}; + AI_CARD_AI_SWITCH_DET_CHN_PARAM_T arrChnParam[3]; +} AI_CARD_AI_SWITCH_ATTR_T; + +class CPcieAdapter : public CAXSingleton { + friend class CAXSingleton; +public: + CPcieAdapter(AX_VOID) = default; + virtual ~CPcieAdapter(AX_VOID) = default; + + AX_BOOL Init(AX_U32 nSlaveCount, AX_U32 nVideoCount, AX_U32 nBufferSize, AX_S16 nTraceData = 0, AX_S16 nRetryCount = 1); + AX_BOOL DeInit(); + + AX_BOOL SendHandShakePacket(); + AX_S32 RecvHandShakeFeedback(); + + AX_BOOL SendStream(AX_U8 nUniChannel, AX_U8 nType, AX_VOID* pData, AX_U32 nSize, AX_S16 nTimeout = -1); + AX_BOOL SendCtrlCommand(AI_CARD_AI_SWITCH_ATTR_T& tSwitchAttr, AX_S16 nTimeout = -1); + DETECT_RESULT_T* RecvDetectorResult(AX_U32 nUniChannel, AX_S16 nTimeout = -1); + AX_S32 RecvCtrlCmdResult(PCIE_CMD_TYPE_E eType, PCIE_DATA_T* pRecvData, AX_S16 nTimeout = -1); + +private: + std::tuple GetDevInfo(AX_S32 nUniChannel); + AX_BOOL GenProtocalHandShake(PCIE_DATA_T &tOutPacket); + AX_BOOL GenProtocalStreamData(AX_U8 nChannel, AX_U8 nType, AX_VOID* pData, AX_U32 nSize); + AX_BOOL GenProtocalCtrlData(AI_CARD_AI_SWITCH_ATTR_T& tSwitchAttr); + AX_U8 CheckSum8(AX_U8* pData, AX_U32 nSize); + AX_BOOL CheckData(AX_U8* pData); + +private: + AX_U16 m_nSlaveCount {0}; + std::map> m_mapChn2DevInfo; + std::vector m_vecSendData; + std::vector m_vecRecvData; + PCIE_DATA_T m_tCtrlData; +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/master_ppl/PcieOperator.cpp b/app/demo/src/ppl/aicard/master_ppl/PcieOperator.cpp new file mode 100644 index 0000000..45ed849 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/PcieOperator.cpp @@ -0,0 +1,93 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "PcieOperator.hpp" +#include "AppLog.hpp" +#include "PrintHelper.hpp" + +#define SHARED_PORT_NUMBER (1) + +AX_S32 CPcieOperator::Init(AX_BOOL bMaster, AX_U16 nSlaveCount, AX_U16 nChannelNum, AX_U32 nDmaBufferSize, AX_S16 nTraceData, AX_S16 nRetryCount) { + m_nSlaveCount = nSlaveCount; + m_nAllChannelCount = nChannelNum; + return PCIe_Init(bMaster, nSlaveCount, nChannelNum, nDmaBufferSize, nTraceData, nRetryCount); +} + +AX_S32 CPcieOperator::DeInit() { + return PCIe_DeInit(); +} + +AX_S32 CPcieOperator::Send(PCIE_CMD_TYPE_E nCmdType, AX_S16 nDevice, AX_S16 nChannel, AX_U8* pDataBuf, AX_U32 nSize, AX_S16 nTimeout /*= -1*/) { + LOG_M_D("PcieOpr", "[MST][Dev:%d][Chn:%d][SEND] PcieOpr => type: %d, size: %d", nDevice, nChannel, nCmdType, nSize); + AX_S32 nSendSize = PCIe_Send(nCmdType, nDevice, nChannel, pDataBuf, nSize, nTimeout); + if (nSendSize > 0 && nChannel > 0/* Do not print command channle's fps statistics */) { + AX_U32 nDataSendChnPerDevice = (m_nAllChannelCount - m_nSlaveCount * SHARED_PORT_NUMBER) / 2/*send + recv*/ / m_nSlaveCount; + AX_U32 nVideoIndex = nChannel + nDevice * nDataSendChnPerDevice; + CPrintHelper::GetInstance()->Add(E_PH_MOD_PCIE_SEND, nVideoIndex); + } + + return nSendSize; +} + +AX_S32 CPcieOperator::Recv(PCIE_CMD_TYPE_E nCmdType, AX_S16 nDevice, AX_S16 nChannel, AX_U8* pDataBuf, AX_U32 nSize, AX_S16 nTimeout /*= -1*/) { +#ifndef __MASTER_DEBUG__ + AX_S32 nRecvSize = PCIe_Recv(nCmdType, nDevice, nChannel, pDataBuf, nSize, nTimeout); + LOG_M_D("PcieOpr", "[MST][Dev:%d][Chn:%d][RECV] PcieOpr => size: %d", nDevice, nChannel, nRecvSize); + if (nRecvSize > 0 && nChannel > 0/* Do not print command channle's fps statistics */) { + AX_U32 nDataSendChnPerDevice = (m_nAllChannelCount - m_nSlaveCount * SHARED_PORT_NUMBER) / 2/*send + recv*/ / m_nSlaveCount; + AX_U32 nVideoIndex = nChannel - nDataSendChnPerDevice + nDevice * nDataSendChnPerDevice; + CPrintHelper::GetInstance()->Add(E_PH_MOD_PCIE_RECV, nVideoIndex); + } + + return nRecvSize; +#else + DETECT_RESULT_T tResult; + GenSimulateResult(tResult); + + memcpy(pDataBuf, &tResult, sizeof(DETECT_RESULT_T)); + + return sizeof(DETECT_RESULT_T); +#endif +} + +#ifdef __MASTER_DEBUG__ +static int s_nCmdFeedbackWaitCount = 5000; // freq:1ms * times:5000 = 5s +static int s_nCmdIndex = 0; +AX_S32 CPcieOperator::RecvCmdRet(PCIE_CMD_TYPE_E nCmdType, AX_U32 nChannel, AX_U8* pDataBuf, AX_U32 nSize) { + if (s_nCmdIndex++ < s_nCmdFeedbackWaitCount) { + return -1; + } else { + s_nCmdIndex = 0; + } + + AX_U32 nFinish = 1; + memcpy(pDataBuf, &nFinish, sizeof(AX_U32)); + + return sizeof(AX_U32); +} + +AX_VOID CPcieOperator::GenSimulateResult(DETECT_RESULT_T& tResult) { + static AX_U32 s_nSeq = 0; + static AX_U32 s_nResultCount = 1; + + tResult.nCount = s_nResultCount++ % 5 + 1; + for (AX_U32 i = 0; i < tResult.nCount; i++) { + tResult.item[i].eType = (DETECT_TYPE_E)(rand() % DETECT_TYPE_BUTT); + tResult.item[i].tBox.fX = rand() % (1920 - 200); + tResult.item[i].tBox.fY = rand() % (1080 - 200); + tResult.item[i].tBox.fW = 100; + tResult.item[i].tBox.fH = 100; + } + tResult.nGrpId = rand() % 32; + tResult.nW = 1920; + tResult.nH = 1080; + tResult.nSeqNum = s_nSeq++; +} +#endif \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/master_ppl/PcieOperator.hpp b/app/demo/src/ppl/aicard/master_ppl/PcieOperator.hpp new file mode 100644 index 0000000..d9a1ea2 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/PcieOperator.hpp @@ -0,0 +1,52 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "AXSingleton.h" +#include "DetectResult.hpp" +#include "pcie_api.h" + +#define PACKED(x) __attribute__((aligned(x), packed)) +#define MAX_PCIE_BODY_SIZE (622080) + +typedef struct { + PCIE_CMD_MSG_HEAD_T tCtrl; + AX_U8 body[MAX_PCIE_BODY_SIZE]; +} PCIE_BODY_T; + +typedef struct { + PCIE_BODY_T tBody; +} PCIE_DATA_T; + +class CPcieOperator : public CAXSingleton { + friend class CAXSingleton; + +public: + CPcieOperator(AX_VOID) = default; + ~CPcieOperator(AX_VOID) = default; + + AX_S32 Init(AX_BOOL bMaster, AX_U16 nSlaveCount, AX_U16 nChannelNum, AX_U32 nDmaBufferSize, AX_S16 nTraceData = 0, AX_S16 nRetryCount = 1); + AX_S32 DeInit(); + AX_S32 Send(PCIE_CMD_TYPE_E nCmdType, AX_S16 nDevice, AX_S16 nChannel, AX_U8* pDataBuf, AX_U32 nSize, AX_S16 nTimeout = -1); + AX_S32 Recv(PCIE_CMD_TYPE_E nCmdType, AX_S16 nDevice, AX_S16 nChannel, AX_U8* pDataBuf, AX_U32 nSize, AX_S16 nTimeout = -1); + +#ifdef __MASTER_DEBUG__ + AX_S32 RecvCmdRet(PCIE_CMD_TYPE_E nCmdType, AX_U32 nChannel, AX_U8* pDataBuf, AX_U32 nSize); + +private: + AX_VOID GenSimulateResult(DETECT_RESULT_T& tResult); +#endif + +private: + AX_U32 m_nSlaveCount {1}; + AX_U32 m_nAllChannelCount {0}; + +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/master_ppl/PrintHelper.cpp b/app/demo/src/ppl/aicard/master_ppl/PrintHelper.cpp new file mode 100644 index 0000000..0a02387 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/PrintHelper.cpp @@ -0,0 +1,99 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "PrintHelper.hpp" +#include "ElapsedTimer.hpp" +#include "OptionHelper.h" + +#define PRINT_HELPER "PRINT" + + +AX_VOID CPrintHelper::PrintThreadFunc(CPrintHelper* pCaller) { + prctl(PR_SET_NAME, "FRTDemo_PRINT"); + + CPrintHelper* pThis = (CPrintHelper*)pCaller; + pThis->m_nTickStart = CElapsedTimer::GetInstance()->GetTickCount(); + + while (pThis->m_bPrintThreadWorking) { + if (!pThis->m_bEnableStart) { + pThis->m_nTickStart = CElapsedTimer::GetInstance()->GetTickCount(); + CElapsedTimer::GetInstance()->mSleep(100); + continue; + } + + pThis->m_nTickEnd = CElapsedTimer::GetInstance()->GetTickCount(); + if ((pThis->m_nTickEnd - pThis->m_nTickStart) >= PRINT_INTERVAL * 1000) { + m_tTransRecv.Print(); + m_tTransSend.Print(); + m_tPcieRecv.Print(); + m_tPcieSend.Print(); + + pThis->m_nTickStart = pThis->m_nTickEnd; + } + + CElapsedTimer::GetInstance()->mSleep(1000); + } +} + +AX_VOID CPrintHelper::Start() { + LOG_M_I(PRINT_HELPER, "+++"); + + m_bPrintThreadWorking = AX_TRUE; + m_hPrintThread = std::thread(&CPrintHelper::PrintThreadFunc, this, this); + + LOG_M_I(PRINT_HELPER, "---"); +} + +AX_VOID CPrintHelper::Stop() { + LOG_M_I(PRINT_HELPER, "+++"); + + if (m_bPrintThreadWorking) { + m_bPrintThreadWorking = AX_FALSE; + } + + if (m_hPrintThread.joinable()) { + m_hPrintThread.join(); + } + + m_bEnableStart = AX_FALSE; + m_nTickStart = 0; + m_nTickEnd = 0; + m_tTransRecv.ClearAll(); + m_tTransSend.ClearAll(); + m_tPcieSend.ClearAll(); + m_tPcieRecv.ClearAll(); + + LOG_M_I(PRINT_HELPER, "---"); +} + +AX_VOID CPrintHelper::Add(PRINT_HELPER_MOD_E eModType, AX_U32 nChn) { + if (!m_hPrintThread.joinable()) { + return; + } + + m_bEnableStart = AX_TRUE; + switch (eModType) { + case E_PH_MOD_PCIE_RECV: + m_tPcieRecv.Add(nChn); + break; + case E_PH_MOD_PCIE_SEND: + m_tPcieSend.Add(nChn); + break; + case E_PH_MOD_TRANS_RECV: + m_tTransRecv.Add(nChn); + break; + case E_PH_MOD_TRANS_SEND: + m_tTransSend.Add(nChn); + case E_PH_MOD_VDEC: + break; + default: + break; + } +} diff --git a/app/demo/src/ppl/aicard/master_ppl/PrintHelper.hpp b/app/demo/src/ppl/aicard/master_ppl/PrintHelper.hpp new file mode 100644 index 0000000..ece8dab --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/PrintHelper.hpp @@ -0,0 +1,153 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "GlobalDef.h" +#include "AppLogApi.h" +#include "AXSingleton.h" +#include "AXThread.hpp" +#include "OptionHelper.h" +#include "ElapsedTimer.hpp" + +#define PRINT_INTERVAL (10) +#define MAX_CHANNEL_NUM (128) + +typedef enum _PRINT_HELPER_MOD_E +{ + E_PH_MOD_PCIE_RECV = 0, + E_PH_MOD_PCIE_SEND, + E_PH_MOD_TRANS_RECV, + E_PH_MOD_TRANS_SEND, + E_PH_MOD_VDEC, + E_PH_MOD_MAX +} PRINT_HELPER_MOD_E; + +typedef struct _PCIE_PRINT_INFO_T +{ + AX_U32 nPcieTargetFPS[MAX_CHANNEL_NUM]; + AX_U32 nPcieReceivedPackets[MAX_CHANNEL_NUM]; + AX_U32 nPciePeriodPackets[MAX_CHANNEL_NUM]; + AX_CHAR szName[64]; + + _PCIE_PRINT_INFO_T(const AX_CHAR* szModName) { + memset(this, 0, sizeof(_PCIE_PRINT_INFO_T)); + strcpy(szName, szModName); + } + + AX_VOID Init(AX_U32 nChn, AX_U32 nTargetFPS) { + nPcieTargetFPS[nChn] = nTargetFPS; + } + + AX_VOID Add(AX_U32 nChn) { + if (nChn < 0 || nChn >= MAX_CHANNEL_NUM) { + return; + } + + nPciePeriodPackets[nChn]++; + nPcieReceivedPackets[nChn]++; + } + + AX_VOID ClearAll() { + memset(this, 0, sizeof(_PCIE_PRINT_INFO_T)); + } + + AX_VOID Print() { + for (AX_U32 i = 0; i < MAX_CHANNEL_NUM; i++) { + if (nPciePeriodPackets[i] > 0) { + LOG_M_C(szName, "[%d] fps %5.2f, recv %d", + i, + nPciePeriodPackets[i] * 1.0 / PRINT_INTERVAL, + nPcieReceivedPackets[i]); + + nPciePeriodPackets[i] = 0; + } + } + } + +} PCIE_PRINT_INFO_T; + +// typedef struct _TRANS_RECV_PRINT_INFO_T +// { +// AX_U32 nFSTargetFPS[MAX_CHANNEL_NUM]; +// AX_U32 nFSReceivedPackets[MAX_CHANNEL_NUM]; +// AX_U32 nFSPeriodPackets[MAX_CHANNEL_NUM]; +// AX_CHAR szName[64]; + +// _TRANS_RECV_PRINT_INFO_T(const AX_CHAR* szModName) { +// memset(this, 0, sizeof(_TRANS_RECV_PRINT_INFO_T)); +// strcpy(szName, szModName); +// } + +// AX_VOID Init(AX_U32 nChn, AX_U32 nTargetFPS) { +// nFSTargetFPS[nChn] = nTargetFPS; +// } + +// AX_VOID Add(AX_U32 nChn) { +// if (nChn < 0 || nChn >= MAX_CHANNEL_NUM) { +// return; +// } + +// nFSPeriodPackets[nChn]++; +// nFSReceivedPackets[nChn]++; +// } + +// AX_VOID ClearAll() { +// memset(this, 0, sizeof(_TRANS_RECV_PRINT_INFO_T)); +// } + +// AX_VOID Print() { +// for (AX_U32 i = 0; i < MAX_CHANNEL_NUM; i++) { +// if (nFSPeriodPackets[i] > 0) { +// LOG_M_C(szName, "[%d] fps %5.2f, recv %d", +// i, +// nFSPeriodPackets[i] * 1.0 / PRINT_INTERVAL, +// nFSReceivedPackets[i]); + +// nFSPeriodPackets[i] = 0; +// } +// } +// } + +// } TRANS_RECV_PRINT_INFO_T; + + +/** + * (frame)statistics info printer + */ +class CPrintHelper final : public CAXSingleton { + friend class CAXSingleton; + +public: + AX_VOID Start(); + AX_VOID Stop(); + AX_VOID Add(PRINT_HELPER_MOD_E eModType, AX_U32 nChn); + +private: + CPrintHelper(AX_VOID) = default; + ~CPrintHelper(AX_VOID) = default; + +protected: + AX_VOID PrintThreadFunc(CPrintHelper* pCaller); + +private: + AX_BOOL m_bEnableStart {AX_FALSE}; + AX_U64 m_nTickStart {0}; + AX_U64 m_nTickEnd {0}; + + std::thread m_hPrintThread; + AX_BOOL m_bPrintThreadWorking {AX_FALSE}; + + /* statistics info (pending) */ + PCIE_PRINT_INFO_T m_tPcieSend {"PCIE_SEND"}; + PCIE_PRINT_INFO_T m_tPcieRecv {"PCIE_RECV"}; + PCIE_PRINT_INFO_T m_tTransRecv {"TRANS_RECV"}; + PCIE_PRINT_INFO_T m_tTransSend {"TRANS_SEND"}; +}; diff --git a/app/demo/src/ppl/aicard/master_ppl/README.md b/app/demo/src/ppl/aicard/master_ppl/README.md new file mode 100644 index 0000000..e69de29 diff --git a/app/demo/src/ppl/aicard/master_ppl/TransferHelper.cpp b/app/demo/src/ppl/aicard/master_ppl/TransferHelper.cpp new file mode 100644 index 0000000..cb43c6d --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/TransferHelper.cpp @@ -0,0 +1,273 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "TransferHelper.hpp" +#include +#include "AppLog.hpp" +#include "ElapsedTimer.hpp" +#include "DetectResult.hpp" +#include "PrintHelper.hpp" + +#define COMMAND_PORT_NUMBER (1) // one shared port id(usually 0) for transfer command for each device + +#define TAG "TRANSFER" + +using namespace std; + +AX_VOID CTransferHelper::SendStreamThread(AX_VOID* pArg) { + std::tuple* pParams = (std::tuple*)pArg; + AX_U32 nIndex = std::get<0>(*pParams); + AX_U32 nUniChannel = std::get<1>(*pParams); + + LOG_MM_I(TAG, "[%d][%d] +++", nIndex, nUniChannel); + + TRANSFER_SEND_DATA_T& tSendData = m_vecSendStream[nIndex]; + CAXThread* pThread = m_vecThreadSendStream[nIndex]; + while (pThread->IsRunning()) { + CAXRingElement* pData = tSendData.pRingBuffer->Get(); + if (!pData) { + CElapsedTimer::GetInstance()->mSleep(1); + continue; + } + + // if (!m_bAiSwitching) { /* Still send to slave side even if AI switching is progressing */ + if (!CPcieAdapter::GetInstance()->SendStream(nUniChannel, PCIE_CMD_H264_DATA_E, pData->pBuf, pData->nSize, m_tIniAttr.nSendTimeout)) { + LOG_M_E(TAG, "Send stream failed."); + } else { + // CPrintHelper::GetInstance()->Add(E_PH_MOD_TRANS_SEND, nChannel); + } + // } + + tSendData.pRingBuffer->Pop(); + } + + LOG_MM_I(TAG, "[%d][%d] ---", nIndex, nUniChannel); +} + +AX_BOOL CTransferHelper::SendAiAttr(AI_CARD_AI_SWITCH_ATTR_T& tAiAttr) { + if (m_bAiSwitching) { + LOG_MM_W(TAG, "Ai switching is in progress."); + return AX_FALSE; + } + + if (CPcieAdapter::GetInstance()->SendCtrlCommand(tAiAttr, m_tIniAttr.nSendTimeout)) { + m_bAiSwitching = AX_TRUE; + CDetectResult::GetInstance()->Clear(); + } + + return AX_TRUE; +} + +AX_BOOL CTransferHelper::HandShake(AX_VOID) { + if (CPcieAdapter::GetInstance()->SendHandShakePacket()) { + AX_S32 nFeedback = CPcieAdapter::GetInstance()->RecvHandShakeFeedback(); + if (1 == nFeedback) { + return AX_TRUE; + } + } + + return AX_FALSE; +} + +AX_VOID CTransferHelper::RecvDetectResultThread(AX_VOID* pArg) { + std::tuple* pParams = (std::tuple*)pArg; + AX_U32 nIndex = std::get<0>(*pParams); + AX_U32 nUniChannel = std::get<1>(*pParams); + + LOG_MM_I(TAG, "[%d][%d] +++", nIndex, nUniChannel); + + while (m_vecThreadRecvDetRet[nIndex]->IsRunning()) { + if (m_bAiSwitching) { + CElapsedTimer::GetInstance()->mSleep(1); + continue; + } + + DETECT_RESULT_T* pResult = CPcieAdapter::GetInstance()->RecvDetectorResult(nUniChannel, m_tIniAttr.nRecvTimeout); + if (nullptr == pResult) { + CElapsedTimer::GetInstance()->mSleep(1); + continue; + } + + AX_U32 nVideoIndex = nUniChannel - COMMAND_PORT_NUMBER * m_tIniAttr.nSlaveCount - m_tIniAttr.nMaxVideoCount; + CDetectResult::GetInstance()->Set(nVideoIndex, *pResult); + + CElapsedTimer::GetInstance()->mSleep(1); + } + + LOG_MM_I(TAG, "[%d][%d] ---", nIndex, nUniChannel); +} + +AX_VOID CTransferHelper::RecvCtrlCmdResultThread(AX_VOID* pArg) { + LOG_MM_I(TAG, "+++"); + + while (m_threadRecvCmdRet.IsRunning()) { + if (!m_bAiSwitching) { + CElapsedTimer::GetInstance()->mSleep(1); + continue; + } + + PCIE_DATA_T tRecvData; + memset(&tRecvData, 0, sizeof(PCIE_DATA_T)); + tRecvData.tBody.tCtrl.nCmdType = PCIE_CMD_SWITCH_AI_E; + tRecvData.tBody.tCtrl.nChannel = PCIE_COMMON_MSG_CHANNEL; + + AX_S32 nRet = CPcieAdapter::GetInstance()->RecvCtrlCmdResult(PCIE_CMD_SWITCH_AI_E, &tRecvData, m_tIniAttr.nRecvTimeout); + if (-1 == nRet) { + CElapsedTimer::GetInstance()->mSleep(1); + continue; + } + + m_bAiSwitching = AX_FALSE; + } + + LOG_MM_I(TAG, "---"); +} + +AX_BOOL CTransferHelper::Init(const TRANSFER_ATTR_T& stAttr) { + LOG_MM_I(TAG, "+++"); + + /* Send and Recv uses different channel id */ + m_tIniAttr = stAttr; + AX_U32 nVideoCount = stAttr.nMaxVideoCount; + if (!CPcieAdapter::GetInstance()->Init(stAttr.nSlaveCount, nVideoCount, stAttr.nBuffSize * 1024, stAttr.nTraceData, stAttr.nRetryCount)) { + return AX_FALSE; + } + + m_vecSendStream.resize(nVideoCount); + for (AX_U8 i = 0; i < nVideoCount; i++) { + TRANSFER_SEND_DATA_T& tData = m_vecSendStream[i]; + tData.pRingBuffer = new CAXRingBuffer(stAttr.nBuffSize * 1024, stAttr.nBuffCount); + tData.nChannel = i + COMMAND_PORT_NUMBER * stAttr.nSlaveCount; + } + + for (AX_U8 i = 0; i < nVideoCount; i++) { + m_vecThreadSendStream.push_back(new CAXThread()); + m_vecThreadRecvDetRet.push_back(new CAXThread()); + m_mapSendThreadParams[i] = make_tuple(i, i + COMMAND_PORT_NUMBER * stAttr.nSlaveCount); + m_mapRecvThreadParams[i] = make_tuple(i, i + nVideoCount + COMMAND_PORT_NUMBER * stAttr.nSlaveCount); + } + + if (!HandShake()) { + return AX_FALSE; + } + + LOG_MM_I(TAG, "---"); + return AX_TRUE; +} + +AX_BOOL CTransferHelper::DeInit(AX_VOID) { + LOG_MM_I(TAG, "+++"); + + for (auto& m : m_vecThreadSendStream) { + if (m->IsRunning()) { + LOG_MM_E(TAG, "Send stream thread is still running"); + return AX_FALSE; + } + delete(m); + m = nullptr; + } + + for (auto& m : m_vecThreadRecvDetRet) { + if (m->IsRunning()) { + LOG_MM_E(TAG, "Detector result recv thread is still running"); + return AX_FALSE; + } + delete(m); + m = nullptr; + } + + if (m_threadRecvCmdRet.IsRunning()) { + LOG_MM_E(TAG, "Control command result recv thread is still running"); + return AX_FALSE; + } + + LOG_MM_I(TAG, "---"); + return AX_TRUE; +} + +AX_BOOL CTransferHelper::Start(AX_VOID) { + LOG_MM_I(TAG, "+++"); + + for (AX_U8 i = 0; i < m_tIniAttr.nMaxVideoCount; i++) { + if (!m_vecThreadSendStream[i]->Start([this](AX_VOID* pArg) -> AX_VOID { SendStreamThread(pArg); }, &m_mapSendThreadParams[i], "MstTransSend")) { + LOG_MM_E(TAG, "[%d] Create stream send thread fail.", i); + return AX_FALSE; + } + } + + for (AX_U8 i = 0; i < m_tIniAttr.nMaxVideoCount; i++) { + if (!m_vecThreadRecvDetRet[i]->Start([this](AX_VOID* pArg) -> AX_VOID { RecvDetectResultThread(pArg); }, &m_mapRecvThreadParams[i], "MstTransRecv")) { + LOG_MM_E(TAG, "[%d] Create detector result recv thread fail.", i); + return AX_FALSE; + } + } + + if (!m_threadRecvCmdRet.Start([this](AX_VOID* pArg) -> AX_VOID { RecvCtrlCmdResultThread(pArg); }, nullptr, "MstTransRecvCmd")) { + LOG_MM_E(TAG, "Create control command result recv thread fail."); + return AX_FALSE; + } + + LOG_MM_I(TAG, "---"); + return AX_TRUE; +} + +AX_BOOL CTransferHelper::Stop(AX_VOID) { + LOG_MM_I(TAG, "+++"); + + for (auto& m : m_vecThreadRecvDetRet) { + m->Stop(); + } + + m_threadRecvCmdRet.Stop(); + + for (auto& m : m_vecThreadSendStream) { + m->Stop(); + } + + CPcieAdapter::GetInstance()->DeInit(); + + for (auto& m : m_vecThreadRecvDetRet) { + m->Join(); + } + + m_threadRecvCmdRet.Join(); + + for (auto& m : m_vecThreadSendStream) { + m->Join(); + } + + ClearBuf(); + + LOG_MM_I(TAG, "---"); + return AX_TRUE; +} + +AX_BOOL CTransferHelper::OnRecvVideoData(AX_S32 nChannel, const AX_U8* pData, AX_U32 nLen, AX_U64 nPTS) { + CAXRingElement ele((AX_U8*)pData, nLen, nPTS, AX_TRUE); + + if (!m_vecSendStream[nChannel].pRingBuffer->Put(ele)) { + LOG_M_D(TAG, "[%d] Put video data(len=%d) into ringbuf full", nChannel, nLen); + return AX_FALSE; + } else { + LOG_M_D(TAG, "[%d] Put video data into ringbuf, size=%d", nChannel, nLen); + } + + return AX_TRUE; +} + +AX_BOOL CTransferHelper::OnRecvAudioData(AX_S32 nChannel, const AX_U8* pData, AX_U32 nLen, AX_U64 nPTS) { + return AX_TRUE; +} + +AX_VOID CTransferHelper::ClearBuf(AX_VOID) { + for (auto& m: m_vecSendStream) { + m.pRingBuffer->Clear(); + } +} diff --git a/app/demo/src/ppl/aicard/master_ppl/TransferHelper.hpp b/app/demo/src/ppl/aicard/master_ppl/TransferHelper.hpp new file mode 100644 index 0000000..01a6f22 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/TransferHelper.hpp @@ -0,0 +1,95 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "ax_global_type.h" +#include "AXThread.hpp" +#include "AXRingBuffer.h" +#include "IStreamHandler.hpp" +#include "PcieAdapter.hpp" +#include + + +typedef struct _TRANSFER_ATTR { + AX_S16 nSlaveCount {1}; + AX_U8 nMaxVideoCount {0}; + AX_U8 nBuffCount {2}; + AX_S16 nBuffSize {600}; + AX_S16 nSendTimeout {-1}; + AX_S16 nRecvTimeout {-1}; + AX_S16 nTraceData {0}; + AX_S16 nRetryCount {1}; +} TRANSFER_ATTR_T; + +typedef struct _TRANSFER_SEND_DATA { + CAXRingBuffer* pRingBuffer {nullptr};; + AX_U8 nChannel; + AX_U8 nFPS; + _TRANSFER_SEND_DATA() { + memset(this, 0, sizeof(_TRANSFER_SEND_DATA)); + } + ~_TRANSFER_SEND_DATA() { + if (pRingBuffer) { + delete pRingBuffer; + pRingBuffer = nullptr; + } + } +} TRANSFER_SEND_DATA_T; + +typedef struct _TRANSFER_RECV_DATA { + CAXRingBuffer* pRingBuffer {nullptr}; // DETECT_RESULT_T involved + AX_U8 nChannel; + _TRANSFER_RECV_DATA() { + memset(this, 0, sizeof(_TRANSFER_RECV_DATA)); + } + ~_TRANSFER_RECV_DATA() { + if (pRingBuffer) { + delete pRingBuffer; + pRingBuffer = nullptr; + } + } +} TRANSFER_RECV_DATA_T; + +class CTransferHelper : public IStreamObserver { +public: + CTransferHelper(AX_VOID) = default; + virtual ~CTransferHelper(AX_VOID) = default; + + AX_BOOL Init(const TRANSFER_ATTR_T& stAttr); + AX_BOOL DeInit(AX_VOID); + + AX_BOOL Start(AX_VOID); + AX_BOOL Stop(AX_VOID); + + AX_BOOL SendAiAttr(AI_CARD_AI_SWITCH_ATTR_T& tAiAttr); + + /* stream data callback */ + AX_BOOL OnRecvVideoData(AX_S32 nChannel, const AX_U8 *pData, AX_U32 nLen, AX_U64 nPTS) override; + AX_BOOL OnRecvAudioData(AX_S32 nChannel, const AX_U8 *pData, AX_U32 nLen, AX_U64 nPTS) override; + +protected: + AX_BOOL HandShake(AX_VOID); + AX_VOID SendStreamThread(AX_VOID* pArg); + AX_VOID RecvDetectResultThread(AX_VOID* pArg); + AX_VOID RecvCtrlCmdResultThread(AX_VOID* pArg); + + AX_VOID ClearBuf(AX_VOID); + +protected: + TRANSFER_ATTR_T m_tIniAttr; + AX_BOOL m_bAiSwitching {AX_FALSE}; + std::vector m_vecSendStream; + std::vector m_vecThreadSendStream; + std::vector m_vecThreadRecvDetRet; + std::map> m_mapSendThreadParams; + std::map> m_mapRecvThreadParams; + CAXThread m_threadRecvCmdRet; +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/master_ppl/VoObserver.hpp b/app/demo/src/ppl/aicard/master_ppl/VoObserver.hpp new file mode 100644 index 0000000..31e09f0 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/VoObserver.hpp @@ -0,0 +1,45 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include "AXFrame.hpp" +#include "IObserver.h" +#include "Vo.hpp" + +/** + * @brief + * + */ +class CVoObserver final : public IObserver { +public: + CVoObserver(CVo* pSink, AX_U32 nChn) noexcept : m_pSink(pSink), m_nChn(nChn){}; + virtual ~CVoObserver(AX_VOID) = default; + + AX_BOOL OnRecvData(OBS_TARGET_TYPE_E eTarget, AX_U32 nGrp, AX_U32 nChn, AX_VOID* pData) override { + if (nullptr == pData) { + return AX_FALSE; + } + if (m_nChn == nChn) { + CAXFrame* pFrame = (CAXFrame*)pData; + return m_pSink->SendFrame(m_pSink->GetVideoChn(nGrp), *pFrame, -1); + } else { + return AX_TRUE; + } + } + + AX_BOOL OnRegisterObserver(OBS_TARGET_TYPE_E eTarget, AX_U32 nGrp, AX_U32 nChn, OBS_TRANS_ATTR_PTR pParams) override { + return AX_TRUE; + } + +private: + CVo* m_pSink; + AX_U32 m_nChn; +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/master_ppl/main.cpp b/app/demo/src/ppl/aicard/master_ppl/main.cpp new file mode 100644 index 0000000..cce9073 --- /dev/null +++ b/app/demo/src/ppl/aicard/master_ppl/main.cpp @@ -0,0 +1,97 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "AppLogApi.h" +#include "AiCardMstBuilder.hpp" +#include "ElapsedTimer.hpp" +#include "GlobalDef.h" +#include "make_unique.hpp" + +static bool gIsRunning = false; + +static int gExitCount = 0; +static void exit_handler(int s) { + printf("\n====================== Caught signal: %d ======================\n", s); + printf("please waiting to quit ...\n\n"); + gIsRunning = false; + gExitCount++; + if (gExitCount >= 3) { + printf("\n====================== Force to exit ====================== \n"); + _exit(1); + } +} + +static void ignore_sig_pipe(void) { + struct sigaction sa; + sa.sa_handler = SIG_IGN; + sa.sa_flags = 0; + if (sigemptyset(&sa.sa_mask) == -1 || sigaction(SIGPIPE, &sa, 0) == -1) { + perror("failed to ignore SIGPIPE, sigaction"); + exit(EXIT_FAILURE); + } +} + +int main(int argc, char const *argv[]) { + signal(SIGINT, exit_handler); + signal(SIGQUIT, exit_handler); + signal(SIGTERM, exit_handler); + ignore_sig_pipe(); + + AX_MTRACE_ENTER(AiCardMaster); + + printf("ENTER main\n"); + //mallopt(M_MMAP_MAX, 0); + mallopt(M_TRIM_THRESHOLD, 1024*128); + + try { + std::unique_ptr pApp = std::make_unique(); + if (!pApp) { + perror("create aicard mst build fail"); + return 1; + } + + if (!pApp->Start()) { + return 1; + } + + gIsRunning = true; + int nRunCount = 0; + while (gIsRunning) { + CElapsedTimer::GetInstance()->mSleep(1000); + if (++nRunCount > 30) { + // Release memory back to the system every 30 seconds. + // https://linux.die.net/man/3/malloc_trim + malloc_trim(0); + + nRunCount = 0; + } + + if (pApp->QueryStreamsAllEof()) { + break; + } + } + + pApp->Stop(); + + } catch (CAXException &e) { + printf("%s\n", e.what()); + AX_MTRACE_LEAVE; + return 1; + } + + AX_MTRACE_LEAVE; + return 0; +} diff --git a/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvAppSys.cpp b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvAppSys.cpp new file mode 100644 index 0000000..5181eb6 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvAppSys.cpp @@ -0,0 +1,230 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "AiCardSlvAppSys.hpp" +#include +#include +#include +#include "AXPoolManager.hpp" +#include "AppLogApi.h" +#include "arraysize.h" +#include "ax_engine_api.h" +#include "ax_ivps_api.h" +#include "ax_sys_api.h" +#include "ax_vdec_api.h" +#include "AiCardSlvConfig.hpp" + +#define SLV_APP "AICARD_SLV_APP" + +using namespace std; +using namespace aicard_slv; + +AX_BOOL CAiCardSlvAppSys::Init(const AICARD_SLV_SYS_ATTR_T& stAttr, const std::string& strAppName) { + if (0 == stAttr.nMaxGrp) { + LOG_MM_E(SLV_APP, "Group count is zero."); + return AX_FALSE; + } else { + m_strAttr = stAttr; + } + + if (!InitAppLog(strAppName)) { + return AX_FALSE; + } + + if (!InitSysMods()) { + DeInitAppLog(); + return AX_FALSE; + } + + LOG_MM_C(SLV_APP, "============== APP(APP Ver: %s, SDK Ver: %s) Started %s %s ==============\n", APP_BUILD_VERSION, GetSdkVersion().c_str(), + __DATE__, __TIME__); + return AX_TRUE; +} + +AX_BOOL CAiCardSlvAppSys::DeInit(AX_VOID) { + if (!DeInitSysMods()) { + return AX_FALSE; + } + + LOG_MM_C(SLV_APP, "============== APP(APP Ver: %s, SDK Ver: %s) Exited %s %s ==============\n", APP_BUILD_VERSION, GetSdkVersion().c_str(), + __DATE__, __TIME__); + + DeInitAppLog(); + + return AX_TRUE; +} + +AX_BOOL CAiCardSlvAppSys::InitAppLog(const string& strAppName) { + APP_LOG_ATTR_T stAttr; + memset(&stAttr, 0, sizeof(stAttr)); + stAttr.nTarget = APP_LOG_TARGET_STDOUT; + stAttr.nLv = APP_LOG_WARN; + strncpy(stAttr.szAppName, strAppName.c_str(), arraysize(stAttr.szAppName) - 1); + + AX_CHAR* env1 = getenv("APP_LOG_TARGET"); + if (env1) { + stAttr.nTarget = atoi(env1); + } + + AX_CHAR* env2 = getenv("APP_LOG_LEVEL"); + if (env2) { + stAttr.nLv = atoi(env2); + } + + return (0 == AX_APP_Log_Init(&stAttr)) ? AX_TRUE : AX_FALSE; +} + +AX_BOOL CAiCardSlvAppSys::DeInitAppLog(AX_VOID) { + AX_APP_Log_DeInit(); + return AX_TRUE; +} + +AX_BOOL CAiCardSlvAppSys::InitSysMods(AX_VOID) { + m_arrMods.clear(); + m_arrMods.reserve(3); + m_arrMods.push_back({AX_FALSE, "SYS", bind(&CAiCardSlvAppSys::APP_SYS_Init, this), bind(&CAiCardSlvAppSys::APP_SYS_DeInit, this)}); + m_arrMods.push_back({AX_FALSE, "VDEC", bind(&CAiCardSlvAppSys::APP_VDEC_Init, this), AX_VDEC_Deinit}); + m_arrMods.push_back({AX_FALSE, "NPU", bind(&CAiCardSlvAppSys::APP_NPU_Init, this), bind(&CAiCardSlvAppSys::APP_NPU_DeInit, this)}); + + for (auto& m : m_arrMods) { + AX_S32 ret = m.Init(); + if (0 != ret) { + LOG_MM_E(SLV_APP, "Init module %s fail, ret = 0x%x", m.strName.c_str(), ret); + return AX_FALSE; + } else { + m.bInited = AX_TRUE; + } + } + + return AX_TRUE; +} + +AX_BOOL CAiCardSlvAppSys::DeInitSysMods(AX_VOID) { + const auto nSize = m_arrMods.size(); + if (0 == nSize) { + return AX_TRUE; + } + + for (AX_S32 i = (AX_S32)(nSize - 1); i >= 0; --i) { + if (m_arrMods[i].bInited) { + AX_S32 ret = m_arrMods[i].DeInit(); + if (0 != ret) { + LOG_MM_E(SLV_APP, "Deinit module %s fail, ret = 0x%x", m_arrMods[i].strName.c_str(), ret); + return AX_FALSE; + } + + m_arrMods[i].bInited = AX_FALSE; + } + } + + m_arrMods.clear(); + return AX_TRUE; +} + +AX_S32 CAiCardSlvAppSys::APP_VDEC_Init(AX_VOID) { + AX_VDEC_MOD_ATTR_T stModAttr; + memset(&stModAttr, 0, sizeof(stModAttr)); + stModAttr.u32MaxGroupCount = m_strAttr.nMaxGrp; + stModAttr.enDecModule = AX_ENABLE_ONLY_VDEC; + AX_S32 ret = AX_VDEC_Init(&stModAttr); + if (0 != ret) { + LOG_MM_E(SLV_APP, "AX_VDEC_Init() fail, ret = 0x%x", ret); + return ret; + } + + return 0; +} + +AX_S32 CAiCardSlvAppSys::APP_SYS_Init(AX_VOID) { + AX_S32 ret = AX_SYS_Init(); + if (0 != ret) { + LOG_MM_E(SLV_APP, "AX_SYS_Init() fail, ret = 0x%x", ret); + return ret; + } + + AX_APP_Log_SetSysModuleInited(AX_TRUE); + + ret = AX_POOL_Exit(); + if (0 != ret) { + LOG_MM_E(SLV_APP, "AX_POOL_Exit() fail, ret = 0x%x", ret); + return ret; + } + + return 0; +} + +AX_S32 CAiCardSlvAppSys::APP_SYS_DeInit(AX_VOID) { + AX_S32 ret = AX_SUCCESS; + + if (!CAXPoolManager::GetInstance()->DestoryAllPools()) { + return -1; + } + + AX_APP_Log_SetSysModuleInited(AX_FALSE); + + ret = AX_SYS_Deinit(); + if (0 != ret) { + LOG_MM_E(SLV_APP, "AX_SYS_Deinit() fail, ret = 0x%x", ret); + return ret; + } + + return 0; +} + +AX_S32 CAiCardSlvAppSys::APP_NPU_Init(AX_VOID) { + AX_ENGINE_NPU_ATTR_T stAttr; + memset(&stAttr, 0, sizeof(stAttr)); + + CAiCardSlvConfig *pConfig = CAiCardSlvConfig::GetInstance(); + if (!pConfig->Init()) { + LOG_MM_E(SLV_APP, "Load aicard slave config file failed."); + return -1; + } + DETECT_CONFIG_T detectConfig = pConfig->GetDetectConfig(); + + if (detectConfig.nChannelNum > 1) { + stAttr.eHardMode = AX_ENGINE_VIRTUAL_NPU_STD; + } + else { + stAttr.eHardMode = AX_ENGINE_VIRTUAL_NPU_DISABLE; + } + + AX_S32 ret = AX_ENGINE_Init(&stAttr); + if (0 != ret) { + LOG_E("%s: AX_ENGINE_Init() fail, ret = 0x%x", __func__, ret); + return ret; + } + + return 0; +} + +AX_S32 CAiCardSlvAppSys::APP_NPU_DeInit(AX_VOID) { + AX_S32 ret = AX_ENGINE_Deinit(); + if (0 != ret) { + LOG_E("%s: AX_ENGINE_Deinit() fail, ret = 0x%x", __func__, ret); + return ret; + } + + return 0; +} + +string CAiCardSlvAppSys::GetSdkVersion(AX_VOID) { + string strSdkVer{"Unknown"}; + if (FILE* fp = fopen("/proc/ax_proc/version", "r")) { + constexpr AX_U32 SDK_VERSION_PREFIX_LEN = strlen("Ax_Version") + 1; + AX_CHAR szSdkVer[64] = {0}; + fread(&szSdkVer[0], 64, 1, fp); + fclose(fp); + szSdkVer[strlen(szSdkVer) - 1] = 0; + strSdkVer = szSdkVer + SDK_VERSION_PREFIX_LEN; + } + + return strSdkVer; +} diff --git a/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvAppSys.hpp b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvAppSys.hpp new file mode 100644 index 0000000..0ed325b --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvAppSys.hpp @@ -0,0 +1,54 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include +#include +#include "ax_global_type.h" + +typedef struct { + AX_U32 nMaxGrp; +} AICARD_SLV_SYS_ATTR_T; + +class CAiCardSlvAppSys { +public: + CAiCardSlvAppSys(AX_VOID) = default; + virtual ~CAiCardSlvAppSys(AX_VOID) = default; + + AX_BOOL Init(const AICARD_SLV_SYS_ATTR_T& stAttr, const std::string& strAppName = "AiCardSlv"); + AX_BOOL DeInit(AX_VOID); + +protected: + static std::string GetSdkVersion(AX_VOID); + + AX_BOOL InitAppLog(const std::string& strAppName); + AX_BOOL DeInitAppLog(AX_VOID); + + virtual AX_BOOL InitSysMods(AX_VOID); + virtual AX_BOOL DeInitSysMods(AX_VOID); + + virtual AX_S32 APP_SYS_Init(AX_VOID); + virtual AX_S32 APP_SYS_DeInit(AX_VOID); + virtual AX_S32 APP_VDEC_Init(AX_VOID); + virtual AX_S32 APP_NPU_Init(AX_VOID); + virtual AX_S32 APP_NPU_DeInit(AX_VOID); + +private: + typedef struct { + AX_BOOL bInited; + std::string strName; + std::function Init; + std::function DeInit; + } SYS_MOD_T; + + AICARD_SLV_SYS_ATTR_T m_strAttr; + std::vector m_arrMods; +}; diff --git a/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvBuilder.cpp b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvBuilder.cpp new file mode 100644 index 0000000..de7f317 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvBuilder.cpp @@ -0,0 +1,381 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "AiCardSlvBuilder.hpp" +#include +#include "AXPoolManager.hpp" +#include "AppLogApi.h" +#include "GlobalDef.h" +#include "make_unique.hpp" +#include "ElapsedTimer.hpp" +#include "PrintHelper.hpp" +#include "VdecCtrlObserver.hpp" +#include "CommonDef.h" + +#define AICARD "AICARD_SLV" +using namespace std; + + +AX_BOOL CAiCardSlvBuilder::Init(AX_VOID) { + LOG_MM_C(AICARD, "+++"); + + CAiCardSlvConfig *pConfig = CAiCardSlvConfig::GetInstance(); + if (!pConfig->Init()) { + LOG_MM_E(AICARD, "Load aicard config file failed."); + return AX_FALSE; + } + + /* [1]: Load configuration */ + VDEC_CONFIG_T tVdecConfig = pConfig->GetVdecConfig(); + DETECT_CONFIG_T tDetectConfig = pConfig->GetDetectConfig(); + // PCIE_CONFIG_T tPcieConfig = CAiCardSlvConfig::GetInstance()->GetPCIECofnig(); + m_nDecodeGrpCount = tVdecConfig.nDecodeGrps; + m_bSimulateDetRets = tDetectConfig.bEnableSimulator; + + /* [2]: Init system */ + AICARD_SLV_SYS_ATTR_T tSysAttr{.nMaxGrp = (AX_U32)m_nDecodeGrpCount}; + if (!m_sys.Init(tSysAttr, "AiCardSlv")) { + return AX_FALSE; + } + + if (!m_bSimulateDetRets) { + /* [3]: Init detector */ + if (!InitDetector(tDetectConfig)) { + return AX_FALSE; + } + } + + /* [4]: Init video decoder */ + tVdecConfig.arrChnW[DETECT_CHN] = tDetectConfig.nW; + tVdecConfig.arrChnH[DETECT_CHN] = tDetectConfig.nH; + if (!InitDecoder(tVdecConfig)) { + return AX_FALSE; + } + + /* [4]: Init master/slave transfer module */ + if (!InitTransHelper()) { + return AX_FALSE; + } + + LOG_MM_C(AICARD, "---"); + return AX_TRUE; +} + +AX_BOOL CAiCardSlvBuilder::InitDetector(const DETECT_CONFIG_T &tDetectConfig) { + LOG_MM_C(AICARD, "+++"); + + m_detector = make_unique(); + if (!m_detector) { + LOG_M_E(AICARD, "%s: create detector instance fail", __func__); + return AX_FALSE; + } + + DETECTOR_ATTR_T tDetectAttr; + tDetectAttr.nGrpCount = m_nDecodeGrpCount; + tDetectAttr.nSkipRate = tDetectConfig.nSkipRate; + tDetectAttr.nW = tDetectConfig.nW; + tDetectAttr.nH = tDetectConfig.nH; + tDetectAttr.nDepth = tDetectConfig.nDepth * m_nDecodeGrpCount; + strcpy(tDetectAttr.szModelPath, tDetectConfig.strModelPath.c_str()); + tDetectAttr.nChannelNum = AX_MIN(tDetectConfig.nChannelNum, DETECTOR_MAX_CHN_NUM); + for (AX_U32 i = 0; i < tDetectAttr.nChannelNum; ++i) { + tDetectAttr.tChnAttr[i].nPPL = tDetectConfig.tChnParam[i].nPPL; + tDetectAttr.tChnAttr[i].nVNPU = tDetectConfig.tChnParam[i].nVNPU; + tDetectAttr.tChnAttr[i].bTrackEnable = tDetectConfig.tChnParam[i].bTrackEnable; + } + + if (!m_detector->Init(tDetectAttr, tDetectConfig.bEnableSimulator)) { + return AX_FALSE; + } + + m_detectorObserver = CObserverMaker::CreateObserver(m_detector.get(), DETECT_CHN); + if (!m_detectorObserver) { + LOG_M_E(AICARD, "%s: create detect observer fail", __func__); + return AX_FALSE; + } + + LOG_MM_C(AICARD, "---"); + + return AX_TRUE; +} + +AX_BOOL CAiCardSlvBuilder::InitTransHelper() { + LOG_MM_C(AICARD, "+++"); + + m_transHelper = make_unique(); + if (!m_transHelper) { + LOG_MM_E(AICARD, "Create transfer helper instance failed."); + return AX_FALSE; + } + + PCIE_CONFIG_T tPcieConfig = CAiCardSlvConfig::GetInstance()->GetPCIECofnig(); + + TRANSFER_ATTR_T tAttr; + tAttr.nMaxVideoCount = m_nDecodeGrpCount; + tAttr.nBuffCount = tPcieConfig.nBuffCount; + tAttr.nBuffSize = tPcieConfig.nBuffSize; + tAttr.nSendTimeout = tPcieConfig.nSendTimeout; + tAttr.nRecvTimeout = tPcieConfig.nRecvTimeout; + tAttr.bEnableSimulateDetRets = m_bSimulateDetRets; + tAttr.nTraceData = tPcieConfig.nTraceData; + tAttr.nRetryCount = tPcieConfig.nRetryCount; + if (!m_transHelper->Init(tAttr)) { + return AX_FALSE; + } else { + m_transHelper->RegStreamObserver(m_vdec.get()); + m_transHelper->RegCommandObserver(m_vdecCtrlObserver.get()); + if (!m_bSimulateDetRets) { + m_transHelper->RegCommandObserver(m_detectorObserver.get()); + } + } + + LOG_MM_C(AICARD, "---"); + + return AX_TRUE; +} + +AX_BOOL CAiCardSlvBuilder::InitDecoder(const VDEC_CONFIG_T &tVdecConfig) { + LOG_MM_C(AICARD, "+++"); + + m_vdec = make_unique(); + if (!m_vdec) { + LOG_MM_E(AICARD, "Create vidoe decoder instance failed."); + return AX_FALSE; + } + + vector arrVdGrps(m_nDecodeGrpCount); + for (AX_U32 i = 0; i < m_nDecodeGrpCount; ++i) { + VDEC_GRP_ATTR_T tGrpAttr; + tGrpAttr.bEnable = AX_TRUE; + tGrpAttr.enCodecType = tVdecConfig.eVideoType; + tGrpAttr.nMaxWidth = ALIGN_UP(tVdecConfig.nMaxGrpW, 16); /* H264 MB 16x16 */ + tGrpAttr.nMaxHeight = ALIGN_UP(tVdecConfig.nMaxGrpH, 16); /* H264 MB 16x16 */ + + /* use configured fps for file streamer */ + tGrpAttr.nFps = tVdecConfig.nDefaultFps; + if (1 == i) { + tGrpAttr.nFps = 30; + } + + if (tGrpAttr.nFps > 0) { + tGrpAttr.bFramerateCtrl = AX_TRUE; + } + + tGrpAttr.bPrivatePool = (2 == tVdecConfig.nUserPool) ? AX_TRUE : AX_FALSE; + + /* FILE: playback + frame or stream mode according configuration */ + tGrpAttr.eDecodeMode = AX_VDEC_DISPLAY_MODE_PLAYBACK; + if (0 == tVdecConfig.nInputMode) { + tGrpAttr.enInputMode = AX_VDEC_INPUT_MODE_FRAME; + tGrpAttr.nMaxStreamBufSize = tGrpAttr.nMaxWidth * tGrpAttr.nMaxHeight * 2; + } else { + tGrpAttr.enInputMode = AX_VDEC_INPUT_MODE_STREAM; + tGrpAttr.nMaxStreamBufSize = tVdecConfig.nMaxStreamBufSize; + } + + for (AX_U32 j = 0; j < MAX_VDEC_CHN_NUM; ++j) { + AX_VDEC_CHN_ATTR_T &tChnAttr = tGrpAttr.stChnAttr[j]; + switch (j) { + case VDEC_CHN0: + /* pp0 disable, because scaler is not support */ + tGrpAttr.bChnEnable[j] = AX_FALSE; + break; + case DETECT_CHN: + /* pp1 scaler max. 4096x2160 */ + tGrpAttr.bChnEnable[j] = AX_TRUE; + tChnAttr.u32PicWidth = tVdecConfig.arrChnW[j]; + tChnAttr.u32PicHeight = tVdecConfig.arrChnH[j]; + tChnAttr.u32FrameStride = ALIGN_UP(tChnAttr.u32PicWidth, VDEC_STRIDE_ALIGN); + tChnAttr.u32OutputFifoDepth = tVdecConfig.nChnDepth[j]; + tChnAttr.enOutputMode = AX_VDEC_OUTPUT_SCALE; + tChnAttr.enImgFormat = AX_FORMAT_YUV420_SEMIPLANAR; + tChnAttr.stCompressInfo.enCompressMode = AX_COMPRESS_MODE_NONE; + break; + default: + tGrpAttr.bChnEnable[j] = AX_FALSE; + break; + } + } + + arrVdGrps[i] = move(tGrpAttr); + } + + if (!m_vdec->Init(arrVdGrps)) { + return AX_FALSE; + } else { + m_vdecCtrlObserver = CObserverMaker::CreateObserver(m_vdec.get(), tVdecConfig.bEnableReset); + if (!m_vdecCtrlObserver) { + LOG_M_E(AICARD, "%s: create vdec ctrl command observer fail", __func__); + return AX_FALSE; + } + } + + for (AX_U32 i = 0; i < m_nDecodeGrpCount; ++i) { + AX_VDEC_GRP vdGrp = (AX_VDEC_GRP)i; + m_vdec->RegObserver(vdGrp, m_detectorObserver.get()); + + VDEC_GRP_ATTR_T tGrpAttr; + m_vdec->GetGrpAttr(vdGrp, tGrpAttr); + + for (AX_U32 j = 0; j < MAX_VDEC_CHN_NUM; ++j) { + if (!tGrpAttr.bChnEnable[j]) { + continue; + } + + if (tGrpAttr.bPrivatePool) { + continue; + } + + AX_VDEC_CHN_ATTR_T &stChn = tGrpAttr.stChnAttr[j]; + AX_U32 nBlkSize = CVideoDecoder::GetBlkSize(stChn.u32PicWidth, stChn.u32PicHeight, stChn.u32FrameStride, tGrpAttr.enCodecType, + &stChn.stCompressInfo, stChn.enImgFormat); + + if (0 == tVdecConfig.nUserPool) { + CAXPoolManager::GetInstance()->AddBlockToFloorPlan(nBlkSize, stChn.u32OutputFifoDepth); + LOG_M_N(AICARD, "VDEC vdGrp %d vdChn %d blkSize %d blkCount %d", vdGrp, j, nBlkSize, stChn.u32OutputFifoDepth); + } else { + AX_POOL_CONFIG_T stPoolConfig; + memset(&stPoolConfig, 0, sizeof(stPoolConfig)); + stPoolConfig.MetaSize = 4096; + stPoolConfig.BlkSize = nBlkSize; + stPoolConfig.BlkCnt = stChn.u32OutputFifoDepth; + stPoolConfig.IsMergeMode = AX_FALSE; + stPoolConfig.CacheMode = POOL_CACHE_MODE_NONCACHE; + sprintf((AX_CHAR *)stPoolConfig.PoolName, "vdec_%d_pp%d_pool", i, j); + AX_POOL pool = CAXPoolManager::GetInstance()->CreatePool(stPoolConfig); + if (AX_INVALID_POOLID == pool) { + return AX_FALSE; + } + + if (!m_vdec->AttachPool(vdGrp, (AX_VDEC_CHN)j, pool)) { + return AX_FALSE; + } + + ((CVdecCtrlObserver *)(m_vdecCtrlObserver.get()))->SetPool(vdGrp, (AX_VDEC_CHN) j, pool); + + LOG_M_C(AICARD, "pool %2d (blkSize %d blkCount %d) is attached to VDEC vdGrp %d vdChn %d", pool, stPoolConfig.BlkSize, + stPoolConfig.BlkCnt, vdGrp, j); + } + } + } + + if (0 == tVdecConfig.nUserPool) { + if (!CAXPoolManager::GetInstance()->CreateFloorPlan(512)) { + return AX_FALSE; + } + } + + LOG_MM_C(AICARD, "---"); + + return AX_TRUE; +} + +AX_BOOL CAiCardSlvBuilder::DeInit(AX_VOID) { + /* destory instances */ +#define DESTORY_INSTANCE(p) \ + do { \ + if (p) { \ + p->DeInit(); \ + p = nullptr; \ + } \ + } while (0) + + DESTORY_INSTANCE(m_transHelper); + + /* If private pool, destory consumer before producer */ + DESTORY_INSTANCE(m_detector); + DESTORY_INSTANCE(m_vdec); + +#undef DESTORY_INSTANCE + + m_sys.DeInit(); + return AX_TRUE; +} + +AX_BOOL CAiCardSlvBuilder::Start(AX_VOID) { + if (!Init()) { + DeInit(); + return AX_FALSE; + } + + do { + if (m_detector) { + if (!m_detector->Start()) { + return AX_FALSE; + } + } else { + if (m_bSimulateDetRets) { + LOG_MM_C(AICARD, ">>>>>>>>>>>>>>>> DETECTOR module is disabled and results would be simulated <<<<<<<<<<<<<<<<<<<<<"); + } else { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> DETECTOR module is disabled <<<<<<<<<<<<<<<<<<<<<"); + return AX_FALSE; + } + } + + if (m_vdec) { + if (!m_vdec->Start()) { + return AX_FALSE; + } + } else { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> VDEC module is disabled <<<<<<<<<<<<<<<<<<<<<"); + return AX_FALSE; + } + + if (m_transHelper) { + if (!m_transHelper->Start()) { + return AX_FALSE; + } + } else { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> TRANSFER module is disabled <<<<<<<<<<<<<<<<<<<<<"); + return AX_FALSE; + } + + CPrintHelper::GetInstance()->Start(); + + return AX_TRUE; + + } while (0); + + Stop(); + + return AX_FALSE; +} + +AX_BOOL CAiCardSlvBuilder::Stop(AX_VOID) { + CPrintHelper::GetInstance()->Stop(); + + if (m_transHelper) { + if (!m_transHelper->Stop()) { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> TRANSFER module stop failed <<<<<<<<<<<<<<<<<<<<<"); + } else { + LOG_MM_C(AICARD, ">>>>>>>>>>>>>>>> TRANSFER module stop successfully <<<<<<<<<<<<<<<<<<<<<"); + } + } + + if (m_detector) { + m_detector->Clear(); + if (!m_detector->Stop()) { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> DETECTOR module stop failed <<<<<<<<<<<<<<<<<<<<<"); + } else { + LOG_MM_C(AICARD, ">>>>>>>>>>>>>>>> DETECTOR module stop successfully <<<<<<<<<<<<<<<<<<<<<"); + } + } + + if (m_vdec) { + if (!m_vdec->Stop()) { + LOG_MM_E(AICARD, ">>>>>>>>>>>>>>>> VDEC module stop failed <<<<<<<<<<<<<<<<<<<<<"); + } else { + LOG_MM_C(AICARD, ">>>>>>>>>>>>>>>> VDEC module stop successfully <<<<<<<<<<<<<<<<<<<<<"); + } + } + + DeInit(); + return AX_TRUE; +} diff --git a/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvBuilder.hpp b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvBuilder.hpp new file mode 100644 index 0000000..6c30189 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvBuilder.hpp @@ -0,0 +1,53 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include +#include +#include "AiCardSlvAppSys.hpp" +#include "AiCardSlvConfig.hpp" +#include "TransferHelper.hpp" +#include "Detector.hpp" +#include "DetectObserver.hpp" +#include "IObserver.h" +#include "VideoDecoder.hpp" + + +using namespace aicard_slv; + +class CAiCardSlvBuilder final { +public: + CAiCardSlvBuilder(AX_VOID) noexcept = default; + + AX_BOOL Start(AX_VOID); + AX_BOOL Stop(AX_VOID); + +protected: + AX_BOOL Init(AX_VOID); + AX_BOOL DeInit(AX_VOID); + + AX_BOOL InitTransHelper(); + AX_BOOL InitDispatcher(); + AX_BOOL InitDecoder(const VDEC_CONFIG_T& tVdecConfig); + AX_BOOL InitDetector(const DETECT_CONFIG_T &tDetectConfig); + +protected: + CAiCardSlvAppSys m_sys; + AX_U32 m_nDecodeGrpCount{0}; + AX_BOOL m_bSimulateDetRets{AX_FALSE}; + std::unique_ptr m_transHelper; + std::unique_ptr m_vdec; + std::unique_ptr m_detector; + IObserverUniquePtr m_vdecCtrlObserver; + IObserverUniquePtr m_detectorObserver; + std::vector m_arrDispatchObserver; + +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvConfig.cpp b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvConfig.cpp new file mode 100644 index 0000000..e8fe971 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvConfig.cpp @@ -0,0 +1,129 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "AiCardSlvConfig.hpp" +#include +#include "GlobalDef.h" +#include "ax_global_type.h" +#include "ax_venc_rc.h" +using namespace std; +using namespace aicard_slv; + +string CAiCardSlvConfig::GetExecPath(AX_VOID) { + string strPath; + AX_CHAR szPath[260] = {0}; + ssize_t sz = readlink("/proc/self/exe", szPath, sizeof(szPath)); + if (sz <= 0) { + strPath = "./"; + } else { + strPath = szPath; + strPath = strPath.substr(0, strPath.rfind('/') + 1); + } + + return strPath; +} + +AX_BOOL CAiCardSlvConfig::Init(AX_VOID) { + string strIniPath = GetExecPath() + "aicard_slave.conf"; + if (!m_iniParser.Load(strIniPath)) { + return AX_FALSE; + } + + return AX_TRUE; +} + +VDEC_CONFIG_T CAiCardSlvConfig::GetVdecConfig(AX_VOID) { + VDEC_CONFIG_T conf; + const AX_CHAR *SECT = "VDEC"; + + conf.eVideoType = (m_iniParser.GetIntValue(SECT, "video type", 0) == 0 ? PT_H264 : PT_H265); + conf.nMaxGrpW = m_iniParser.GetIntValue(SECT, "width", 1920); + conf.nMaxGrpH = m_iniParser.GetIntValue(SECT, "height", 1080); + conf.bEnableReset = (AX_BOOL)m_iniParser.GetIntValue(SECT, "enable reset", 0); + for (AX_U32 i = 0; i < 3; ++i) { + AX_CHAR szKey[32]; + sprintf(szKey, "chn%d depth", i); + conf.nChnDepth[i] = m_iniParser.GetIntValue(SECT, szKey, 8); + } + conf.nDefaultFps = m_iniParser.GetIntValue(SECT, "fps", 30); + conf.nInputMode = m_iniParser.GetIntValue(SECT, "input mode", 0); + + conf.nUserPool = m_iniParser.GetIntValue(SECT, "user pool", 1); + if (conf.nUserPool > 2) { + conf.nUserPool = 1; + } + + conf.nMaxStreamBufSize = m_iniParser.GetIntValue(SECT, "max stream buf size", 0x200000); + AX_U32 nCount = m_iniParser.GetIntValue(SECT, "count", 1); + if (nCount > 0) { + conf.v.resize(nCount); + for (AX_U32 i = 1; i <= nCount; ++i) { + AX_CHAR szKey[32]; + sprintf(szKey, "stream%02d", i); + conf.v[i - 1] = m_iniParser.GetStringValue(SECT, szKey, ""); + } + } + + conf.nDecodeGrps = m_iniParser.GetIntValue(SECT, "vdec count", 0); + if (0 == conf.nDecodeGrps || conf.nDecodeGrps > nCount) { + conf.nDecodeGrps = nCount; + } + + return conf; /* RVO: optimized by compiler */ +} + +DETECT_CONFIG_T CAiCardSlvConfig::GetDetectConfig(AX_VOID) { + DETECT_CONFIG_T conf; + const AX_CHAR *SECT = "DETECT"; + + conf.bEnable = (AX_BOOL)m_iniParser.GetIntValue(SECT, "enable", 0); + conf.bEnableSimulator = (AX_BOOL)m_iniParser.GetIntValue(SECT, "enable simulator", 0); + conf.nW = m_iniParser.GetIntValue(SECT, "width", 960); + conf.nH = m_iniParser.GetIntValue(SECT, "height", 640); + conf.nSkipRate = m_iniParser.GetIntValue(SECT, "skip rate", 1); + conf.nDepth = m_iniParser.GetIntValue(SECT, "fifo depth", 1); + conf.nChannelNum = m_iniParser.GetIntValue(SECT, "channel num", 1); + conf.nChannelNum = AX_MIN(conf.nChannelNum, 3); + + for (AX_S32 i = 0; i < conf.nChannelNum; ++i) { + std::string str = "channel" + std::to_string(i) + " attr"; + + vector vec; + m_iniParser.GetIntValue(SECT, str, vec); + + if (vec.size() == 3) { + conf.tChnParam[i].nPPL = vec[0]; + conf.tChnParam[i].bTrackEnable = (AX_BOOL)vec[1]; + conf.tChnParam[i].nVNPU = vec[2]; + } else { + conf.tChnParam[i].nPPL = 4; + conf.tChnParam[i].bTrackEnable = AX_FALSE; + conf.tChnParam[i].nVNPU = 0; + } + } + + conf.strModelPath = m_iniParser.GetStringValue(SECT, "model path", ""); + + return conf; /* RVO: optimized by compiler */ +} + +PCIE_CONFIG_T CAiCardSlvConfig::GetPCIECofnig(AX_VOID) { + PCIE_CONFIG_T conf; + const AX_CHAR *SECT = "PCIE"; + + conf.nBuffSize = m_iniParser.GetIntValue(SECT, "buff size", 600); // Unit: KB + conf.nBuffCount = m_iniParser.GetIntValue(SECT, "buff count", 2); + conf.nSendTimeout = m_iniParser.GetIntValue(SECT, "send timeout", -1); + conf.nRecvTimeout = m_iniParser.GetIntValue(SECT, "recv timeout", -1); + conf.nTraceData = m_iniParser.GetIntValue(SECT, "log data", 0); + conf.nRetryCount = m_iniParser.GetIntValue(SECT, "retry count", 1); + + return conf; /* RVO: optimized by compiler */ +} diff --git a/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvConfig.hpp b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvConfig.hpp new file mode 100644 index 0000000..03bb01b --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/AiCardSlvConfig.hpp @@ -0,0 +1,87 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include +#include "ax_global_type.h" +#include "AXSingleton.h" +#include "IniWrapper.hpp" + +namespace aicard_slv { + +typedef struct { + AX_PAYLOAD_TYPE_E eVideoType; + AX_U32 nUserPool; + AX_U32 nMaxGrpW; + AX_U32 nMaxGrpH; + AX_U32 arrChnW[3]; + AX_U32 arrChnH[3]; + AX_U32 nDefaultFps; + AX_S32 nChnDepth[3]; + AX_U32 nInputMode; + AX_U32 nMaxStreamBufSize; + AX_U32 nDecodeGrps; + std::vector v; + AX_BOOL bEnableReset; +} VDEC_CONFIG_T; + +typedef struct { + AX_U32 nPPL; + AX_U32 nVNPU; + AX_BOOL bTrackEnable; +} DETECT_CHN_PARAM_T; + +typedef struct { + AX_BOOL bEnable; + AX_BOOL bEnableSimulator {AX_FALSE}; + AX_U32 nW; + AX_U32 nH; + AX_U32 nSkipRate; + AX_S32 nDepth; + AX_S32 nChannelNum; + DETECT_CHN_PARAM_T tChnParam[3]; + std::string strModelPath; +} DETECT_CONFIG_T; + +typedef struct { + AX_S16 nBuffSize {600}; + AX_U8 nBuffCount {2}; + AX_S16 nSendTimeout {-1}; + AX_S16 nRecvTimeout {-1}; + AX_S16 nTraceData {0}; + AX_S16 nRetryCount {1}; +} PCIE_CONFIG_T; + +/** + * @brief + * + */ +class CAiCardSlvConfig : public CAXSingleton { + friend class CAXSingleton; + +public: + AX_BOOL Init(AX_VOID); + + VDEC_CONFIG_T GetVdecConfig(AX_VOID); + DETECT_CONFIG_T GetDetectConfig(AX_VOID); + PCIE_CONFIG_T GetPCIECofnig(AX_VOID); + +private: + CAiCardSlvConfig(AX_VOID) = default; + virtual ~CAiCardSlvConfig(AX_VOID) = default; + + string GetExecPath(AX_VOID); + +private: + CIniWrapper m_iniParser; +}; + +} // namespace aicard_slv diff --git a/app/demo/src/ppl/aicard/slave_ppl/CommonDef.h b/app/demo/src/ppl/aicard/slave_ppl/CommonDef.h new file mode 100644 index 0000000..3997fba --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/CommonDef.h @@ -0,0 +1,17 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#define VDEC_CHN0 0 +#define VDEC_CHN1 1 +#define VDEC_CHN2 2 +#define DETECT_CHN VDEC_CHN1 +#define SHARED_PORT_NUMBER (1) \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/slave_ppl/DetectObserver.hpp b/app/demo/src/ppl/aicard/slave_ppl/DetectObserver.hpp new file mode 100644 index 0000000..b084456 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/DetectObserver.hpp @@ -0,0 +1,47 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include "AXFrame.hpp" +#include "Detector.hpp" +#include "IObserver.h" + +/** + * @brief + * + */ +class CDetectObserver final : public IObserver { +public: + CDetectObserver(CDetector* pSink, AX_U32 nChn) noexcept : m_pSink(pSink){}; + virtual ~CDetectObserver(AX_VOID) = default; + + AX_BOOL OnRecvData(OBS_TARGET_TYPE_E eTarget, AX_U32 nGrp, AX_U32 nChn, AX_VOID* pData) override { + if (nullptr == pData) { + return AX_FALSE; + } + + if (E_OBS_TARGET_TYPE_AICARD_TRANSFER == eTarget) { + return m_pSink->ThreadSwitchAttr(*(AI_CARD_AI_SWITCH_ATTR_T*)pData); + } else if (E_OBS_TARGET_TYPE_VDEC == eTarget) { + CAXFrame* pFrame = (CAXFrame*)pData; + return m_pSink->SendFrame(*pFrame); + } + + return AX_FALSE; + } + + AX_BOOL OnRegisterObserver(OBS_TARGET_TYPE_E eTarget, AX_U32 nGrp, AX_U32 nChn, OBS_TRANS_ATTR_PTR pParams) override { + return AX_TRUE; + } + +private: + CDetector* m_pSink; +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/slave_ppl/DetectResult.hpp b/app/demo/src/ppl/aicard/slave_ppl/DetectResult.hpp new file mode 100644 index 0000000..566c04a --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/DetectResult.hpp @@ -0,0 +1,110 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include +#include +#include "AXSingleton.h" +#include "ax_skel_type.h" + +#define MAX_DETECT_RESULT_COUNT (64) + +typedef enum { + DETECT_TYPE_UNKNOWN = 0, + DETECT_TYPE_FACE = 1, + DETECT_TYPE_BODY = 2, + DETECT_TYPE_VEHICLE = 3, + DETECT_TYPE_PLATE = 4, + DETECT_TYPE_CYCLE = 5, + DETECT_TYPE_BUTT +} DETECT_TYPE_E; + +typedef struct { + DETECT_TYPE_E eType; + AX_U64 nTrackId; + AX_SKEL_RECT_T tBox; +} DETECT_RESULT_ITEM_T; + +typedef struct DETECT_RESULT_S { + AX_U64 nSeqNum; + AX_U32 nW; + AX_U32 nH; + AX_U32 nCount; + AX_S32 nGrpId; + DETECT_RESULT_ITEM_T item[MAX_DETECT_RESULT_COUNT]; + + DETECT_RESULT_S(AX_VOID) { + memset(this, 0, sizeof(*this)); + } + +} DETECT_RESULT_T; + +/** + * @brief + * + */ +class CDetectResult : public CAXSingleton { + friend class CAXSingleton; + +public: + AX_BOOL Set(AX_S32 nGrp, const DETECT_RESULT_T& fhvp) { + std::lock_guard lck(m_mtx); + m_mapRlts[nGrp] = fhvp; + + for (AX_U32 i = 0; i < fhvp.nCount; ++i) { + ++m_arrCount[fhvp.item[i].eType]; + } + + return AX_TRUE; + } + + AX_BOOL Get(AX_S32 nGrp, DETECT_RESULT_T& fhvp) { + std::lock_guard lck(m_mtx); + if (m_mapRlts.end() == m_mapRlts.find(nGrp)) { + return AX_FALSE; + } + + fhvp = m_mapRlts[nGrp]; + return AX_TRUE; + } + + AX_BOOL Pop(AX_S32 nGrp, DETECT_RESULT_T& fhvp) { + std::lock_guard lck(m_mtx); + if (m_mapRlts.end() == m_mapRlts.find(nGrp) || 0 == m_mapRlts[nGrp].nCount) { + return AX_FALSE; + } + + fhvp = m_mapRlts[nGrp]; + m_mapRlts[nGrp].nCount = 0; + memset(&m_mapRlts[nGrp].item, 0, sizeof(DETECT_RESULT_ITEM_T) * MAX_DETECT_RESULT_COUNT); + return AX_TRUE; + } + + AX_U64 GetTotalCount(DETECT_TYPE_E eType) { + std::lock_guard lck(m_mtx); + return m_arrCount[eType]; + } + + AX_VOID Clear(AX_VOID) { + std::lock_guard lck(m_mtx); + memset(m_arrCount, 0, sizeof(m_arrCount)); + m_mapRlts.clear(); + } + +protected: + CDetectResult(AX_VOID) noexcept = default; + virtual ~CDetectResult(AX_VOID) = default; + +private: + std::mutex m_mtx; + std::map m_mapRlts; + AX_U64 m_arrCount[DETECT_TYPE_BUTT] = {0}; +}; diff --git a/app/demo/src/ppl/aicard/slave_ppl/Detector.cpp b/app/demo/src/ppl/aicard/slave_ppl/Detector.cpp new file mode 100644 index 0000000..f8de15d --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/Detector.cpp @@ -0,0 +1,510 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "Detector.hpp" +#include +#include +#include +#include "AXException.hpp" +#include "AppLogApi.h" +#include "DetectResult.hpp" +#include "ElapsedTimer.hpp" +#include "PcieAdapter.hpp" + +using namespace std; +#define DETECTOR "SKEL" + +static AX_VOID SkelResultCallback(AX_SKEL_HANDLE pHandle, AX_SKEL_RESULT_T *pstResult, AX_VOID *pUserData) { + CDetector *pThis = (CDetector *)pUserData; + if (!pThis) { + THROW_AX_EXCEPTION("skel handle %p result callback user data is nil", pHandle); + } + + SKEL_FRAME_PRIVATE_DATA_T *pPrivData = (SKEL_FRAME_PRIVATE_DATA_T *)(pstResult->pUserData); + if (!pPrivData) { + THROW_AX_EXCEPTION("skel handle %p frame private data is nil", pHandle); + } + + DETECT_RESULT_T fhvp; + // fhvp.nSeqNum = pstResult->nFrameId; + fhvp.nW = pstResult->nOriginalWidth; + fhvp.nH = pstResult->nOriginalHeight; + fhvp.nSeqNum = pPrivData->nSeqNum; + fhvp.nGrpId = pPrivData->nGrpId; + fhvp.nCount = pstResult->nObjectSize; + + AX_U32 index = 0; + for (AX_U32 i = 0; i < fhvp.nCount && index < MAX_DETECT_RESULT_COUNT; ++i) { + if (pstResult->pstObjectItems[i].eTrackState != AX_SKEL_TRACK_STATUS_NEW && + pstResult->pstObjectItems[i].eTrackState != AX_SKEL_TRACK_STATUS_UPDATE) { + continue; + } + + if (0 == strcmp(pstResult->pstObjectItems[i].pstrObjectCategory, "body")) { + fhvp.item[index].eType = DETECT_TYPE_BODY; + } else if (0 == strcmp(pstResult->pstObjectItems[i].pstrObjectCategory, "vehicle")) { + fhvp.item[index].eType = DETECT_TYPE_VEHICLE; + } else if (0 == strcmp(pstResult->pstObjectItems[i].pstrObjectCategory, "cycle")) { + fhvp.item[index].eType = DETECT_TYPE_CYCLE; + } else if (0 == strcmp(pstResult->pstObjectItems[i].pstrObjectCategory, "face")) { + fhvp.item[index].eType = DETECT_TYPE_FACE; + } else if (0 == strcmp(pstResult->pstObjectItems[i].pstrObjectCategory, "plate")) { + fhvp.item[index].eType = DETECT_TYPE_PLATE; + } else { + LOG_M_W(DETECTOR, "unknown detect result %s of vdGrp %d frame %lld (skel %lld)", + pstResult->pstObjectItems[i].pstrObjectCategory, fhvp.nGrpId, fhvp.nSeqNum, pstResult->nFrameId); + fhvp.item[index].eType = DETECT_TYPE_UNKNOWN; + } + + fhvp.item[index].nTrackId = pstResult->pstObjectItems[i].nTrackId; + fhvp.item[index].tBox = pstResult->pstObjectItems[i].stRect; + index++; + } + + fhvp.nCount = index; + + /* save fhvp result */ + CDetectResult::GetInstance()->Set(pPrivData->nGrpId, fhvp); + + /* release fhvp result */ + AX_SKEL_Release((AX_VOID *)pstResult); + + /* giveback private data */ + pThis->ReleaseSkelPrivateData(pPrivData); +} + +AX_VOID CDetector::RunDetect(AX_VOID *pArg) { + LOG_M_C(DETECTOR, "detect thread is running"); + + AX_U64 nFrameId = 0; + AX_U32 nCurrGrp = 0; + AX_U32 nNextGrp = 0; + const AX_U32 TOTAL_GRP_COUNT = m_stAttr.nGrpCount; + CAXFrame axFrame; + AX_U32 nSkipCount = 0; + while (m_DetectThread.IsRunning()) { + for (nCurrGrp = nNextGrp; nCurrGrp < TOTAL_GRP_COUNT; ++nCurrGrp) { + if (m_arrFrameQ[nCurrGrp].Pop(axFrame, 0)) { + nSkipCount = 0; + break; + } + + if (++nSkipCount == TOTAL_GRP_COUNT) { + this_thread::sleep_for(chrono::microseconds(1000)); + nSkipCount = 0; + } + } + + if (nCurrGrp == TOTAL_GRP_COUNT) { + nNextGrp = 0; + continue; + } else { + nNextGrp = nCurrGrp + 1; + if (nNextGrp == TOTAL_GRP_COUNT) { + nNextGrp = 0; + } + } + + SKEL_FRAME_PRIVATE_DATA_T *pPrivData = m_skelData.borrow(); + if (!pPrivData) { + LOG_M_E(DETECTOR, "%s: borrow skel frame private data fail", __func__); + axFrame.DecRef(); + continue; + } else { + pPrivData->nSeqNum = axFrame.stFrame.stVFrame.stVFrame.u64SeqNum; + pPrivData->nGrpId = axFrame.nGrp; + pPrivData->nSkelChn = axFrame.nGrp % m_stAttr.nChannelNum; + } + + AX_SKEL_FRAME_T skelFrame; + skelFrame.nFrameId = ++nFrameId; /* skel recommends to unique frame id */ + skelFrame.nStreamId = axFrame.nGrp; + skelFrame.stFrame = axFrame.stFrame.stVFrame.stVFrame; + skelFrame.pUserData = (AX_VOID *)pPrivData; + LOG_M_N(DETECTOR, "runskel vdGrp %d vdChn %d frame %lld pts %lld phy 0x%llx %dx%d stride %d blkId 0x%x", axFrame.nGrp, axFrame.nChn, + axFrame.stFrame.stVFrame.stVFrame.u64SeqNum, axFrame.stFrame.stVFrame.stVFrame.u64PTS, axFrame.stFrame.stVFrame.stVFrame.u64PhyAddr[0], + axFrame.stFrame.stVFrame.stVFrame.u32Width, axFrame.stFrame.stVFrame.stVFrame.u32Height, axFrame.stFrame.stVFrame.stVFrame.u32PicStride[0], + axFrame.stFrame.stVFrame.stVFrame.u32BlkId[0]); + + AX_S32 ret = AX_SKEL_SendFrame(m_hSkel[pPrivData->nSkelChn], &skelFrame, -1); + + /* release frame after done */ + axFrame.DecRef(); + + if (0 != ret) { + LOG_M_E(DETECTOR, "%s: AX_SKEL_SendFrame(vdGrp %d, seq %lld, frame %lld) fail, ret = 0x%x", __func__, axFrame.nGrp, + axFrame.stFrame.stVFrame.stVFrame.u64SeqNum, skelFrame.nFrameId, ret); + + m_skelData.giveback(pPrivData); + } + } + + LOG_M_D(DETECTOR, "%s: ---", __func__); +} + +AX_BOOL CDetector::Init(const DETECTOR_ATTR_T &stAttr, AX_BOOL bSimulateDetRets /*= AX_FALSE*/) { + LOG_MM_C(DETECTOR, "+++"); + + if (0 == stAttr.nGrpCount) { + LOG_M_E(DETECTOR, "%s: 0 grp", __func__); + return AX_FALSE; + } + + m_stAttr = stAttr; + m_bSimulateDetRets = bSimulateDetRets; + + if (m_stAttr.nSkipRate <= 0) { + m_stAttr.nSkipRate = 1; + } + + m_arrFrameQ = new (nothrow) CAXLockQ[stAttr.nGrpCount]; + if (!m_arrFrameQ) { + LOG_M_E(DETECTOR, "%s: alloc queue fail", __func__); + return AX_FALSE; + } else { + AX_S32 nBufQDepth = m_stAttr.nDepth / stAttr.nGrpCount; + for (AX_U32 i = 0; i < stAttr.nGrpCount; ++i) { + m_arrFrameQ[i].SetCapacity(nBufQDepth); + } + } + + /* define how many frames can skel to handle in parallel */ + constexpr AX_U32 PARALLEL_FRAME_COUNT = 2; + m_skelData.reserve(stAttr.nGrpCount * PARALLEL_FRAME_COUNT); + + LOG_MM_C(DETECTOR, "---"); + + return AX_TRUE; +} + +AX_BOOL CDetector::DeInit(AX_VOID) { + LOG_MM_C(DETECTOR, "+++"); + + if (m_arrFrameQ) { + delete[] m_arrFrameQ; + m_arrFrameQ = nullptr; + } + + m_skelData.destory(); + + LOG_MM_C(DETECTOR, "---"); + return AX_TRUE; +} + +AX_BOOL CDetector::InitSkel() { + LOG_MM_C(DETECTOR, "+++"); + + /* [1]: SKEL init */ + AX_SKEL_INIT_PARAM_T stInit; + memset(&stInit, 0, sizeof(stInit)); + stInit.pStrModelDeploymentPath = m_stAttr.szModelPath; + AX_S32 ret = AX_SKEL_Init(&stInit); + if (0 != ret) { + LOG_M_E(DETECTOR, "%s: AX_SKEL_Init fail, ret = 0x%x", __func__, ret); + return AX_FALSE; + } + + do { + /* [2]: print SKEL version */ + const AX_SKEL_VERSION_INFO_T *pstVersion = NULL; + ret = AX_SKEL_GetVersion(&pstVersion); + if (0 != ret) { + LOG_M_E(DETECTOR, "%s: AX_SKEL_GetVersion() fail, ret = 0x%x", __func__, ret); + } else { + if (pstVersion && pstVersion->pstrVersion) { + LOG_M_I(DETECTOR, "SKEL version: %s", pstVersion->pstrVersion); + } + + AX_SKEL_Release((AX_VOID *)pstVersion); + } + + /* [3]: check whether has FHVP model or not */ + const AX_SKEL_CAPABILITY_T *pstCapability = NULL; + ret = AX_SKEL_GetCapability(&pstCapability); + if (0 != ret) { + LOG_M_E(DETECTOR, "%s: AX_SKEL_GetCapability() fail, ret = 0x%x", __func__, ret); + break; + } else { + AX_BOOL bFHVP{AX_FALSE}; + if (pstCapability && 0 == pstCapability->nPPLConfigSize) { + LOG_M_E(DETECTOR, "%s: SKEL model has 0 PPL", __func__); + } else { + for (AX_U32 i = 0; i < pstCapability->nPPLConfigSize; ++i) { + if (AX_SKEL_PPL_HVCFP == pstCapability->pstPPLConfig[i].ePPL) { + bFHVP = AX_TRUE; + break; + } + } + } + + AX_SKEL_Release((AX_VOID *)pstCapability); + if (!bFHVP) { + LOG_M_E(DETECTOR, "%s: SKEL not found FHVP model", __func__); + break; + } + } + + for (AX_U32 nChn = 0; nChn < m_stAttr.nChannelNum; ++nChn) { + /* [4]: create SEKL handle */ + AX_SKEL_HANDLE_PARAM_T stHandleParam; + memset(&stHandleParam, 0, sizeof(stHandleParam)); + stHandleParam.ePPL = (AX_SKEL_PPL_E)m_stAttr.tChnAttr[nChn].nPPL; + stHandleParam.nFrameDepth = m_stAttr.nDepth; + stHandleParam.nFrameCacheDepth = 0; + stHandleParam.nIoDepth = 0; + stHandleParam.nWidth = m_stAttr.nW; + stHandleParam.nHeight = m_stAttr.nH; + if (m_stAttr.tChnAttr[nChn].nVNPU == AX_SKEL_NPU_DEFAULT) { + stHandleParam.nNpuType = AX_SKEL_NPU_DEFAULT; + } else { + stHandleParam.nNpuType = (AX_U32)(1 << (m_stAttr.tChnAttr[nChn].nVNPU - 1)); + } + + AX_SKEL_CONFIG_T stConfig = {0}; + AX_SKEL_CONFIG_ITEM_T stItems[16] = {0}; + AX_U8 itemIndex = 0; + stConfig.nSize = 0; + stConfig.pstItems = &stItems[0]; + + if (!m_stAttr.tChnAttr[nChn].bTrackEnable) { + // track_disable + stConfig.pstItems[itemIndex].pstrType = (AX_CHAR *)"track_disable"; + AX_SKEL_COMMON_THRESHOLD_CONFIG_T stTrackDisableThreshold = {0}; + stTrackDisableThreshold.fValue = 1; + stConfig.pstItems[itemIndex].pstrValue = (AX_VOID *)&stTrackDisableThreshold; + stConfig.pstItems[itemIndex].nValueSize = sizeof(AX_SKEL_COMMON_THRESHOLD_CONFIG_T); + itemIndex++; + } + + // push_disable + stConfig.pstItems[itemIndex].pstrType = (AX_CHAR *)"push_disable"; + AX_SKEL_COMMON_THRESHOLD_CONFIG_T stPushDisableThreshold = {0}; + stPushDisableThreshold.fValue = 1; + stConfig.pstItems[itemIndex].pstrValue = (AX_VOID *)&stPushDisableThreshold; + stConfig.pstItems[itemIndex].nValueSize = sizeof(AX_SKEL_COMMON_THRESHOLD_CONFIG_T); + itemIndex++; + + stConfig.nSize = itemIndex; + stHandleParam.stConfig = stConfig; + + LOG_M_C(DETECTOR, "ppl %d, depth %d, cache depth %d, %dx%d", stHandleParam.ePPL, stHandleParam.nFrameDepth, + stHandleParam.nFrameCacheDepth, stHandleParam.nWidth, stHandleParam.nHeight); + ret = AX_SKEL_Create(&stHandleParam, &m_hSkel[nChn]); + + if (0 != ret || NULL == m_hSkel[nChn]) { + LOG_M_E(DETECTOR, "%s: AX_SKEL_Create() fail, ret = 0x%x", __func__, ret); + break; + } + + /* [5]: register result callback */ + ret = AX_SKEL_RegisterResultCallback(m_hSkel[nChn], SkelResultCallback, this); + if (0 != ret) { + LOG_M_E(DETECTOR, "%s: AX_SKEL_RegisterResultCallback() fail, ret = 0x%x", __func__, ret); + break; + } + } + + LOG_MM_C(DETECTOR, "---"); + return AX_TRUE; + + } while (0); + + DeInitSkel(); + + LOG_MM_C(DETECTOR, "---"); + + return AX_FALSE; +} + +AX_BOOL CDetector::DeInitSkel(AX_VOID) { + LOG_MM_C(DETECTOR, "+++"); + + AX_S32 ret; + if (m_DetectThread.IsRunning()) { + LOG_M_E(DETECTOR, "%s: detect thread is running", __func__); + return AX_FALSE; + } + + LOG_M_C(DETECTOR, "total detect result => body = %lld, vehicle = %lld, plate = %lld, cycle = %d", + CDetectResult::GetInstance()->GetTotalCount(DETECT_TYPE_BODY), CDetectResult::GetInstance()->GetTotalCount(DETECT_TYPE_VEHICLE), + CDetectResult::GetInstance()->GetTotalCount(DETECT_TYPE_PLATE), CDetectResult::GetInstance()->GetTotalCount(DETECT_TYPE_CYCLE)); + + for (AX_U32 nChn = 0; nChn < m_stAttr.nChannelNum; ++nChn) { + if (m_hSkel[nChn]) { + ret = AX_SKEL_Destroy(m_hSkel[nChn]); + if (0 != ret) { + LOG_M_E(DETECTOR, "%s: AX_SKEL_Destroy() fail, ret = 0x%x", __func__, ret); + return AX_FALSE; + } + } + } + + ret = AX_SKEL_DeInit(); + if (0 != ret) { + LOG_M_E(DETECTOR, "%s: AX_SKEL_DeInit() fail, ret = 0x%x", __func__, ret); + return AX_FALSE; + } + + LOG_MM_C(DETECTOR, "---"); + + return AX_TRUE; +} + +AX_BOOL CDetector::Start(AX_VOID) { + LOG_MM_C(DETECTOR, "+++"); + + if (!InitSkel()) { + return AX_FALSE; + } + + if (!m_DetectThread.Start([this](AX_VOID *pArg) -> AX_VOID { RunDetect(pArg); }, this, "AppDetect", SCHED_FIFO, 99)) { + LOG_M_E(DETECTOR, "%s: create detect thread fail", __func__); + return AX_FALSE; + } + + LOG_MM_C(DETECTOR, "---"); + return AX_TRUE; +} + +AX_BOOL CDetector::Stop(AX_VOID) { + LOG_MM_C(DETECTOR, "+++"); + + m_DetectThread.Stop(); + + if (m_arrFrameQ) { + for (AX_U32 i = 0; i < m_stAttr.nGrpCount; ++i) { + m_arrFrameQ[i].Wakeup(); + } + } + + m_DetectThread.Join(); + + if (m_arrFrameQ) { + for (AX_U32 i = 0; i < m_stAttr.nGrpCount; ++i) { + ClearQueue(i); + } + } + + if (!DeInitSkel()) { + return AX_FALSE; + } + + LOG_MM_C(DETECTOR, "---"); + return AX_TRUE; +} + +AX_BOOL CDetector::Clear(AX_VOID) { + if (m_arrFrameQ) { + for (AX_U32 i = 0; i < m_stAttr.nGrpCount; ++i) { + ClearQueue(i); + } + } + + return AX_TRUE; +} + +AX_BOOL CDetector::ThreadSwitchAttr(AI_CARD_AI_SWITCH_ATTR_T &tNewAttr) { + m_stSwitchingAttr = m_stAttr; + strcpy(m_stSwitchingAttr.szModelPath, tNewAttr.szModelPath); + m_stSwitchingAttr.nChannelNum = tNewAttr.nChannelNum; + for (AX_U8 i = 0; i < m_stSwitchingAttr.nChannelNum; i++) { + m_stSwitchingAttr.tChnAttr[i].nPPL = tNewAttr.arrChnParam[i].nPPL; + m_stSwitchingAttr.tChnAttr[i].bTrackEnable = tNewAttr.arrChnParam[i].bTrackEnable; + m_stSwitchingAttr.tChnAttr[i].nVNPU = tNewAttr.arrChnParam[i].nVNPU; + } + + if (!m_bAiSwitching) { + thread t([](CDetector *p) { p->SwitchAiAttr(); }, this); + t.detach(); + } else { + LOG_M_W(DETECTOR, "Last switching is in progress, ignore this time."); + } + + return AX_TRUE; +} + +AX_BOOL CDetector::SwitchAiAttr() { + LOG_MM_C(DETECTOR, "+++"); + + LOG_MM_C(DETECTOR, "============== AI Switch Started =============="); + m_bAiSwitching = AX_TRUE; + + if (!Stop()) { + CPcieAdapter::GetInstance()->SendCtrlResult(0); + LOG_MM_E(DETECTOR, "Stop detector failed when switching alg."); + return AX_FALSE; + } + + if (!Start()) { + CPcieAdapter::GetInstance()->SendCtrlResult(0); + LOG_MM_E(DETECTOR, "Start detector failed when switching alg."); + return AX_FALSE; + } + + CPcieAdapter::GetInstance()->SendCtrlResult(1); + + m_bAiSwitching = AX_FALSE; + LOG_MM_W(DETECTOR, "============== AI Switch Finished =============="); + + LOG_MM_C(DETECTOR, "---"); + return AX_TRUE; +} + +AX_BOOL CDetector::SendFrame(const CAXFrame &axFrame) { + if (m_bSimulateDetRets) { + return AX_TRUE; + } + + if (m_bAiSwitching) { + return AX_TRUE; + } + + if (!m_DetectThread.IsRunning()) { + return AX_TRUE; + } + + LOG_M_I(DETECTOR, "recvfrm vdGrp %d vdChn %d frame %lld pts %lld phy 0x%llx %dx%d stride %d blkId 0x%x", axFrame.nGrp, axFrame.nChn, + axFrame.stFrame.stVFrame.stVFrame.u64SeqNum, axFrame.stFrame.stVFrame.stVFrame.u64PTS, axFrame.stFrame.stVFrame.stVFrame.u64PhyAddr[0], + axFrame.stFrame.stVFrame.stVFrame.u32Width, axFrame.stFrame.stVFrame.stVFrame.u32Height, axFrame.stFrame.stVFrame.stVFrame.u32PicStride[0], + axFrame.stFrame.stVFrame.stVFrame.u32BlkId[0]); + + if (SkipFrame(axFrame)) { + LOG_M_I(DETECTOR, "dropfrm vdGrp %d vdChn %d frame %lld pts %lld phy 0x%llx %dx%d stride %d blkId 0x%x", axFrame.nGrp, axFrame.nChn, + axFrame.stFrame.stVFrame.stVFrame.u64SeqNum, axFrame.stFrame.stVFrame.stVFrame.u64PTS, axFrame.stFrame.stVFrame.stVFrame.u64PhyAddr[0], + axFrame.stFrame.stVFrame.stVFrame.u32Width, axFrame.stFrame.stVFrame.stVFrame.u32Height, axFrame.stFrame.stVFrame.stVFrame.u32PicStride[0], + axFrame.stFrame.stVFrame.stVFrame.u32BlkId[0]); + return AX_TRUE; + } + + axFrame.IncRef(); + + if (!m_arrFrameQ[axFrame.nGrp].Push(axFrame)) { + LOG_M_W(DETECTOR, "%s: push frame %lld to q full", __func__, axFrame.stFrame.stVFrame.stVFrame.u64SeqNum); + axFrame.DecRef(); + } + + return AX_TRUE; +} + +AX_BOOL CDetector::SkipFrame(const CAXFrame &axFrame) { + return (1 == (axFrame.stFrame.stVFrame.stVFrame.u64SeqNum % m_stAttr.nSkipRate)) ? AX_FALSE : AX_TRUE; +} + +AX_VOID CDetector::ClearQueue(AX_S32 nGrp) { + AX_U32 nCount = m_arrFrameQ[nGrp].GetCount(); + if (nCount > 0) { + CAXFrame axFrame; + for (AX_U32 i = 0; i < nCount; ++i) { + if (m_arrFrameQ[nGrp].Pop(axFrame, 0)) { + axFrame.DecRef(); + } + } + } +} diff --git a/app/demo/src/ppl/aicard/slave_ppl/Detector.hpp b/app/demo/src/ppl/aicard/slave_ppl/Detector.hpp new file mode 100644 index 0000000..1eca949 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/Detector.hpp @@ -0,0 +1,104 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include "AXFrame.hpp" +#include "AXLockQ.hpp" +#include "AXResource.hpp" +#include "AXThread.hpp" +#include "PcieAdapter.hpp" +#include "ax_skel_api.h" + +#define DETECTOR_MAX_CHN_NUM 3 + +typedef struct DETECTOR_CHN_ATTR_S { + AX_U32 nPPL; + AX_U32 nVNPU; + AX_BOOL bTrackEnable; + + DETECTOR_CHN_ATTR_S(AX_VOID) { + nPPL = AX_SKEL_PPL_HVCFP; + nVNPU = AX_SKEL_NPU_DEFAULT; + bTrackEnable = AX_FALSE; + } +} DETECTOR_CHN_ATTR_T; + +typedef struct DETECTOR_ATTR_S { + AX_U32 nGrpCount; + AX_S32 nSkipRate; + AX_U32 nW; + AX_U32 nH; + AX_S32 nDepth; + AX_U32 nChannelNum; + DETECTOR_CHN_ATTR_T tChnAttr[DETECTOR_MAX_CHN_NUM]; + AX_CHAR szModelPath[128]; + + DETECTOR_ATTR_S(AX_VOID) { + nGrpCount = 1; + nSkipRate = 1; + nW = 0; + nH = 0; + nDepth = 1; + nChannelNum = 1; + memset(szModelPath, 0, sizeof(szModelPath)); + } +} DETECTOR_ATTR_T; + +typedef struct { + AX_U64 nSeqNum; + AX_S32 nGrpId; + AX_S32 nChnId; + AX_U32 nSkelChn; +} SKEL_FRAME_PRIVATE_DATA_T; + +/** + * @brief + * + */ +class CDetector { +public: + CDetector(AX_VOID) = default; + + AX_BOOL Init(const DETECTOR_ATTR_T& stAttr, AX_BOOL bSimulateDetRets = AX_FALSE); + AX_BOOL DeInit(AX_VOID); + + AX_BOOL InitSkel(); + AX_BOOL DeInitSkel(); + + AX_BOOL Start(AX_VOID); + AX_BOOL Stop(AX_VOID); + AX_BOOL Clear(AX_VOID); + + AX_BOOL ThreadSwitchAttr(AI_CARD_AI_SWITCH_ATTR_T& tNewAttr); + AX_BOOL SendFrame(const CAXFrame& axFrame); + + AX_VOID ReleaseSkelPrivateData(SKEL_FRAME_PRIVATE_DATA_T* pData) { + m_skelData.giveback(pData); + } + +protected: + AX_BOOL SkipFrame(const CAXFrame& axFrame); + AX_VOID RunDetect(AX_VOID* pArg); + AX_VOID ClearQueue(AX_S32 nGrp); + AX_BOOL SwitchAiAttr(); + +protected: + CAXLockQ* m_arrFrameQ{nullptr}; + DETECTOR_ATTR_T m_stAttr; + DETECTOR_ATTR_T m_stSwitchingAttr; + CAXThread m_DetectThread; + AX_BOOL m_bAiSwitching {AX_FALSE}; + AX_SKEL_HANDLE m_hSkel[DETECTOR_MAX_CHN_NUM]{NULL}; + std::mutex m_mtxSkel; + CAXResource m_skelData; + + AX_BOOL m_bSimulateDetRets{AX_FALSE}; +}; diff --git a/app/demo/src/ppl/aicard/slave_ppl/Makefile b/app/demo/src/ppl/aicard/slave_ppl/Makefile new file mode 100644 index 0000000..aa1fab4 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/Makefile @@ -0,0 +1,89 @@ +CUR_PATH := $(shell pwd) +HOME_PATH := $(abspath $(CUR_PATH)/../../../../../..) + +include $(HOME_PATH)/build/color.mk +include $(HOME_PATH)/build/config.mak + +PRJ_OUT_HOME := $(HOME_PATH)/build/out/$(PROJECT) +OBJ_OUT_PATH := $(PRJ_OUT_HOME)/objs +MSP_OUT_PATH := $(HOME_PATH)/msp/out +SRC_PATH := $(CUR_PATH) +LIB_PATH := $(MSP_OUT_PATH)/lib +INC_PATH := $(MSP_OUT_PATH)/include +SRC_RELATIVE_PATH := $(subst $(HOME_PATH)/,,$(SRC_PATH)) +TARGET_OUT_PATH := $(OBJ_OUT_PATH)/$(SRC_RELATIVE_PATH) +ROOTFS_TARGET_PATH := $(MSP_OUT_PATH) +DEMO_SRC_PATH := $(HOME_PATH)/app/demo/src +DEMO_BIN_PATH := $(HOME_PATH)/app/demo/bin/aicard/slave +THIRD_PARTY_PATH := $(HOME_PATH)/third-party + +# output +MOD_NAME := aicard_slave +OUTPUT := $(TARGET_OUT_PATH)/obj + +# source +SRCCPPS := $(wildcard $(SRC_PATH)/*.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/vdec/*.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/log/*.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/pcie/*.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/pool/AXPoolManager.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/utils/ElapsedTimer.cpp) \ + $(wildcard $(DEMO_SRC_PATH)/config/ini/*.cpp) + + +CINCLUDE := -I$(SRC_PATH) \ + -I$(INC_PATH) \ + -I$(DEMO_SRC_PATH)/header \ + -I$(DEMO_SRC_PATH)/vdec \ + -I$(DEMO_SRC_PATH)/vdec/stream \ + -I$(DEMO_SRC_PATH)/option_helper \ + -I$(DEMO_SRC_PATH)/utils \ + -I$(DEMO_SRC_PATH)/log \ + -I$(DEMO_SRC_PATH)/pcie \ + -I$(DEMO_SRC_PATH)/pool \ + -I$(DEMO_SRC_PATH)/config/ini \ + -I$(THIRD_PARTY_PATH)/openssl/include + + + OBJS := $(SRCS:%.c=$(OUTPUT)/%.o) + CPPOBJS := $(SRCCPPS:%.cpp=$(OUTPUT)/%.o) + + DEPS := $(OBJS:%.o=%.d) + CPPDEPS := $(CPPOBJS:%.o=%.d) + +# exec +TARGET := $(TARGET_OUT_PATH)/$(MOD_NAME) + +# build flags +CPPFLAGS := --std=c++11 +CFLAGS := $(CPPFLAGS) -Wall -Wl,-rpath-link=$(LIB_PATH):-L$(THIRD_PARTY_PATH)/openssl/lib +CFLAGS += -DAPP_BUILD_VERSION=\"$(SDK_VERSION)\" + +ifeq ($(debug),yes) +CFLAGS += -O0 -ggdb3 +else +CFLAGS += -O2 +endif + +# dependency +CLIB := -lstdc++ -pthread -lm -lrt +CLIB += -L$(LIB_PATH) +CLIB += -lax_sys +CLIB += -lax_vdec +CLIB += -lax_pcie_dma +CLIB += -lax_pcie_msg +CLIB += -lax_engine +CLIB += -lax_skel +CLIB += -L$(THIRD_PARTY_PATH)/drm/lib -ldrm +CLIB += -L$(THIRD_PARTY_PATH)/openssl/lib -lssl -lcrypto + +# install +INSTALL_TARGET := $(TARGET) +INSTALL_TARGET += $(DEMO_BIN_PATH)/* +INSTALL_DIR := $(ROOTFS_TARGET_PATH)/bin/AiCard/slave + +# link +LINK = $(CC) + +include $(HOME_PATH)/build/rules.mak + diff --git a/app/demo/src/ppl/aicard/slave_ppl/PcieAdapter.cpp b/app/demo/src/ppl/aicard/slave_ppl/PcieAdapter.cpp new file mode 100644 index 0000000..3d11014 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/PcieAdapter.cpp @@ -0,0 +1,192 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "PcieAdapter.hpp" +#include "AppLog.hpp" + +#define TAG "PCIE_ADAPTER" +#define SHARED_PORT_NUMBER (1) + +AX_BOOL CPcieAdapter::Init(AX_U32 nChannelCount, AX_U32 nBufferSize, AX_BOOL bSimulateDetRets /*= AX_FALSE*/, AX_S16 nTraceData, AX_S16 nRetryCount) { + m_vecRecvStreamData.resize(nChannelCount); + m_vecDetectResultData.resize(nChannelCount); + + return CPcieOperator::GetInstance()->Init(AX_FALSE, 1, nChannelCount, nBufferSize, bSimulateDetRets, nTraceData, nRetryCount) == 0 ? AX_TRUE : AX_FALSE; +} + +AX_BOOL CPcieAdapter::DeInit() { + return CPcieOperator::GetInstance()->DeInit() == 0 ? AX_TRUE : AX_FALSE; +} + +AX_BOOL CPcieAdapter::RecvHandShakePacket() { + AX_S32 nSize = CPcieOperator::GetInstance()->Recv(PCIE_CMD_HAND_SHAKE, PCIE_COMMON_MSG_CHANNEL, m_vecRecvStreamData[PCIE_COMMON_MSG_CHANNEL].data, MAX_PCIE_BODY_SIZE, -1); + if (nSize < 0) { + LOG_M_E(TAG, "Recieve handshake packet failed, ret=%d", nSize); + return AX_FALSE; + } + + LOG_M_C(TAG, "Recv handshake packet successfully."); + + return AX_TRUE; +} + +AX_BOOL CPcieAdapter::SendHandShakeFeedback() { + PCIE_DATA_T tFeedbackPacket; + memset(&tFeedbackPacket, 0, sizeof(PCIE_DATA_T)); + + if (!GenProtocalHandShakeFeedback(1, tFeedbackPacket)) { + return AX_FALSE; + } + + AX_S32 nSize = CPcieOperator::GetInstance()->Send((PCIE_CMD_TYPE_E)tFeedbackPacket.tBody.tCtrl.nCmdType, + tFeedbackPacket.tBody.tCtrl.nChannel, + (AX_U8*)&tFeedbackPacket.tBody, + tFeedbackPacket.tBody.tCtrl.nDataLen, + -1); + if (nSize < 0) { + LOG_MM_E(TAG, "Send handshake feedback failed."); + return AX_FALSE; + } else { + LOG_M_C(TAG, "Send handshake feedback packet successfully."); + } + + return AX_TRUE; +} + +AI_CARD_SLV_PCIE_RECV_DATA_T* CPcieAdapter::RecvStream(AX_U32 nChannel, AX_S16 nTimeout /*= -1*/) { + AX_S32 nSize = CPcieOperator::GetInstance()->Recv(PCIE_CMD_H264_DATA_E, nChannel, m_vecRecvStreamData[nChannel].data, MAX_PCIE_BODY_SIZE, nTimeout); + if (nSize <= 0) { + if (-2 != nSize) { + LOG_M_E(TAG, "[%d] Recieve stream failed, ret=%d", nChannel, nSize); + } + return nullptr; + } + + m_vecRecvStreamData[nChannel].nChannel = nChannel; + m_vecRecvStreamData[nChannel].nCmdType = PCIE_CMD_H264_DATA_E; + m_vecRecvStreamData[nChannel].nSize = nSize; + + return &m_vecRecvStreamData[nChannel]; +} + +AI_CARD_SLV_PCIE_RECV_DATA_T* CPcieAdapter::RecvCtrlCommand(AX_S16 nTimeout /*= -1*/) { + AX_S32 nSize = CPcieOperator::GetInstance()->Recv(PCIE_CMD_SWITCH_AI_E, 0, m_vecRecvStreamData[0].data, MAX_PCIE_BODY_SIZE, nTimeout); + if (nSize < 0) { + if (-2 != nSize) { + LOG_M_E(TAG, "Recieve control command failed, ret=%d", nSize); + } + return nullptr; + } + + m_vecRecvStreamData[0].nChannel = PCIE_COMMON_MSG_CHANNEL; + m_vecRecvStreamData[0].nCmdType = PCIE_CMD_SWITCH_AI_E; + m_vecRecvStreamData[0].nSize = nSize; + + return &m_vecRecvStreamData[0]; +} + +AX_BOOL CPcieAdapter::SendDetectResult(AX_U32 nChannel, const DETECT_RESULT_T& tResult, AX_S16 nTimeout /*= -1*/) { + if (!GenProtocalDetectResultData(nChannel, tResult)) { + return AX_FALSE; + } + + PCIE_DATA_T& tChnResult = m_vecDetectResultData[nChannel]; + AX_S32 nSize = CPcieOperator::GetInstance()->Send((PCIE_CMD_TYPE_E)tChnResult.tBody.tCtrl.nCmdType, + tChnResult.tBody.tCtrl.nChannel, + (AX_U8*)&tChnResult.tBody, + tChnResult.tBody.tCtrl.nDataLen, + nTimeout); + + if (nSize < 0) { + LOG_MM_E(TAG, "[%d] Send detect result failed, ret=%d.", nChannel, nSize); + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_BOOL CPcieAdapter::SendCtrlResult(AX_S32 nResult, AX_S16 nTimeout /*= -1*/) { + if (!GenProtocalCtrlResultData(nResult)) { + return AX_FALSE; + } + + AX_S32 nSize = CPcieOperator::GetInstance()->Send((PCIE_CMD_TYPE_E)m_tCtrlResultData.tBody.tCtrl.nCmdType, + m_tCtrlResultData.tBody.tCtrl.nChannel, + (AX_U8*)&m_tCtrlResultData.tBody, + m_tCtrlResultData.tBody.tCtrl.nDataLen, + nTimeout); + if (nSize < 0) { + LOG_MM_E(TAG, "Send control command result failed, ret=%d.", nSize); + return AX_FALSE; + } else { + LOG_B(&m_tCtrlResultData.tBody, m_tCtrlResultData.tBody.tCtrl.nDataLen + 16, APP_LOG_ASYN_SEND); + } + + return AX_TRUE; +} + +AX_BOOL CPcieAdapter::GenProtocalDetectResultData(AX_U32 nChannel, const DETECT_RESULT_T& tResult) { + memset(&m_vecDetectResultData[nChannel], 0, sizeof(PCIE_DATA_T)); + + m_vecDetectResultData[nChannel].tBody.tCtrl.nSn = 0; + m_vecDetectResultData[nChannel].tBody.tCtrl.nCmdType = PCIE_CMD_AI_RESULT_E; + m_vecDetectResultData[nChannel].tBody.tCtrl.nChannel = nChannel; + m_vecDetectResultData[nChannel].tBody.tCtrl.nDataLen = sizeof(DETECT_RESULT_T); + memcpy(&m_vecDetectResultData[nChannel].tBody.body, &tResult, sizeof(DETECT_RESULT_T)); + + return AX_TRUE; +} + +AX_BOOL CPcieAdapter::GenProtocalCtrlResultData(AX_S32 nResult) { + memset(&m_tCtrlResultData, 0, sizeof(PCIE_DATA_T)); + + m_tCtrlResultData.tBody.tCtrl.nSn = 0; + m_tCtrlResultData.tBody.tCtrl.nCmdType = PCIE_CMD_SWITCH_AI_E; + m_tCtrlResultData.tBody.tCtrl.nChannel = PCIE_COMMON_MSG_CHANNEL; + m_tCtrlResultData.tBody.tCtrl.nDataLen = sizeof(AX_S32); + memcpy(&m_tCtrlResultData.tBody.body, &nResult, sizeof(AX_S32)); + + return AX_TRUE; +} + +AX_BOOL CPcieAdapter::GenProtocalHandShakeFeedback(AX_S32 nResult, PCIE_DATA_T &tOutPacket) { + memset(&tOutPacket, 0, sizeof(PCIE_DATA_T)); + + tOutPacket.tBody.tCtrl.nSn = 0; + tOutPacket.tBody.tCtrl.nCmdType = PCIE_CMD_HAND_SHAKE; + tOutPacket.tBody.tCtrl.nChannel = PCIE_COMMON_MSG_CHANNEL; + tOutPacket.tBody.tCtrl.nDataLen = sizeof(AX_S32); + memcpy(&tOutPacket.tBody.body, &nResult, sizeof(AX_S32)); + + return AX_TRUE; +} + + +AX_U8 CPcieAdapter::CheckSum8(AX_U8* pData, AX_U32 nSize) { + AX_U16 nSum = 0; + for (AX_U32 i = 0; i < nSize; i++){ + nSum += pData[i]; + } + + return (AX_U8)(nSum & 0x00FF); +} + +AX_BOOL CPcieAdapter::CheckData(AX_U8* pData) { + if (nullptr == pData) { + return AX_FALSE; + } + + PCIE_DATA_T* pRecvData = (PCIE_DATA_T*)pData; + if (pRecvData->tBody.tCtrl.nCheckSum != CheckSum8((AX_U8 *)&pRecvData->tBody.tCtrl, sizeof(pRecvData->tBody.tCtrl) - 2)) { + return AX_FALSE; + } + + return AX_TRUE; +} \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/slave_ppl/PcieAdapter.hpp b/app/demo/src/ppl/aicard/slave_ppl/PcieAdapter.hpp new file mode 100644 index 0000000..00baf16 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/PcieAdapter.hpp @@ -0,0 +1,73 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "ax_global_type.h" +#include "AXThread.hpp" +#include "AXSingleton.h" +#include "DetectResult.hpp" +#include "PcieOperator.hpp" +#include + +#define PCIE_COMMON_MSG_CHANNEL (0) + +typedef struct { + AX_U32 nPPL {0}; + AX_U32 nVNPU {0}; + AX_BOOL bTrackEnable {AX_FALSE}; +} AI_CARD_AI_SWITCH_DET_CHN_PARAM_T; + +typedef struct { + AX_CHAR szModelPath[128] {0}; + AX_S32 nChannelNum {0}; + AI_CARD_AI_SWITCH_DET_CHN_PARAM_T arrChnParam[3]; +} AI_CARD_AI_SWITCH_ATTR_T; + +typedef struct { + AX_U8 nChannel; + AX_U8 nCmdType; + AX_U8 data[MAX_PCIE_BODY_SIZE]; + AX_U32 nSize; +} AI_CARD_SLV_PCIE_RECV_DATA_T; + +class CPcieAdapter : public CAXSingleton { + friend class CAXSingleton; +public: + CPcieAdapter(AX_VOID) = default; + virtual ~CPcieAdapter(AX_VOID) = default; + + AX_BOOL Init(AX_U32 nChannelCount, AX_U32 nBufferSize, AX_BOOL bSimulateDetRets = AX_FALSE, AX_S16 nTraceData = 0, AX_S16 nRetryCount = 1); + AX_BOOL DeInit(); + + AX_BOOL RecvHandShakePacket(); + AX_BOOL SendHandShakeFeedback(); + + AI_CARD_SLV_PCIE_RECV_DATA_T* RecvStream(AX_U32 nChannel, AX_S16 nTimeout = -1); + AI_CARD_SLV_PCIE_RECV_DATA_T* RecvCtrlCommand(AX_S16 nTimeout = -1); + + AX_BOOL SendDetectResult(AX_U32 nChannel, const DETECT_RESULT_T& tResult, AX_S16 nTimeout = -1); + AX_BOOL SendCtrlResult(AX_S32 nResult, AX_S16 nTimeout = -1); + +private: + AX_BOOL GenProtocalHandShakeFeedback(AX_S32 nResult, PCIE_DATA_T &tOutPacket); + AX_BOOL GenProtocalDetectResultData(AX_U32 nChannel, const DETECT_RESULT_T& tResult); + AX_BOOL GenProtocalCtrlResultData(AX_S32 nResult); + AX_U8 CheckSum8(AX_U8* pData, AX_U32 nSize); + AX_BOOL CheckData(AX_U8* pData); + +private: + std::vector m_vecDetectResultData; + PCIE_DATA_T m_tCtrlResultData; + + std::vector m_vecRecvStreamData; + + AX_BOOL m_bAiSwitching {AX_FALSE}; +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/slave_ppl/PcieOperator.cpp b/app/demo/src/ppl/aicard/slave_ppl/PcieOperator.cpp new file mode 100644 index 0000000..6808d3f --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/PcieOperator.cpp @@ -0,0 +1,68 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "PcieOperator.hpp" +#include "AppLog.hpp" +#include "PrintHelper.hpp" +#include "ElapsedTimer.hpp" + +AX_S32 CPcieOperator::Init(AX_BOOL bMaster, AX_U16 nSlaveCount, AX_U16 nChannelNum, AX_U32 nDmaBufferSize, AX_BOOL bSimulateDetRets /*= AX_FALSE*/, AX_S16 nTraceData, AX_S16 nRetryCount) { + m_bSimulateDetRets = bSimulateDetRets; + return PCIe_Init(bMaster, nSlaveCount, nChannelNum, nDmaBufferSize, nTraceData, nRetryCount); +} + +AX_S32 CPcieOperator::DeInit() { + return PCIe_DeInit(); +} + +AX_S32 CPcieOperator::Send(PCIE_CMD_TYPE_E nCmdType, AX_S16 nChannel, AX_U8* pDataBuf, AX_U32 nSize, AX_S16 nTimeout /*= -1*/) { + LOG_M_D("PcieOpr", "[SLV][%d][SEND] size: %d", nChannel, nSize); + AX_S32 nSendSize = PCIe_Send(nCmdType, 0, nChannel, pDataBuf, nSize, nTimeout); + if (nSendSize > 0) { + CPrintHelper::GetInstance()->Add(E_PH_MOD_PCIE_SEND, nChannel); + } + + return nSendSize; +} + +AX_S32 CPcieOperator::Recv(PCIE_CMD_TYPE_E nCmdType, AX_S16 nChannel, AX_U8* pDataBuf, AX_U32 nSize, AX_S16 nTimeout /*= -1*/) { + AX_S32 nRecvSize = PCIe_Recv(nCmdType, 0, nChannel, pDataBuf, nSize, nTimeout); + LOG_M_D("PcieOpr", "[SLV][%d][RECV] size: %d", nChannel, nRecvSize); + if (nRecvSize > 0) { + CPrintHelper::GetInstance()->Add(E_PH_MOD_PCIE_RECV, nChannel); + + if (m_bSimulateDetRets && (PCIE_CMD_H264_DATA_E == nCmdType || PCIE_CMD_H265_DATA_E == nCmdType)) { + CElapsedTimer::GetInstance()->mSleep(2); + DETECT_RESULT_T tResult; + GenSimulateResult(nChannel, tResult); + CDetectResult::GetInstance()->Set(nChannel - 1, tResult); + } + } + + return nRecvSize; +} + +AX_VOID CPcieOperator::GenSimulateResult(AX_S16 nChannel, DETECT_RESULT_T& tResult) { + static AX_U32 s_nSeq = 0; + static AX_U32 s_nResultCount = 1; + + tResult.nCount = s_nResultCount++ % 10 + 1; + for (AX_U32 i = 0; i < tResult.nCount; i++) { + tResult.item[i].eType = (DETECT_TYPE_E)(rand() % DETECT_TYPE_BUTT); + tResult.item[i].tBox.fX = rand() % (1920 - 200); + tResult.item[i].tBox.fY = rand() % (1080 - 200); + tResult.item[i].tBox.fW = 100; + tResult.item[i].tBox.fH = 100; + } + tResult.nGrpId = (nChannel - 1); + tResult.nW = 1920; + tResult.nH = 1080; + tResult.nSeqNum = s_nSeq++; +} \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/slave_ppl/PcieOperator.hpp b/app/demo/src/ppl/aicard/slave_ppl/PcieOperator.hpp new file mode 100644 index 0000000..152e735 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/PcieOperator.hpp @@ -0,0 +1,48 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "AXSingleton.h" +#include "DetectResult.hpp" +#include "pcie_api.h" + +#define PACKED(x) __attribute__((aligned(x), packed)) +#define MAX_PCIE_BODY_SIZE (622080) + + +typedef struct { + PCIE_CMD_MSG_HEAD_T tCtrl; + AX_U8 body[MAX_PCIE_BODY_SIZE]; +} PCIE_BODY_T; + +typedef struct { + PCIE_BODY_T tBody; +} PCIE_DATA_T; + +class CPcieOperator : public CAXSingleton { + friend class CAXSingleton; + +public: + CPcieOperator(AX_VOID) = default; + ~CPcieOperator(AX_VOID) = default; + + AX_S32 Init(AX_BOOL bMaster, AX_U16 nSlaveCount, AX_U16 nChannelNum, AX_U32 nDmaBufferSize, AX_BOOL bSimulateDetRets = AX_FALSE, AX_S16 nTraceData = 0, AX_S16 nRetryCount = 1); + AX_S32 DeInit(); + AX_S32 Send(PCIE_CMD_TYPE_E nCmdType, AX_S16 nChannel, AX_U8* pDataBuf, AX_U32 nSize, AX_S16 nTimeout = -1); + AX_S32 Recv(PCIE_CMD_TYPE_E nCmdType, AX_S16 nChannel, AX_U8* pDataBuf, AX_U32 nSize, AX_S16 nTimeout = -1); + +private: + AX_VOID GenSimulateResult(AX_S16 nChannel, DETECT_RESULT_T& tResult); + +private: + AX_BOOL m_bSimulateDetRets; + +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/slave_ppl/PrintHelper.cpp b/app/demo/src/ppl/aicard/slave_ppl/PrintHelper.cpp new file mode 100644 index 0000000..8f5ac9d --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/PrintHelper.cpp @@ -0,0 +1,90 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "PrintHelper.hpp" +#include "ElapsedTimer.hpp" +#include "OptionHelper.h" + +#define PRINT_HELPER "PRINT" + + +AX_VOID CPrintHelper::PrintThreadFunc(CPrintHelper* pCaller) { + prctl(PR_SET_NAME, "FRTDemo_PRINT"); + + CPrintHelper* pThis = (CPrintHelper*)pCaller; + pThis->m_nTickStart = CElapsedTimer::GetInstance()->GetTickCount(); + + while (pThis->m_bPrintThreadWorking) { + if (!pThis->m_bEnableStart) { + pThis->m_nTickStart = CElapsedTimer::GetInstance()->GetTickCount(); + CElapsedTimer::GetInstance()->mSleep(100); + continue; + } + + pThis->m_nTickEnd = CElapsedTimer::GetInstance()->GetTickCount(); + if ((pThis->m_nTickEnd - pThis->m_nTickStart) >= PRINT_INTERVAL * 1000) { + m_tPcieRecv.Print(); + m_tPcieSend.Print(); + + pThis->m_nTickStart = pThis->m_nTickEnd; + } + + CElapsedTimer::GetInstance()->mSleep(1000); + } +} + +AX_VOID CPrintHelper::Start() { + LOG_M_I(PRINT_HELPER, "+++"); + + m_bPrintThreadWorking = AX_TRUE; + m_hPrintThread = std::thread(&CPrintHelper::PrintThreadFunc, this, this); + + LOG_M_I(PRINT_HELPER, "---"); +} + +AX_VOID CPrintHelper::Stop() { + LOG_M_I(PRINT_HELPER, "+++"); + + if (m_bPrintThreadWorking) { + m_bPrintThreadWorking = AX_FALSE; + } + + if (m_hPrintThread.joinable()) { + m_hPrintThread.join(); + } + + m_bEnableStart = AX_FALSE; + m_nTickStart = 0; + m_nTickEnd = 0; + m_tPcieSend.ClearAll(); + m_tPcieRecv.ClearAll(); + + LOG_M_I(PRINT_HELPER, "---"); +} + +AX_VOID CPrintHelper::Add(PRINT_HELPER_MOD_E eModType, AX_U32 nChn) { + if (!m_hPrintThread.joinable()) { + return; + } + + m_bEnableStart = AX_TRUE; + switch (eModType) { + case E_PH_MOD_PCIE_RECV: + m_tPcieRecv.Add(nChn); + break; + case E_PH_MOD_PCIE_SEND: + m_tPcieSend.Add(nChn); + break; + case E_PH_MOD_VDEC: + break; + default: + break; + } +} diff --git a/app/demo/src/ppl/aicard/slave_ppl/PrintHelper.hpp b/app/demo/src/ppl/aicard/slave_ppl/PrintHelper.hpp new file mode 100644 index 0000000..88787f3 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/PrintHelper.hpp @@ -0,0 +1,105 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "GlobalDef.h" +#include "AppLogApi.h" +#include "AXSingleton.h" +#include "AXThread.hpp" +#include "OptionHelper.h" +#include "ElapsedTimer.hpp" + +#define PRINT_INTERVAL (10) +#define MAX_CHANNEL_NUM (64) + +typedef enum _PRINT_HELPER_MOD_E +{ + E_PH_MOD_PCIE_RECV = 0, + E_PH_MOD_PCIE_SEND, + E_PH_MOD_VDEC, + E_PH_MOD_MAX +} PRINT_HELPER_MOD_E; + +typedef struct _PCIE_PRINT_INFO_T +{ + AX_U32 nPcieTargetFPS[MAX_CHANNEL_NUM]; + AX_U32 nPcieReceivedPackets[MAX_CHANNEL_NUM]; + AX_U32 nPciePeriodPackets[MAX_CHANNEL_NUM]; + AX_CHAR szName[64]; + + _PCIE_PRINT_INFO_T(const AX_CHAR* szModName) { + memset(this, 0, sizeof(_PCIE_PRINT_INFO_T)); + strcpy(szName, szModName); + } + + AX_VOID Init(AX_U32 nChn, AX_U32 nTargetFPS) { + nPcieTargetFPS[nChn] = nTargetFPS; + } + + AX_VOID Add(AX_U32 nChn) { + if (nChn < 0 || nChn >= MAX_CHANNEL_NUM) { + return; + } + + nPciePeriodPackets[nChn]++; + nPcieReceivedPackets[nChn]++; + } + + AX_VOID ClearAll() { + memset(this, 0, sizeof(_PCIE_PRINT_INFO_T)); + } + + AX_VOID Print() { + for (AX_U32 i = 0; i < MAX_CHANNEL_NUM; i++) { + if (nPciePeriodPackets[i] > 0) { + LOG_M_C(szName, "[%d] fps %5.2f, recv %d", + i, + nPciePeriodPackets[i] * 1.0 / PRINT_INTERVAL, + nPcieReceivedPackets[i]); + + nPciePeriodPackets[i] = 0; + } + } + } + +} PCIE_PRINT_INFO_T; + + +/** + * (frame)statistics info printer + */ +class CPrintHelper final : public CAXSingleton { + friend class CAXSingleton; + +public: + AX_VOID Start(); + AX_VOID Stop(); + AX_VOID Add(PRINT_HELPER_MOD_E eModType, AX_U32 nChn); + +private: + CPrintHelper(AX_VOID) = default; + ~CPrintHelper(AX_VOID) = default; + +protected: + AX_VOID PrintThreadFunc(CPrintHelper* pCaller); + +private: + AX_BOOL m_bEnableStart {AX_FALSE}; + AX_U64 m_nTickStart {0}; + AX_U64 m_nTickEnd {0}; + + std::thread m_hPrintThread; + AX_BOOL m_bPrintThreadWorking {AX_FALSE}; + + /* statistics info (pending) */ + PCIE_PRINT_INFO_T m_tPcieSend {"PCIE_SEND"}; + PCIE_PRINT_INFO_T m_tPcieRecv {"PCIE_RECV"}; +}; diff --git a/app/demo/src/ppl/aicard/slave_ppl/TransferHelper.cpp b/app/demo/src/ppl/aicard/slave_ppl/TransferHelper.cpp new file mode 100644 index 0000000..5e480e4 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/TransferHelper.cpp @@ -0,0 +1,277 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "TransferHelper.hpp" +#include +#include "AppLog.hpp" +#include "ElapsedTimer.hpp" +#include "CommonDef.h" + +#define CTRL_COMMAND_CHANNEL (0) +#define TRANSFER "TRANSFER" +using namespace std; + +/** + * Stream & Ctrl command recieve thread + */ +AX_VOID CTransferHelper::RecvThread(AX_VOID* pArg) { + std::tuple* pParams = (std::tuple*)pArg; + AX_U32 nIndex = std::get<0>(*pParams); + AX_U32 nChannel = std::get<1>(*pParams); + + LOG_MM_I(TRANSFER, "[%d][%d] +++", nIndex, nChannel); + + while (m_vecThreadRecv[nIndex]->IsRunning()) { + AI_CARD_SLV_PCIE_RECV_DATA_T* pResult = nullptr; + if (0 == nChannel) { + pResult = CPcieAdapter::GetInstance()->RecvCtrlCommand(m_tInitAttr.nRecvTimeout); + } else { + pResult = CPcieAdapter::GetInstance()->RecvStream(nChannel, m_tInitAttr.nRecvTimeout); + } + + if (nullptr == pResult) { + CElapsedTimer::GetInstance()->mSleep(1); + continue; + } + + AX_U8* pDataStart = nullptr; + AX_U32 nDataSize = 0; + AICARD_SLAVE_RECV_DATA_TYPE_E eDataType = RECV_DATA_TYPE_MAX; + pDataStart = pResult->data + sizeof(PCIE_CMD_MSG_HEAD_T); + nDataSize = pResult->nSize - sizeof(PCIE_CMD_MSG_HEAD_T); + if (0 == nChannel) { + eDataType = RECV_DATA_TYPE_CTRL; + } else { + eDataType = RECV_DATA_TYPE_STREAM; + } + + CAXRingElement ele(pDataStart, nDataSize, 0, AX_TRUE); + m_mapRecvData[nChannel].eDataType = eDataType; + m_mapRecvData[nChannel].nChannel = nChannel; + if (!m_mapRecvData[nChannel].pRingBuffer->Put(ele)) { + LOG_M_D(TRANSFER, "[%d] Put video data(len=%d) into ringbuf full", nChannel, nDataSize); + } + + CElapsedTimer::GetInstance()->mSleep(1); + } + + LOG_MM_I(TRANSFER, "[%d][%d] ---", nIndex, nChannel); +} + +/** + * Detector results send thread + */ +AX_VOID CTransferHelper::SendThread(AX_VOID* pArg) { + std::tuple* pParams = (std::tuple*)pArg; + AX_U32 nIndex = std::get<0>(*pParams); + AX_U32 nChannel = std::get<1>(*pParams); + + LOG_MM_I(TRANSFER, "[%d][%d] +++", nIndex, nChannel); + + DETECT_RESULT_T fhvp; + while (m_vecThreadSend[nIndex]->IsRunning()) { + if (CDetectResult::GetInstance()->Pop(nIndex - 1, fhvp)) { + CPcieAdapter::GetInstance()->SendDetectResult(nChannel, fhvp, m_tInitAttr.nSendTimeout); + CElapsedTimer::GetInstance()->mSleep(1); + continue; + } + + CElapsedTimer::GetInstance()->mSleep(1); + } + + LOG_MM_I(TRANSFER, "[%d][%d] ---", nIndex, nChannel); +} + +/** + * Stream & Ctrl command dispatch (to vdec or NPU) thread + */ +AX_VOID CTransferHelper::DispatchThread(AX_VOID* pArg) { + std::tuple* pParams = (std::tuple*)pArg; + AX_U32 nIndex = std::get<0>(*pParams); + AX_U32 nChannel = std::get<1>(*pParams); + + LOG_MM_I(TRANSFER, "[%d][%d] +++", nIndex, nChannel); + + while (m_vecThreadDispatch[nIndex]->IsRunning()) { + if (m_mapRecvData[nChannel].pRingBuffer->IsEmpty()) { + CElapsedTimer::GetInstance()->mSleep(1); + continue; + } + + CAXRingElement* pData = m_mapRecvData[nChannel].pRingBuffer->Get(); + if (nullptr == pData) { + continue; + } + + if (RECV_DATA_TYPE_STREAM == m_mapRecvData[nChannel].eDataType) { + if (m_pVdecObserver) { + /* Stream channels start with 1 */ + LOG_MM_D(TRANSFER, "[%d] Transfer stream to vdec, size=%d.", nChannel - SHARED_PORT_NUMBER, pData->nSize); + m_pVdecObserver->OnRecvVideoData(nChannel - SHARED_PORT_NUMBER, pData->pBuf, pData->nSize, pData->nPts); + } + } else if (RECV_DATA_TYPE_CTRL == m_mapRecvData[nChannel].eDataType) { + for (auto& obs : m_vecCtrlObservers) { + LOG_MM_D(TRANSFER, "[%d] Transfer ctrl command to detector, size=%d.", nChannel, pData->nSize); + obs->OnRecvData(E_OBS_TARGET_TYPE_AICARD_TRANSFER, 0, nChannel, pData->pBuf); + } + } + + m_mapRecvData[nChannel].pRingBuffer->Pop(); + + CElapsedTimer::GetInstance()->mSleep(1); + } + + LOG_MM_I(TRANSFER, "[%d][%d] ---", nIndex, nChannel); +} + +AX_BOOL CTransferHelper::Init(const TRANSFER_ATTR_T& stAttr) { + LOG_MM_I(TRANSFER, "+++"); + + m_tInitAttr = stAttr; + AX_U32 nDataChannelCount = stAttr.nMaxVideoCount * 2/* send + recv */; + + if (!CPcieAdapter::GetInstance()->Init(nDataChannelCount + SHARED_PORT_NUMBER, stAttr.nBuffSize * 1024, stAttr.bEnableSimulateDetRets, stAttr.nTraceData, stAttr.nRetryCount)) { + return AX_FALSE; + } + + for (AX_U8 i = 0; i < stAttr.nMaxVideoCount + SHARED_PORT_NUMBER; i++) { + // TODO: Not distinguish from stream and control command now + m_mapRecvData[i].pRingBuffer = new CAXRingBuffer(stAttr.nBuffSize * 1024, stAttr.nBuffCount); + + m_vecThreadRecv.push_back(new CAXThread()); + m_vecThreadDispatch.push_back(new CAXThread()); + m_vecThreadSend.push_back(new CAXThread()); + + m_mapRecvThreadParams[i] = make_tuple(i, i); + m_mapDispThreadParams[i] = make_tuple(i, i); + m_mapSendThreadParams[i] = make_tuple(i, (i < SHARED_PORT_NUMBER ? i : i + stAttr.nMaxVideoCount)); + } + + if (!HandShake()) { + return AX_FALSE; + } + + LOG_MM_I(TRANSFER, "---"); + return AX_TRUE; +} + +AX_BOOL CTransferHelper::DeInit(AX_VOID) { + LOG_MM_I(TRANSFER, "+++"); + + for (auto& m : m_vecThreadSend) { + if (m->IsRunning()) { + LOG_MM_E(TRANSFER, "Send thread is still running."); + return AX_FALSE; + } + delete(m); + m = nullptr; + } + + for (auto& m : m_vecThreadRecv) { + if (m->IsRunning()) { + LOG_MM_E(TRANSFER, "Recv thread is still running."); + return AX_FALSE; + } + delete(m); + m = nullptr; + } + + for (auto& m : m_vecThreadDispatch) { + if (m->IsRunning()) { + LOG_MM_E(TRANSFER, "Dispatch thread is still running."); + return AX_FALSE; + } + delete(m); + m = nullptr; + } + + LOG_MM_I(TRANSFER, "---"); + return AX_TRUE; +} + +AX_BOOL CTransferHelper::Start(AX_VOID) { + LOG_MM_I(TRANSFER, "+++"); + + AX_U32 nVideoCount = m_tInitAttr.nMaxVideoCount; + for (AX_U8 i = 0; i < nVideoCount + SHARED_PORT_NUMBER; i++) { + if (!m_vecThreadDispatch[i]->Start([this](AX_VOID* pArg) -> AX_VOID { DispatchThread(pArg); }, &m_mapDispThreadParams[i], "ACTransDisp")) { + LOG_MM_E(TRANSFER, "[%d] Create dispatch thread failed.", i); + return AX_FALSE; + } + } + + for (AX_U8 i = 0; i < nVideoCount + SHARED_PORT_NUMBER; i++) { + if (!m_vecThreadRecv[i]->Start([this](AX_VOID* pArg) -> AX_VOID { RecvThread(pArg); }, &m_mapRecvThreadParams[i], "ACTransRecv")) { + LOG_MM_E(TRANSFER, "Create receive thread failed."); + return AX_FALSE; + } + } + + for (AX_U8 i = 0; i < nVideoCount + SHARED_PORT_NUMBER; i++) { + if (!m_vecThreadSend[i]->Start([this](AX_VOID* pArg) -> AX_VOID { SendThread(pArg); }, &m_mapSendThreadParams[i], "ACTransSend")) { + LOG_MM_E(TRANSFER, "Create send thread failed."); + return AX_FALSE; + } + } + + LOG_MM_I(TRANSFER, "---"); + return AX_TRUE; +} + +AX_BOOL CTransferHelper::Stop(AX_VOID) { + LOG_MM_I(TRANSFER, "+++"); + + for (auto& m : m_vecThreadSend) { + m->Stop(); + } + + for (auto& m : m_vecThreadDispatch) { + m->Stop(); + } + + for (auto& m : m_vecThreadRecv) { + m->Stop(); + } + + CPcieAdapter::GetInstance()->DeInit(); + + for (auto& m : m_vecThreadSend) { + m->Join(); + } + + for (auto& m : m_vecThreadDispatch) { + m->Join(); + } + + for (auto& m : m_vecThreadRecv) { + m->Join(); + } + + LOG_MM_I(TRANSFER, "---"); + return AX_TRUE; +} + +AX_BOOL CTransferHelper::RegStreamObserver(IStreamObserver* pObs) { + m_pVdecObserver = pObs; + return AX_TRUE; +} + +AX_BOOL CTransferHelper::RegCommandObserver(IObserver* pObs) { + m_vecCtrlObservers.push_back(pObs); + return AX_TRUE; +} + +AX_BOOL CTransferHelper::HandShake(AX_VOID) { + if (CPcieAdapter::GetInstance()->RecvHandShakePacket()) { + return CPcieAdapter::GetInstance()->SendHandShakeFeedback(); + } + + return AX_FALSE; +} diff --git a/app/demo/src/ppl/aicard/slave_ppl/TransferHelper.hpp b/app/demo/src/ppl/aicard/slave_ppl/TransferHelper.hpp new file mode 100644 index 0000000..b5bead3 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/TransferHelper.hpp @@ -0,0 +1,88 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "ax_global_type.h" +#include "AXThread.hpp" +#include "IObserver.h" +#include "AXRingBuffer.h" +#include "PcieAdapter.hpp" +#include +#include "IStreamHandler.hpp" + + +typedef enum { + RECV_DATA_TYPE_STREAM, + RECV_DATA_TYPE_CTRL, + RECV_DATA_TYPE_MAX +} AICARD_SLAVE_RECV_DATA_TYPE_E; + +typedef struct _TRANSFER_ATTR { + AX_U8 nMaxVideoCount {0}; + AX_U8 nBuffCount {2}; + AX_S16 nBuffSize {600}; + AX_S16 nSendTimeout {-1}; + AX_S16 nRecvTimeout {-1}; + AX_BOOL bEnableSimulateDetRets {AX_FALSE}; + AX_S16 nTraceData {0}; + AX_S16 nRetryCount {1}; +} TRANSFER_ATTR_T; + +typedef struct _TRANSFER_RECV_DATA { + AICARD_SLAVE_RECV_DATA_TYPE_E eDataType; + AX_U8 nChannel; + CAXRingBuffer* pRingBuffer {nullptr}; + _TRANSFER_RECV_DATA() { + memset(this, 0, sizeof(_TRANSFER_RECV_DATA)); + } + ~_TRANSFER_RECV_DATA() { + if (pRingBuffer) { + delete pRingBuffer; + pRingBuffer = nullptr; + } + } +} TRANSFER_RECV_DATA_T; + +class CTransferHelper { +public: + CTransferHelper(AX_VOID) = default; + virtual ~CTransferHelper(AX_VOID) = default; + + AX_BOOL Init(const TRANSFER_ATTR_T& stAttr); + AX_BOOL DeInit(AX_VOID); + + AX_BOOL Start(AX_VOID); + AX_BOOL Stop(AX_VOID); + + AX_BOOL RegStreamObserver(IStreamObserver* pObs); + AX_BOOL RegCommandObserver(IObserver* pObs); + +protected: + AX_VOID RecvThread(AX_VOID* pArg); + AX_BOOL HandShake(AX_VOID); + AX_VOID SendThread(AX_VOID* pArg); + AX_VOID DispatchThread(AX_VOID* pArg); + +protected: + TRANSFER_ATTR_T m_tInitAttr; + std::map m_mapRecvData; + std::vector m_vecThreadRecv; + std::vector m_vecThreadSend; + std::vector m_vecThreadDispatch; + + std::map> m_mapRecvThreadParams; + std::map> m_mapSendThreadParams; + std::map> m_mapDispThreadParams; + + IStreamObserver* m_pVdecObserver; + //IObserver* m_pDetectorObserver; + std::vector m_vecCtrlObservers; +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/slave_ppl/VdecCtrlObserver.hpp b/app/demo/src/ppl/aicard/slave_ppl/VdecCtrlObserver.hpp new file mode 100644 index 0000000..b302018 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/VdecCtrlObserver.hpp @@ -0,0 +1,58 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include +#include +#include "AXFrame.hpp" +#include "IObserver.h" +#include "VideoDecoder.hpp" +#include "CommonDef.h" + +/** + * @brief + * + */ +class CVdecCtrlObserver final : public IObserver { +public: + CVdecCtrlObserver(CVideoDecoder* pSink, AX_BOOL bEnableReset) noexcept : m_pSink(pSink), m_bEnableReset(bEnableReset){}; + virtual ~CVdecCtrlObserver(AX_VOID) = default; + + AX_BOOL OnRecvData(OBS_TARGET_TYPE_E eTarget, AX_U32 nGrp, AX_U32 nChn, AX_VOID* pData) override { + if (m_bEnableReset && (E_OBS_TARGET_TYPE_AICARD_TRANSFER == eTarget)) { + std::vector vecGrpAttr; + if (m_pSink->GetAllGrpAttr(vecGrpAttr)) { + m_pSink->Stop(); + m_pSink->DeInit(); + m_pSink->Init(vecGrpAttr); + for (AX_U32 i = 0; i < vecGrpAttr.size(); i++) { + m_pSink->AttachPool(i, VDEC_CHN1, m_mapChnToPool[i]); + } + + m_pSink->Start(); + } + } + + return AX_TRUE; + } + + AX_BOOL OnRegisterObserver(OBS_TARGET_TYPE_E eTarget, AX_U32 nGrp, AX_U32 nChn, OBS_TRANS_ATTR_PTR pParams) override { + return AX_TRUE; + } + + AX_VOID SetPool(AX_VDEC_GRP vdGrp, AX_VDEC_CHN nChn, AX_POOL pool) { + m_mapChnToPool[vdGrp] = pool; + } + +private: + CVideoDecoder* m_pSink; + AX_BOOL m_bEnableReset{AX_FALSE}; + std::map m_mapChnToPool{}; +}; \ No newline at end of file diff --git a/app/demo/src/ppl/aicard/slave_ppl/main.cpp b/app/demo/src/ppl/aicard/slave_ppl/main.cpp new file mode 100644 index 0000000..c73f838 --- /dev/null +++ b/app/demo/src/ppl/aicard/slave_ppl/main.cpp @@ -0,0 +1,93 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "AppLogApi.h" +#include "AiCardSlvBuilder.hpp" +#include "ElapsedTimer.hpp" +#include "GlobalDef.h" +#include "make_unique.hpp" + +static bool gIsRunning = false; + +static int gExitCount = 0; +static void exit_handler(int s) { + printf("\n====================== Caught signal: %d ======================\n", s); + printf("please waiting to quit ...\n\n"); + gIsRunning = false; + gExitCount++; + if (gExitCount >= 3) { + printf("\n====================== Force to exit ====================== \n"); + _exit(1); + } +} + +static void ignore_sig_pipe(void) { + struct sigaction sa; + sa.sa_handler = SIG_IGN; + sa.sa_flags = 0; + if (sigemptyset(&sa.sa_mask) == -1 || sigaction(SIGPIPE, &sa, 0) == -1) { + perror("failed to ignore SIGPIPE, sigaction"); + exit(EXIT_FAILURE); + } +} + +int main(int argc, char const *argv[]) { + signal(SIGINT, exit_handler); + signal(SIGQUIT, exit_handler); + signal(SIGTERM, exit_handler); + ignore_sig_pipe(); + + AX_MTRACE_ENTER(AiCardMaster); + + printf("ENTER main\n"); + //mallopt(M_MMAP_MAX, 0); + mallopt(M_TRIM_THRESHOLD, 1024 * 128); + + try { + std::unique_ptr pApp = std::make_unique(); + if (!pApp) { + perror("create aicard slv build fail"); + return 1; + } + + if (!pApp->Start()) { + return 1; + } + + gIsRunning = true; + int nRunCount = 0; + while (gIsRunning) { + CElapsedTimer::GetInstance()->mSleep(1000); + if (++nRunCount > 30) { + // Release memory back to the system every 30 seconds. + // https://linux.die.net/man/3/malloc_trim + malloc_trim(0); + + nRunCount = 0; + } + } + + pApp->Stop(); + + } catch (CAXException &e) { + printf("%s\n", e.what()); + AX_MTRACE_LEAVE; + return 1; + } + + AX_MTRACE_LEAVE; + return 0; +} diff --git a/app/demo/src/ppl/box/box_ppl/BoxAppSys.cpp b/app/demo/src/ppl/box/box_ppl/BoxAppSys.cpp index 4bb44c7..2304f76 100644 --- a/app/demo/src/ppl/box/box_ppl/BoxAppSys.cpp +++ b/app/demo/src/ppl/box/box_ppl/BoxAppSys.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/BoxAppSys.hpp b/app/demo/src/ppl/box/box_ppl/BoxAppSys.hpp index af1c89b..e55af7c 100644 --- a/app/demo/src/ppl/box/box_ppl/BoxAppSys.hpp +++ b/app/demo/src/ppl/box/box_ppl/BoxAppSys.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/BoxBuilder.cpp b/app/demo/src/ppl/box/box_ppl/BoxBuilder.cpp index 7d155d1..63bec6e 100644 --- a/app/demo/src/ppl/box/box_ppl/BoxBuilder.cpp +++ b/app/demo/src/ppl/box/box_ppl/BoxBuilder.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/BoxBuilder.hpp b/app/demo/src/ppl/box/box_ppl/BoxBuilder.hpp index eaf0e68..6f5f48f 100644 --- a/app/demo/src/ppl/box/box_ppl/BoxBuilder.hpp +++ b/app/demo/src/ppl/box/box_ppl/BoxBuilder.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/BoxConfig.cpp b/app/demo/src/ppl/box/box_ppl/BoxConfig.cpp index f7ea38e..e17fd9a 100644 --- a/app/demo/src/ppl/box/box_ppl/BoxConfig.cpp +++ b/app/demo/src/ppl/box/box_ppl/BoxConfig.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/BoxConfig.hpp b/app/demo/src/ppl/box/box_ppl/BoxConfig.hpp index cfb38b4..522f656 100644 --- a/app/demo/src/ppl/box/box_ppl/BoxConfig.hpp +++ b/app/demo/src/ppl/box/box_ppl/BoxConfig.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/BoxRecorder.cpp b/app/demo/src/ppl/box/box_ppl/BoxRecorder.cpp index e5f5707..323c716 100644 --- a/app/demo/src/ppl/box/box_ppl/BoxRecorder.cpp +++ b/app/demo/src/ppl/box/box_ppl/BoxRecorder.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/BoxRecorder.hpp b/app/demo/src/ppl/box/box_ppl/BoxRecorder.hpp index 37ec0c5..461f830 100644 --- a/app/demo/src/ppl/box/box_ppl/BoxRecorder.hpp +++ b/app/demo/src/ppl/box/box_ppl/BoxRecorder.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/BoxSataFile.cpp b/app/demo/src/ppl/box/box_ppl/BoxSataFile.cpp index 5ff398e..fde1cfb 100644 --- a/app/demo/src/ppl/box/box_ppl/BoxSataFile.cpp +++ b/app/demo/src/ppl/box/box_ppl/BoxSataFile.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "BoxSataFile.hpp" diff --git a/app/demo/src/ppl/box/box_ppl/BoxSataFile.hpp b/app/demo/src/ppl/box/box_ppl/BoxSataFile.hpp index a760920..dd3f121 100644 --- a/app/demo/src/ppl/box/box_ppl/BoxSataFile.hpp +++ b/app/demo/src/ppl/box/box_ppl/BoxSataFile.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/ppl/box/box_ppl/DetectObserver.hpp b/app/demo/src/ppl/box/box_ppl/DetectObserver.hpp index c290ca2..057351a 100644 --- a/app/demo/src/ppl/box/box_ppl/DetectObserver.hpp +++ b/app/demo/src/ppl/box/box_ppl/DetectObserver.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/DetectResult.hpp b/app/demo/src/ppl/box/box_ppl/DetectResult.hpp index 3fa8b59..b2e3ae2 100644 --- a/app/demo/src/ppl/box/box_ppl/DetectResult.hpp +++ b/app/demo/src/ppl/box/box_ppl/DetectResult.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/Detector.cpp b/app/demo/src/ppl/box/box_ppl/Detector.cpp index 76da272..0ba50dd 100644 --- a/app/demo/src/ppl/box/box_ppl/Detector.cpp +++ b/app/demo/src/ppl/box/box_ppl/Detector.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/Detector.hpp b/app/demo/src/ppl/box/box_ppl/Detector.hpp index 8ca9c35..3df9e79 100644 --- a/app/demo/src/ppl/box/box_ppl/Detector.hpp +++ b/app/demo/src/ppl/box/box_ppl/Detector.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/DispatchObserver.hpp b/app/demo/src/ppl/box/box_ppl/DispatchObserver.hpp index 0a5dd6c..d417ded 100644 --- a/app/demo/src/ppl/box/box_ppl/DispatchObserver.hpp +++ b/app/demo/src/ppl/box/box_ppl/DispatchObserver.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/Dispatcher.cpp b/app/demo/src/ppl/box/box_ppl/Dispatcher.cpp index b008366..8ac17b7 100644 --- a/app/demo/src/ppl/box/box_ppl/Dispatcher.cpp +++ b/app/demo/src/ppl/box/box_ppl/Dispatcher.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/Dispatcher.hpp b/app/demo/src/ppl/box/box_ppl/Dispatcher.hpp index fde051c..929d640 100644 --- a/app/demo/src/ppl/box/box_ppl/Dispatcher.hpp +++ b/app/demo/src/ppl/box/box_ppl/Dispatcher.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/StreamRecorder.cpp b/app/demo/src/ppl/box/box_ppl/StreamRecorder.cpp index 13fa62b..00eb7cf 100644 --- a/app/demo/src/ppl/box/box_ppl/StreamRecorder.cpp +++ b/app/demo/src/ppl/box/box_ppl/StreamRecorder.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "StreamRecorder.hpp" diff --git a/app/demo/src/ppl/box/box_ppl/StreamRecorder.hpp b/app/demo/src/ppl/box/box_ppl/StreamRecorder.hpp index 1cebb3e..d6fcad1 100644 --- a/app/demo/src/ppl/box/box_ppl/StreamRecorder.hpp +++ b/app/demo/src/ppl/box/box_ppl/StreamRecorder.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/ppl/box/box_ppl/VoObserver.hpp b/app/demo/src/ppl/box/box_ppl/VoObserver.hpp index 749b2d2..31e09f0 100644 --- a/app/demo/src/ppl/box/box_ppl/VoObserver.hpp +++ b/app/demo/src/ppl/box/box_ppl/VoObserver.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/box/box_ppl/main.cpp b/app/demo/src/ppl/box/box_ppl/main.cpp index d0c7d1b..5a656be 100644 --- a/app/demo/src/ppl/box/box_ppl/main.cpp +++ b/app/demo/src/ppl/box/box_ppl/main.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCBuilder.cpp b/app/demo/src/ppl/frt/ipc_ppl/IPCBuilder.cpp index 07424e7..3bad380 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCBuilder.cpp +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCBuilder.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCBuilder.h b/app/demo/src/ppl/frt/ipc_ppl/IPCBuilder.h index c4e5dd9..e4a52f3 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCBuilder.h +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCBuilder.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollector.cpp b/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollector.cpp index 951b1c4..e47cc84 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollector.cpp +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollector.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollector.h b/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollector.h index c856f5f..5c7f382 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollector.h +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollector.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollectorObserver.h b/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollectorObserver.h index cdc04bb..f0674c8 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollectorObserver.h +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCFrameCollectorObserver.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCLinkage.cpp b/app/demo/src/ppl/frt/ipc_ppl/IPCLinkage.cpp index e1c89bc..47f2a88 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCLinkage.cpp +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCLinkage.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCLinkage.h b/app/demo/src/ppl/frt/ipc_ppl/IPCLinkage.h index 266c4b2..d4245d6 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCLinkage.h +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCLinkage.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCOSDHelper.cpp b/app/demo/src/ppl/frt/ipc_ppl/IPCOSDHelper.cpp index f4ab4db..23441e3 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCOSDHelper.cpp +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCOSDHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "IPCOSDHelper.h" diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCOSDHelper.h b/app/demo/src/ppl/frt/ipc_ppl/IPCOSDHelper.h index f453339..0df68c9 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCOSDHelper.h +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCOSDHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCSensorMgr.cpp b/app/demo/src/ppl/frt/ipc_ppl/IPCSensorMgr.cpp index ea36af1..264d1c2 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCSensorMgr.cpp +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCSensorMgr.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCSensorMgr.h b/app/demo/src/ppl/frt/ipc_ppl/IPCSensorMgr.h index f6dc55c..dc0483e 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCSensorMgr.h +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCSensorMgr.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/ipc_ppl/IPCSpecConfig.h b/app/demo/src/ppl/frt/ipc_ppl/IPCSpecConfig.h index ab7a112..ac00afa 100644 --- a/app/demo/src/ppl/frt/ipc_ppl/IPCSpecConfig.h +++ b/app/demo/src/ppl/frt/ipc_ppl/IPCSpecConfig.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/its_ppl/ITSBuilder.cpp b/app/demo/src/ppl/frt/its_ppl/ITSBuilder.cpp index 29be18c..51b619b 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSBuilder.cpp +++ b/app/demo/src/ppl/frt/its_ppl/ITSBuilder.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/its_ppl/ITSBuilder.h b/app/demo/src/ppl/frt/its_ppl/ITSBuilder.h index a29ea69..67e3ebe 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSBuilder.h +++ b/app/demo/src/ppl/frt/its_ppl/ITSBuilder.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/its_ppl/ITSFrameCollector.cpp b/app/demo/src/ppl/frt/its_ppl/ITSFrameCollector.cpp index 99e786f..2e160e2 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSFrameCollector.cpp +++ b/app/demo/src/ppl/frt/its_ppl/ITSFrameCollector.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/its_ppl/ITSFrameCollector.h b/app/demo/src/ppl/frt/its_ppl/ITSFrameCollector.h index 127694c..8858ee4 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSFrameCollector.h +++ b/app/demo/src/ppl/frt/its_ppl/ITSFrameCollector.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/its_ppl/ITSFrameCollectorObserver.h b/app/demo/src/ppl/frt/its_ppl/ITSFrameCollectorObserver.h index ab08149..f149a51 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSFrameCollectorObserver.h +++ b/app/demo/src/ppl/frt/its_ppl/ITSFrameCollectorObserver.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/its_ppl/ITSLinkage.cpp b/app/demo/src/ppl/frt/its_ppl/ITSLinkage.cpp index 3522993..11de140 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSLinkage.cpp +++ b/app/demo/src/ppl/frt/its_ppl/ITSLinkage.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/its_ppl/ITSLinkage.h b/app/demo/src/ppl/frt/its_ppl/ITSLinkage.h index a122ad4..8a807c9 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSLinkage.h +++ b/app/demo/src/ppl/frt/its_ppl/ITSLinkage.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/its_ppl/ITSOSDHelper.cpp b/app/demo/src/ppl/frt/its_ppl/ITSOSDHelper.cpp index 0424ae1..48273c4 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSOSDHelper.cpp +++ b/app/demo/src/ppl/frt/its_ppl/ITSOSDHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "ITSOSDHelper.h" diff --git a/app/demo/src/ppl/frt/its_ppl/ITSOSDHelper.h b/app/demo/src/ppl/frt/its_ppl/ITSOSDHelper.h index 4c97248..70fee61 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSOSDHelper.h +++ b/app/demo/src/ppl/frt/its_ppl/ITSOSDHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/its_ppl/ITSSensorMgr.cpp b/app/demo/src/ppl/frt/its_ppl/ITSSensorMgr.cpp index 3ddd8b5..28bdd08 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSSensorMgr.cpp +++ b/app/demo/src/ppl/frt/its_ppl/ITSSensorMgr.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/its_ppl/ITSSensorMgr.h b/app/demo/src/ppl/frt/its_ppl/ITSSensorMgr.h index e6e080d..d948c6d 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSSensorMgr.h +++ b/app/demo/src/ppl/frt/its_ppl/ITSSensorMgr.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/its_ppl/ITSSpecConfig.h b/app/demo/src/ppl/frt/its_ppl/ITSSpecConfig.h index 6122013..47bd95b 100644 --- a/app/demo/src/ppl/frt/its_ppl/ITSSpecConfig.h +++ b/app/demo/src/ppl/frt/its_ppl/ITSSpecConfig.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/frt/main.cpp b/app/demo/src/ppl/frt/main.cpp index bb9ea5a..856c1ca 100644 --- a/app/demo/src/ppl/frt/main.cpp +++ b/app/demo/src/ppl/frt/main.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/ppl/nvr/cfg/NVRConfigParser.cpp b/app/demo/src/ppl/nvr/cfg/NVRConfigParser.cpp new file mode 100644 index 0000000..f44983a --- /dev/null +++ b/app/demo/src/ppl/nvr/cfg/NVRConfigParser.cpp @@ -0,0 +1,180 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "NVRConfigParser.h" +#include "AppLogApi.h" + +#ifndef AX_MIN +#define AX_MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +AX_BOOL CNVRConfigParser::InitOnce(AX_VOID) { + string strIniPath = GetExecPath() + "/config/nvr.conf"; + if (!m_iniConfig.Load(strIniPath)) { + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_NVR_DEVICE_CONFIG_T CNVRConfigParser::GetDeviceConfig(AX_VOID) { + AX_NVR_DEVICE_CONFIG_T conf; + const AX_CHAR *SECT = "DEVICE"; + + conf.strPath = m_iniConfig.GetStringValue(SECT, "path", "./config/remote_device.json"); + + return conf; +} + +AX_NVR_RECORD_CONFIG_T CNVRConfigParser::GetRecordConfig(AX_VOID) { + AX_NVR_RECORD_CONFIG_T conf; + const AX_CHAR *SECT = "RECORD"; + + conf.strPath = m_iniConfig.GetStringValue(SECT, "path", ""); + conf.uMaxDevSpace = m_iniConfig.GetIntValue(SECT, "max space", 128); + conf.uMaxFilePeriod = m_iniConfig.GetIntValue(SECT, "max period", 1); + // Do not support IDR backward playback anymore. + // conf.bOnlyIFrameOnReverse = m_iniConfig.GetIntValue(SECT, "iframe only", 1) ? AX_TRUE : AX_FALSE; + conf.bOnlyIFrameOnReverse = AX_FALSE; + + return conf; +} + +AX_NVR_RPATROL_CONFIG_T CNVRConfigParser::GetRoundPatrolConfig(AX_VOID) { + AX_NVR_RPATROL_CONFIG_T conf; + const AX_CHAR *SECT = "ROUND_PATROL"; + + conf.bEnable = (AX_BOOL)m_iniConfig.GetIntValue(SECT, "enable", 0); + conf.enType = (AX_NVR_RPATROL_TYPE)m_iniConfig.GetIntValue(SECT, "type", 0); + conf.enSpliteType = (AX_NVR_VO_SPLITE_TYPE)m_iniConfig.GetIntValue(SECT, "split", 1); + conf.uIntelval = m_iniConfig.GetIntValue(SECT, "interval", 5); + conf.nStrategy = m_iniConfig.GetIntValue(SECT, "strategy", 0); + + return conf; +} + +AX_VOID CNVRConfigParser::SetRoundPatrolConfig(AX_NVR_RPATROL_CONFIG_T &conf) { + const AX_CHAR *SECT = "ROUND_PATROL"; + m_iniConfig.SetIntValue(SECT, "enable", conf.bEnable); + m_iniConfig.SetIntValue(SECT, "type", (AX_U32)conf.enType); + m_iniConfig.SetIntValue(SECT, "split", (AX_U32)conf.enSpliteType); + m_iniConfig.SetIntValue(SECT, "interval", conf.uIntelval); + m_iniConfig.SetIntValue(SECT, "strategy", conf.nStrategy); +} + +AX_NVR_DETECT_CONFIG_T CNVRConfigParser::GetDetectConfig(AX_VOID) { + AX_NVR_DETECT_CONFIG_T conf; + const AX_CHAR *SECT = "DETECT"; + + conf.bEnable = (AX_BOOL)m_iniConfig.GetIntValue(SECT, "enable", 0); + conf.nW = m_iniConfig.GetIntValue(SECT, "width", 960); + conf.nH = m_iniConfig.GetIntValue(SECT, "height", 640); + conf.nSkipRate = m_iniConfig.GetIntValue(SECT, "skip rate", 3); + conf.nDepth = m_iniConfig.GetIntValue(SECT, "fifo depth", 1); + conf.nChannelNum = m_iniConfig.GetIntValue(SECT, "channel num", 1); + conf.nChannelNum = AX_MIN(conf.nChannelNum, 3); + + for (AX_S32 i = 0; i < conf.nChannelNum; ++i) { + std::string str = "channel" + std::to_string(i) + " attr"; + + vector vec; + m_iniConfig.GetIntValue(SECT, str, vec); + + if (vec.size() == 3) { + conf.tChnParam[i].nPPL = vec[0]; + conf.tChnParam[i].bTrackEnable = (AX_BOOL)vec[1]; + conf.tChnParam[i].nVNPU = vec[2]; + } else { + conf.tChnParam[i].nPPL = 4; + conf.tChnParam[i].bTrackEnable = AX_FALSE; + conf.tChnParam[i].nVNPU = 0; + } + } + + conf.strModelPath = m_iniConfig.GetStringValue(SECT, "model path", ""); + + return conf; /* RVO: optimized by compiler */ +} + +AX_NVR_DISPVO_CONFIG_T CNVRConfigParser::GetPrimaryDispConfig(AX_VOID) { + AX_NVR_DISPVO_CONFIG_T conf; + const AX_CHAR *SECT = "Primary"; + + conf.nDevId = m_iniConfig.GetIntValue(SECT, "dev", 0); + conf.nFBQt = m_iniConfig.GetIntValue(SECT, "fb qt", 0); + conf.nFBRect = m_iniConfig.GetIntValue(SECT, "fb rects", -1); + conf.bLink = m_iniConfig.GetIntValue(SECT, "link", 1) == 0 ? AX_FALSE : AX_TRUE; + conf.nHDMI = m_iniConfig.GetIntValue(SECT, "HDMI", 10); + conf.nLayerDepth = m_iniConfig.GetIntValue(SECT, "layer depth", 3); + conf.nOnlineMode = m_iniConfig.GetIntValue(SECT, "online mode", 1); + /* if 0, vo using default tolerance, VO_LAYER_TOLERATION_DEF = 10*1000*1000 */ + conf.nTolerance = m_iniConfig.GetIntValue(SECT, "tolerance", 0); + + return conf; /* RVO: optimized by compiler */ +} + +AX_NVR_DISPVO_CONFIG_T CNVRConfigParser::GetSecondaryDispConfig(AX_VOID) { + AX_NVR_DISPVO_CONFIG_T conf; + const AX_CHAR *SECT = "Secondary"; + + conf.nDevId = m_iniConfig.GetIntValue(SECT, "dev", 0); + conf.nFBQt = m_iniConfig.GetIntValue(SECT, "fb qt", 2); + conf.nFBRect = m_iniConfig.GetIntValue(SECT, "fb rects", -1); + conf.bLink = m_iniConfig.GetIntValue(SECT, "link", 1) == 0 ? AX_FALSE : AX_TRUE; + conf.nHDMI = m_iniConfig.GetIntValue(SECT, "HDMI", 10); + conf.nLayerDepth = m_iniConfig.GetIntValue(SECT, "layer depth", 3); + /* if 0, vo using default tolerance, VO_LAYER_TOLERATION_DEF = 10*1000*1000 */ + conf.nTolerance = m_iniConfig.GetIntValue(SECT, "tolerance", 0); + + return conf; /* RVO: optimized by compiler */ +} + +AX_NVR_DATA_STREAM_CONFIG_T CNVRConfigParser::GetDataStreamConfig(AX_VOID) { + AX_NVR_DATA_STREAM_CONFIG_T conf; + const AX_CHAR *SECT = "DATA_STREAM"; + + conf.bSaveDisk = (AX_BOOL)m_iniConfig.GetIntValue(SECT, "save disk", 0); + conf.nFrequency = m_iniConfig.GetIntValue(SECT, "frequency", 10); + + return conf; /* RVO: optimized by compiler */ +} + +AX_NVR_TEST_SUITE_CONFIG_T CNVRConfigParser::GetTestSuiteConfig(AX_VOID) { + AX_NVR_TEST_SUITE_CONFIG_T conf; + const AX_CHAR *SECT = "TEST_SUITE"; + + conf.eMode = m_eTestSuiteMode; + conf.strStabilityPath = m_iniConfig.GetStringValue(SECT, "path_stability", "./config/test_suite.json"); + conf.strUTPath = m_iniConfig.GetStringValue(SECT, "path_ut", "./config/test_suite.json"); + + return conf; /* RVO: optimized by compiler */ +} + +AX_NVR_FBC_CONFIG_T CNVRConfigParser::GetFBCConfig(AX_VOID) { + AX_NVR_FBC_CONFIG_T conf; + const AX_CHAR *SECT = "FBC"; + + conf.nLv = m_iniConfig.GetIntValue(SECT, "lossy level", 0); + + return conf; /* RVO: optimized by compiler */ +} + +string CNVRConfigParser::GetExecPath(AX_VOID) { + string strPath; + AX_CHAR szPath[260] = {0}; + ssize_t sz = readlink("/proc/self/exe", szPath, sizeof(szPath)); + if (sz <= 0) { + strPath = "./"; + } else { + strPath = szPath; + strPath = strPath.substr(0, strPath.rfind('/') + 1); + } + + return strPath; +} diff --git a/app/demo/src/ppl/nvr/cfg/NVRConfigParser.h b/app/demo/src/ppl/nvr/cfg/NVRConfigParser.h new file mode 100644 index 0000000..13f49d5 --- /dev/null +++ b/app/demo/src/ppl/nvr/cfg/NVRConfigParser.h @@ -0,0 +1,46 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once +#include "AXSingleton.h" +#include "IniWrapper.hpp" +#include "AXNVRFrameworkDefine.h" + +#include + +class CNVRConfigParser : public CAXSingleton { + friend class CAXSingleton; + +public: + AX_BOOL InitOnce(AX_VOID) override; + + AX_NVR_RPATROL_CONFIG_T GetRoundPatrolConfig(AX_VOID); + AX_VOID SetRoundPatrolConfig(AX_NVR_RPATROL_CONFIG_T &conf); + AX_VOID SetTestSuiteRunMode(AX_NVR_TS_RUN_MODE eMode) { m_eTestSuiteMode = eMode; }; + + AX_NVR_DETECT_CONFIG_T GetDetectConfig(AX_VOID); + AX_NVR_DISPVO_CONFIG_T GetPrimaryDispConfig(AX_VOID); + AX_NVR_DISPVO_CONFIG_T GetSecondaryDispConfig(AX_VOID); + AX_NVR_RECORD_CONFIG_T GetRecordConfig(AX_VOID); + AX_NVR_DEVICE_CONFIG_T GetDeviceConfig(AX_VOID); + AX_NVR_DATA_STREAM_CONFIG_T GetDataStreamConfig(AX_VOID); + AX_NVR_TEST_SUITE_CONFIG_T GetTestSuiteConfig(AX_VOID); + AX_NVR_FBC_CONFIG_T GetFBCConfig(AX_VOID); + +private: + std::string GetExecPath(AX_VOID); + +private: + CIniWrapper m_iniConfig; + AX_NVR_TS_RUN_MODE m_eTestSuiteMode {AX_NVR_TS_RUN_MODE::DISABLE}; + +private: + CNVRConfigParser(AX_VOID) = default; + ~CNVRConfigParser(AX_VOID) = default; +}; diff --git a/app/demo/src/ppl/nvr/cfg/RemoteDeviceParser.cpp b/app/demo/src/ppl/nvr/cfg/RemoteDeviceParser.cpp new file mode 100644 index 0000000..6b3af54 --- /dev/null +++ b/app/demo/src/ppl/nvr/cfg/RemoteDeviceParser.cpp @@ -0,0 +1,202 @@ +// /************************************************************************************************** +// * +// * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. +// * +// * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and +// * may not be copied or distributed in any isomorphic form without the prior +// * written consent of Axera Semiconductor (Shanghai) Co., Ltd. +// * +// **************************************************************************************************/ +#include "AppLogApi.h" +#include "RemoteDeviceParser.h" +#include + +using namespace std; + +#define TAG "PARSER" + +template +static AX_VOID SET_VALUE(picojson::value &argObj, const string &name, T v) +{ + argObj.get()[name] = picojson::value(v); +} + +template +static AX_BOOL GET_VALUE(const picojson::value &argObj, const string &name, T &v) +{ + const picojson::value& obj = argObj.get(name); + if (obj.is()) { + v = obj.get(); + return AX_TRUE; + } + LOG_M_E(TAG, "get remote device faield <%s> failed.", name); + return AX_FALSE; +} + +AX_BOOL CRemoteDeviceParser::InitOnce() { + + // m_strPath = GetExecPath() + "config/remote_device.json"; + return AX_TRUE; +} + +std::vector CRemoteDeviceParser::GetRemoteDeviceMap(AX_U32 *nRemoteDeviceCnt, const std::string &strPath) { + + std::vector vecRemoteDevice; + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + + do { + m_strPath = std::move(strPath); + std::ifstream file(m_strPath); + if (!file.is_open()) { + LOG_M_E(TAG, "Failed to open json config file: %s", m_strPath.c_str()); + break; + } + + picojson::value json; + file >> json; + string err = picojson::get_last_error(); + if (!err.empty()) { + LOG_M_E(TAG, "Failed to load json config file: %s", m_strPath.c_str()); + break; + } + + if (!json.is()) { + LOG_M_E(TAG, "Loaded config file is not a well-formatted JSON."); + break; + } + // parse remote device + else { + double nCnt = 0; + if (!GET_VALUE(json, "count", nCnt)) { + break; + } + + *nRemoteDeviceCnt = (AX_U32)nCnt; + + const picojson::value& device_list_value = json.get("remote_device"); + if (device_list_value.is()) { + const picojson::array& arr_device = device_list_value.get(); + if (*nRemoteDeviceCnt > arr_device.size()) { + LOG_M_W(TAG, "device size is invalid."); + *nRemoteDeviceCnt = arr_device.size(); + } + + double dValue = 0.0; + string strValue = ""; + for (auto device_value : arr_device) { + + AX_NVR_DEV_INFO_T devInfo; + if (!GET_VALUE(device_value, "channel", dValue)) break; + devInfo.nChannelId = dValue; + + if (!GET_VALUE(device_value, "alias", strValue)) break; + strcpy((char*)devInfo.szAlias, strValue.c_str()); + + if (!GET_VALUE(device_value, "type", dValue)) break; + devInfo.enType = (AX_NVR_CHN_TYPE)dValue; + + // preview + auto valuePreview = device_value.get()["preview"]; + if (!GET_VALUE(valuePreview, "stream", dValue)) break; + devInfo.enPreviewIndex = (AX_NVR_CHN_IDX_TYPE)dValue; + + if (!GET_VALUE(valuePreview, "display", dValue)) break; + devInfo.bPreviewDisplay = (AX_BOOL)dValue; + + // preview + auto valuePatrol = device_value.get()["patrol"]; + if (!GET_VALUE(valuePatrol, "stream", dValue)) break; + devInfo.enPatrolIndex = (AX_NVR_CHN_IDX_TYPE)dValue; + + if (!GET_VALUE(valuePatrol, "display", dValue)) break; + devInfo.bPatrolDisplay = (AX_BOOL)dValue; + + // main + auto valueMain = device_value.get()["main"]; + if (!GET_VALUE(valueMain, "rtsp", strValue)) break; + strcpy((char*)devInfo.stChnMain.szRtspUrl, strValue.c_str()); + + if (!GET_VALUE(valueMain, "record", dValue)) break; + devInfo.stChnMain.bRecord = (AX_BOOL)dValue; + + // sub1 + auto valueSub1 = device_value.get()["sub1"]; + if (!GET_VALUE(valueSub1, "rtsp", strValue)) break; + strcpy((char*)devInfo.stChnSub1.szRtspUrl, strValue.c_str()); + + if (!GET_VALUE(valueSub1, "record", dValue)) break; + devInfo.stChnSub1.bRecord = (AX_BOOL)dValue; + + vecRemoteDevice.emplace_back(devInfo); + } + } + } + } while (0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return vecRemoteDevice; +} + +AX_BOOL CRemoteDeviceParser::SetRemoteDeviceMap(std::vector& vecRemoteDevice) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + + do { + picojson::object obj; + obj["count"] = picojson::value((double)vecRemoteDevice.size()); + + picojson::array arr; + for (auto &info : vecRemoteDevice) { + picojson::object objDev; + objDev["channel"] = picojson::value((double)info.nChannelId); + objDev["alias"] = picojson::value(string((char*)info.szAlias)); + objDev["type"] = picojson::value((double)info.enType); + + objDev["preview"].get()["stream"] = picojson::value((double)info.enPreviewIndex); + objDev["preview"].get()["display"] = picojson::value((double)info.bPreviewDisplay); + objDev["patrol"].get()["stream"] = picojson::value((double)info.enPreviewIndex); + objDev["patrol"].get()["display"] = picojson::value((double)info.bPatrolDisplay); + + objDev["main"].get()["rtsp"] = picojson::value(string((char*)info.stChnMain.szRtspUrl)); + objDev["main"].get()["record"] = picojson::value((double)info.stChnMain.bRecord); + + objDev["sub1"].get()["rtsp"] = picojson::value(string((char*)info.stChnSub1.szRtspUrl)); + objDev["sub1"].get()["record"] = picojson::value((double)info.stChnSub1.bRecord); + + arr.push_back(picojson::value(objDev)); + } + obj["remote_device"] = picojson::value(arr); + + std::ofstream file(m_strPath); + if (!file.is_open()) { + LOG_M_E(TAG, "Failed to open json config file: %s", m_strPath.c_str()); + break; + } + file << picojson::value(obj).serialize(true); + string err = picojson::get_last_error(); + if (!err.empty()) { + LOG_M_E(TAG, "Failed to save json config file: %s", m_strPath.c_str()); + break; + } + + bRet = AX_TRUE; + + } while (0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +string CRemoteDeviceParser::GetExecPath(AX_VOID) { + string strPath; + AX_CHAR szPath[260] = {0}; + ssize_t sz = readlink("/proc/self/exe", szPath, sizeof(szPath)); + if (sz <= 0) { + strPath = "./"; + } else { + strPath = szPath; + strPath = strPath.substr(0, strPath.rfind('/') + 1); + } + + return strPath; +} diff --git a/app/demo/src/ppl/nvr/cfg/RemoteDeviceParser.h b/app/demo/src/ppl/nvr/cfg/RemoteDeviceParser.h new file mode 100644 index 0000000..3f0c303 --- /dev/null +++ b/app/demo/src/ppl/nvr/cfg/RemoteDeviceParser.h @@ -0,0 +1,36 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once +#include +#include +#include "picojson.h" + +#include "AXSingleton.h" +#include "AXNVRFrameworkDefine.h" + + +class CRemoteDeviceParser : public CAXSingleton { + friend class CAXSingleton; + +public: + std::vector GetRemoteDeviceMap(AX_U32 *nRemoteDeviceCnt, const std::string &strPath); + AX_BOOL SetRemoteDeviceMap(std::vector& vecRemoteDevice); + +private: + AX_BOOL InitOnce() override; + +private: + std::string GetExecPath(AX_VOID); + std::string m_strPath; + +private: + CRemoteDeviceParser(AX_VOID) = default; + ~CRemoteDeviceParser(AX_VOID) = default; +}; diff --git a/app/demo/src/ppl/nvr/cfg/TestSuiteConfigParser.cpp b/app/demo/src/ppl/nvr/cfg/TestSuiteConfigParser.cpp new file mode 100644 index 0000000..3276938 --- /dev/null +++ b/app/demo/src/ppl/nvr/cfg/TestSuiteConfigParser.cpp @@ -0,0 +1,142 @@ +// /************************************************************************************************** +// * +// * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. +// * +// * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and +// * may not be copied or distributed in any isomorphic form without the prior +// * written consent of Axera Semiconductor (Shanghai) Co., Ltd. +// * +// **************************************************************************************************/ +#include "AppLogApi.h" +#include "TestSuiteConfigParser.h" +#include "NVRConfigParser.h" +#include + +using namespace std; + +#define TAG "TS_CFG_PARSER" + + +template +static AX_BOOL GET_NUM_VALUE(const picojson::value &argObj, const string &name, T &v, AX_BOOL bRequired) { + const picojson::value& obj = argObj.get(name); + if (obj.is()) { + v = (T)obj.get(); + return AX_TRUE; + } else if (!bRequired) { + v = (T)0; + return AX_TRUE; + } + + LOG_M_E(TAG, "Get value of key<%s> failed.", name.c_str()); + return AX_FALSE; +} + +static AX_BOOL GET_STR_VALUE(const picojson::value &argObj, const string &name, string &val, AX_BOOL bRequired) { + const picojson::value& obj = argObj.get(name); + if (obj.is()) { + val = obj.get(); + return AX_TRUE; + } else if (!bRequired) { + val = ""; + return AX_TRUE; + } + + LOG_M_E(TAG, "Get value of key<%s> failed.", name.c_str()); + return AX_FALSE; +} + +AX_NVR_TS_CONFIG_T CTestSuiteConfigParser::GetConfig() { + std::string strPath; + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::STABILITY == tTsCfg.eMode) { + strPath = tTsCfg.strStabilityPath; + } else { + strPath = tTsCfg.strUTPath; + } + + AX_NVR_TS_CONFIG_T tConfig; + + std::vector vecModuleInfo; + do { + std::ifstream file(strPath); + if (!file.is_open()) { + LOG_MM_E(TAG, "Failed to open json config file: %s", strPath.c_str()); + break; + } else { + LOG_M_C(TAG, "Load ts config file: %s", strPath.c_str()); + } + + picojson::value json; + file >> json; + string err = picojson::get_last_error(); + if (!err.empty()) { + LOG_M_E(TAG, "Failed to load json config file: %s", strPath.c_str()); + break; + } + + if (!json.is()) { + LOG_M_E(TAG, "Loaded config file is not a well-formatted JSON."); + break; + } else { // parse remote device + if (!GET_NUM_VALUE(json, "repeat", tConfig.bRepeat, AX_TRUE)) { + break; + } + + if (!GET_NUM_VALUE(json, "close_on_finish", tConfig.bCloseOnFinish, AX_TRUE)) { + break; + } + + if (!GET_NUM_VALUE(json, "module_count", tConfig.nModuleCount, AX_TRUE)) { + break; + } + + if (!GET_NUM_VALUE(json, "result_to_file", tConfig.bExportResultToFile, AX_TRUE)) { + break; + } + + if (!GET_STR_VALUE(json, "result_dir", tConfig.strResultDir, AX_TRUE)) { + break; + } + + const picojson::value& modules = json.get("modules"); + if (modules.is()) { + const picojson::array& arr_modules = modules.get(); + if (tConfig.nModuleCount > arr_modules.size()) { + LOG_M_W(TAG, "Configured module count is larger than actually configured modules, replace the value automatically."); + tConfig.nModuleCount = arr_modules.size(); + } + + for (auto module : arr_modules) { + AX_NVR_TS_MODULE_INFO_T moduleInfo; + if (!GET_STR_VALUE(module, "name", moduleInfo.strName, AX_TRUE)) break; + if (!GET_STR_VALUE(module, "data_path", moduleInfo.strDataPath, AX_FALSE)) break; + if (!GET_STR_VALUE(module, "date", moduleInfo.strDate, AX_FALSE)) break; + if (!GET_NUM_VALUE(module, "enable", moduleInfo.bEnable, AX_TRUE)) break; + if (!GET_NUM_VALUE(module, "thread", moduleInfo.bThread, AX_FALSE)) break; + if (!GET_NUM_VALUE(module, "round_count", moduleInfo.nRoundCount, AX_FALSE)) break; + if (!GET_NUM_VALUE(module, "repeat_count", moduleInfo.nRepeatCount, AX_TRUE)) break; + if (!GET_NUM_VALUE(module, "case_interval", moduleInfo.nCaseInterval, AX_TRUE)) break; + + const picojson::value& cases = module.get("cases"); + if (cases.is()) { + const picojson::array& arr_cases = cases.get(); + for (auto& m : arr_cases) { + AX_NVR_TS_CASE_INFO_T caseInfo; + if (!GET_STR_VALUE(m, "name", caseInfo.strName, AX_TRUE)) break; + if (!GET_NUM_VALUE(m, "repeat_count", caseInfo.nRepeatCount, AX_TRUE)) break; + if (!GET_NUM_VALUE(m, "operation_interval", caseInfo.nOprInterval, AX_TRUE)) break; + + moduleInfo.vecCaseInfo.emplace_back(caseInfo); + } + } + vecModuleInfo.emplace_back(moduleInfo); + } + + tConfig.vecModuleInfo = vecModuleInfo; + } + } + } while (0); + + return tConfig; +} diff --git a/app/demo/src/ppl/nvr/cfg/TestSuiteConfigParser.h b/app/demo/src/ppl/nvr/cfg/TestSuiteConfigParser.h new file mode 100644 index 0000000..e8977c9 --- /dev/null +++ b/app/demo/src/ppl/nvr/cfg/TestSuiteConfigParser.h @@ -0,0 +1,65 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once +#include +#include +#include "picojson.h" + +#include "AXSingleton.h" +#include "AXNVRFrameworkDefine.h" + + +typedef struct AX_NVR_TS_CASE_INFO { + std::string strName; + AX_U32 nRepeatCount; + AX_U32 nOprInterval; /* Interval between two operations, Unit: milliseconds */ +} AX_NVR_TS_CASE_INFO_T, *AX_NVR_TS_CASE_INFO_PTR; + +typedef struct AX_NVR_TS_MODULE_INFO { + std::string strName; + std::string strDataPath; + std::string strDate; + AX_BOOL bEnable; + AX_BOOL bRandom; + AX_BOOL bThread; + AX_S32 nRoundCount; + AX_U32 nRepeatCount; + AX_U32 nCaseInterval; /* Interval between two cases, Unit: milliseconds */ + vector vecCaseInfo; +} AX_NVR_TS_MODULE_INFO_T, *AX_NVR_TS_MODULE_INFO_PTR; + +typedef struct AX_NVR_TS_CONFIG { + AX_BOOL bRepeat; + AX_BOOL bCloseOnFinish; + AX_U32 nModuleCount; + AX_BOOL bExportResultToFile; + std::string strResultDir; + vector vecModuleInfo; + + AX_NVR_TS_CONFIG() { + bRepeat = AX_FALSE; + bCloseOnFinish = AX_TRUE; + bExportResultToFile = AX_FALSE; + nModuleCount = 0; + vecModuleInfo.clear(); + } +} AX_NVR_TS_CONFIG_T, *AX_NVR_TS_CONFIG_PTR; + + +class CTestSuiteConfigParser : public CAXSingleton { + friend class CAXSingleton; + +public: + AX_NVR_TS_CONFIG_T GetConfig(); + +private: + CTestSuiteConfigParser(AX_VOID) = default; + ~CTestSuiteConfigParser(AX_VOID) = default; +}; diff --git a/app/demo/src/ppl/nvr/frm/AXNVRChannel.cpp b/app/demo/src/ppl/nvr/frm/AXNVRChannel.cpp new file mode 100644 index 0000000..d96cce7 --- /dev/null +++ b/app/demo/src/ppl/nvr/frm/AXNVRChannel.cpp @@ -0,0 +1,1747 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "AXNVRChannel.h" +#include "ElapsedTimer.hpp" +#include "NVRConfigParser.h" + +#ifndef ALIGN_UP +#define ALIGN_UP(x, align) (((x) + ((align)-1)) & ~((align)-1)) +#endif + +#ifndef ALIGN_DOWN +#define ALIGN_DOWN(x, align) ((x) & ~((align)-1)) +#endif + +#define ALIGN_UP_16(x) ALIGN_UP((x), 16) + +#define AX_SHIFT_LEFT_ALIGN(a) (1 << (a)) + +/* VDEC stride align 256 */ +#define VDEC_STRIDE_ALIGN AX_SHIFT_LEFT_ALIGN(8) +/* IVPS FBC stride align 128 */ +#define IVPS_FBC_STRIDE_ALIGN AX_SHIFT_LEFT_ALIGN(7) +/* IVPS FBC input height align 4 */ +#define IVPS_FBC_INPUT_HEIGHT_ALIGN AX_SHIFT_LEFT_ALIGN(2) + +#define TAG "NVRCHN" + +CAXNVRChannel *CAXNVRChannel::CreateInstance(const AX_NVR_CHN_ATTR_T &stAttr) { + CAXNVRChannel *obj = new (std::nothrow) CAXNVRChannel; + if (obj) { + if (obj->Init(stAttr)) { + return obj; + } else { + delete obj; + obj = nullptr; + } + } + + return nullptr; +} + +AX_BOOL CAXNVRChannel::Init(const AX_NVR_CHN_ATTR_T &attr) { + m_stAttr = attr; + + return AX_TRUE; +} + +AX_VOID CAXNVRChannel::DeInit(AX_VOID) { + m_stAttr.reset(); +} + +AX_BOOL CAXNVRChannel::TrySwitchMainSub1(AX_U32 nDate, AX_U32 nTime) { + if (m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD) { + AX_NVR_CHN_IDX_TYPE enIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + if (AX_NVR_CHN_IDX_TYPE::MAIN == m_stAttr.enIndex) { + enIndex = AX_NVR_CHN_IDX_TYPE::SUB1; + } else if (AX_NVR_CHN_IDX_TYPE::SUB1 == m_stAttr.enIndex) { + enIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + } + AXDS_STREAM_INFO_T stStream; + if (!m_stAttr.pPlayback->GetStreamInfo(m_stAttr.nDevID, (AX_U8)enIndex, nDate, stStream)) { + LOG_MM_W(TAG, "[%02d-%02d] Get record info failed.", m_stAttr.nDevID, m_stAttr.enIndex); + return AX_FALSE; + } + } + + return AX_TRUE; +} + +AX_BOOL CAXNVRChannel::SwitchMainSub1(AX_U32 nDate, AX_U32 nTime) { + if (AX_NVR_CHN_IDX_TYPE::MAIN == m_stAttr.enIndex) { + m_stAttr.enIndex = AX_NVR_CHN_IDX_TYPE::SUB1; + } else if (AX_NVR_CHN_IDX_TYPE::SUB1 == m_stAttr.enIndex) { + m_stAttr.enIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + } + return AX_TRUE; +} + +AX_BOOL CAXNVRChannel::StartRtsp(const std::string &strURL, AX_BOOL bRecord, AX_BOOL bForce, AX_S32 nCookie) { + AX_BOOL bRet = AX_FALSE; + LOG_MM_I(TAG, "[%02d:%02d][state:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + std::lock_guard lock(mutex_); + + do { + if (m_enState != AX_NVR_CHN_STATE::IDLE) { + bRet = AX_TRUE; + break; + } + + // if no disaplay and no record, stream not start + m_stAttr.bRecord = bRecord; + if (!m_stAttr.bRecord && m_stAttr.enView == AX_NVR_CHN_VIEW_TYPE::PREVIEW) { + if (!bForce) { + bRet = AX_TRUE; + break; + } + } + + if (!this->init_rtsp(strURL, nCookie)) { + break; + } + + this->set_state(AX_NVR_CHN_STATE::TRANSFER); + + bRet = AX_TRUE; + + } while (0); + + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return bRet; +} + +AX_BOOL CAXNVRChannel::StartFile(AX_U32 nDate, AX_U32 nTime, AX_S32 nReverse /*=-1*/) { + AX_BOOL bRet = AX_FALSE; + LOG_MM_I(TAG, "[%02d:%02d][state:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + std::lock_guard lock(mutex_); + + do { + AX_BOOL bReverse = AX_FALSE; + if (-1 == nReverse) { + bReverse = m_stAttr.bReverse; + } else { + bReverse = (AX_BOOL)nReverse; + } + if (m_enState != AX_NVR_CHN_STATE::IDLE) { + LOG_MM_I(TAG, "[%02d:%02d][state:%d] state invalid.", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + if (AX_NVR_CHN_SRC_TYPE::RECORD == m_stAttr.enStreamSrcType) { + m_stAttr.bReverse = bReverse; + } + bRet = AX_TRUE; + break; + } + + LOG_MM_I(TAG, "[%02d:%02d]start datetime:%08d %06d", m_stAttr.nDevID, m_stAttr.enIndex, nDate, nTime); + if (AX_NVR_CHN_SRC_TYPE::RECORD == m_stAttr.enStreamSrcType) { + m_stAttr.nStartDate = nDate; + m_stAttr.nStartTime = nTime; + m_stAttr.bReverse = bReverse; + + AXDS_STREAM_INFO_T stStream; + if (!m_stAttr.pPlayback->GetStreamInfo(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, m_stAttr.nStartDate, stStream)) { + LOG_MM_E(TAG, "[%02d-%02d] Get record info failed.", m_stAttr.nDevID, m_stAttr.enIndex); + break; + } + } else if (AX_NVR_CHN_SRC_TYPE::FFMPEG == m_stAttr.enStreamSrcType) { + if (!this->init_ffmpeg()) { + break; + } + } + + this->set_state(AX_NVR_CHN_STATE::TRANSFER); + bRet = AX_TRUE; + } while (0); + + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return bRet; +} + +AX_BOOL CAXNVRChannel::StartDisp(VO_LAYER nVoLayer, VO_CHN nVoChannel, const AX_VO_RECT_T &stRect) { + AX_BOOL bRet = AX_FALSE; + LOG_MM_I(TAG, "[%02d:%02d][state:%d][reverse:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState, m_stAttr.bReverse); + std::lock_guard lock(mutex_); + + do { + if (AX_NVR_CHN_STATE::PAUSED == m_enState) { + if (!this->pause_resume()) { + break; + } + bRet = AX_TRUE; + break; + } + + if (AX_NVR_CHN_STATE::STARTED == m_enState && m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD) { + m_stAttr.pPlayback->ChangeDirection(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, m_stAttr.bReverse); + bRet = AX_TRUE; + break; + } + + if (AX_NVR_CHN_STATE::TRANSFER != m_enState) { + bRet = AX_TRUE; + break; + } + + m_stAttr.nVoLayer = nVoLayer; + m_stAttr.nVoChannel = nVoChannel; + this->set_state(AX_NVR_CHN_STATE::STARTED); + + // 0. get stream resulotion + AX_PAYLOAD_TYPE_E enPayload = AX_PAYLOAD_TYPE_E::PT_BUTT; + AX_F32 fFps = 0; + AX_U32 nGop = 0; + AX_U32 nWidth = 0; + AX_U32 nHeight = 0; + if (m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD) { + AXDS_STREAM_INFO_T stStream; + if (!m_stAttr.pPlayback->GetStreamInfo(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, m_stAttr.nStartDate, stStream)) { + LOG_MM_E(TAG, "[%02d-%02d] Get record info failed.", m_stAttr.nDevID, m_stAttr.enIndex); + break; + } + + fFps = stStream.uFrameRate; + nGop = stStream.uGop; + enPayload = stStream.uEncodeType; + nWidth = stStream.uWidth; + nHeight = stStream.uHeight; + } else { + const STREAM_INFO_T &streamInfo = this->GetStream().GetStreamInfo(); + fFps = streamInfo.stVideo.nFps; + nGop = fFps; + enPayload = streamInfo.stVideo.enPayload; + nWidth = streamInfo.stVideo.nWidth; + nHeight = streamInfo.stVideo.nHeight; + } + + if (0 == nWidth || 0 == nHeight) { + LOG_MM_E(TAG, "Channel resolution(%d x %d) error, start display failed.", nWidth, nHeight); + this->set_state(AX_NVR_CHN_STATE::TRANSFER); + break; + } + + LOG_MM_I(TAG, "[%02d:%02d] Stream Resulotion %f %d %dx%d.", m_stAttr.nDevID, m_stAttr.enIndex, fFps, enPayload, nWidth, nHeight); + + // 1. VDEC + // init and start + AX_VDEC_GRP _vdGrp = nVoChannel; + if (AX_NVR_CHN_VIEW_TYPE::PATROL == m_stAttr.enView) { + _vdGrp += MAX_PRIMARY_DISP_CHN_COUNT; + } + if (!this->init_vdec(enPayload, nWidth, nHeight, {stRect.u32Width, stRect.u32Height}, _vdGrp)) { + LOG_MM_E(TAG, "[%02d] Create and Start Decoder failed.", m_stAttr.nDevID); + break; + } + + // create VDEC link info: link to IVPS + m_stModeInfoVdec = {AX_ID_VDEC, (AX_S32)(m_objVdec.GetGrpId()), m_stAttr.nLinkVdecIvpsChn}; + + if (m_stAttr.bReverse && m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD && !m_stAttr.pPlayback->GetAttr().bOnlyIFrameOnReverse) { + InitReversePlaybackModules(nWidth, nHeight, fFps, nGop, enPayload); + } + + // 2. IVPS + // init and start + if (!this->init_ivps(nWidth, nHeight, stRect, (AX_IVPS_GRP)m_objVdec.GetGrpId())) { + LOG_MM_E(TAG, "[%02d] Create and Start IVPS failed.", m_stAttr.nDevID); + break; + } + + // create IVPS link info: link to VO + m_stModeInfoIvps = {AX_ID_IVPS, (AX_S32)(m_objIvps.GetGrpId()), m_stAttr.nLinkIvpsVoooChn}; + + // 3. VO + // set vo channel fps + if (!this->set_fps(m_stAttr.nVoLayer, m_stAttr.nVoChannel, fFps)) { + break; + } + // create VO link info + m_stModeInfoVo = {AX_ID_VO, (AX_S32)m_stAttr.nVoLayer, (AX_S32)m_stAttr.nVoChannel}; + + // 4. DETECT + if (m_stAttr.pDetector && m_stAttr.pDetectObs && AX_NVR_DETECT_SRC_TYPE::NONE != m_stAttr.enDetectSrcType) { + if (AX_NVR_DETECT_SRC_TYPE::IVPS == m_stAttr.enDetectSrcType) { + m_objIvps.RegisterObserver(m_stAttr.nRegiIvpsDeteChn, m_stAttr.pDetectObs); + + if (nullptr == m_stAttr.pDisplay->GetVoRegionObs()) { + if (!this->init_region(m_objIvps.GetGrpId(), nWidth, nHeight, stRect)) { + LOG_MM_E(TAG, "[%02d] Create and Start Region failed.", m_stAttr.nDevID); + break; + } + m_objRgnObs.SetSink(&m_objRegion); + m_stAttr.pDetector->RegisterObserver(m_objIvps.GetGrpId(), &m_objRgnObs); + } else { + CVOLayerRegionObserver *pVoObs = const_cast(m_stAttr.pDisplay->GetVoRegionObs()); + if (nullptr != pVoObs) { + m_stAttr.pDetector->RegisterObserver(m_objIvps.GetGrpId(), pVoObs); + pVoObs->RegisterSrcGrp(m_objIvps.GetGrpId(), nVoChannel); + } + } + + LOG_MM_I(TAG, "Register vo layer %d chn %d to detect %d", nVoLayer, nVoChannel, m_objIvps.GetGrpId()); + } else if (AX_NVR_DETECT_SRC_TYPE::VDEC == m_stAttr.enDetectSrcType) { + m_objVdec.RegisterObserver(m_stAttr.nRegiVdecDeteChn, m_stAttr.pDetectObs); + + if (nullptr == m_stAttr.pDisplay->GetVoRegionObs()) { + if (!this->init_region(m_objVdec.GetGrpId(), nWidth, nHeight, stRect)) { + LOG_MM_E(TAG, "[%02d] Create and Start Region failed.", m_stAttr.nDevID); + break; + } + m_objRgnObs.SetSink(&m_objRegion); + m_stAttr.pDetector->RegisterObserver(m_objVdec.GetGrpId(), &m_objRgnObs); + } else { + CVOLayerRegionObserver *pVoObs = const_cast(m_stAttr.pDisplay->GetVoRegionObs()); + if (nullptr != pVoObs) { + m_stAttr.pDetector->RegisterObserver(m_objVdec.GetGrpId(), pVoObs); + pVoObs->RegisterSrcGrp(m_objVdec.GetGrpId(), nVoChannel); + } + } + + LOG_MM_I(TAG, "Register vo layer %d chn %d to detect %d", nVoLayer, nVoChannel, m_objVdec.GetGrpId()); + } + } + + // 5. link or register + // STREAM register VDEC + if (m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD) { + m_stAttr.pPlayback->RegisterObserver(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, &m_objVdec); + } else { + this->GetStream().RegisterObserver(&m_objVdec); + } + + if (m_stAttr.bReverse && m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD && !m_stAttr.pPlayback->GetAttr().bOnlyIFrameOnReverse) { + StartReversePlaybackLinkages(); + + // IVPS_1 link VO + AX_S32 ret = AX_SYS_Link(&m_stModeInfoIvps, &m_stModeInfoVo); + if (0 != ret) { + THROW_AX_EXCEPTION("link IVPS %d %d to DISP %d %d fail, ret = 0x%x", m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, + m_stModeInfoVo.s32GrpId, m_stModeInfoVo.s32ChnId, ret); + } else { + LOG_MM_I(TAG, "link IVPS %d %d to DISP %d %d OK", m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, + m_stModeInfoVo.s32GrpId, m_stModeInfoVo.s32ChnId); + } + } else { + LOG_MM_I(TAG, "[%02d]Link vdec=%d ivps=%d vo=%d", m_stAttr.nDevID, m_objVdec.GetGrpId(), m_objIvps.GetGrpId(), m_stAttr.nVoChannel); + + AX_S32 ret = AX_SYS_Link(&m_stModeInfoVdec, &m_stModeInfoIvps); + if (0 != ret) { + THROW_AX_EXCEPTION("link VDEC %d %d to IVPS %d %d fail, ret = 0x%x", m_stModeInfoVdec.s32GrpId, m_stModeInfoVdec.s32ChnId, + m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, ret); + } + + // IVPS link VO + ret = AX_SYS_Link(&m_stModeInfoIvps, &m_stModeInfoVo); + if (0 != ret) { + THROW_AX_EXCEPTION("link IVPS %d %d to DISP %d %d fail, ret = 0x%x", m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, + m_stModeInfoVo.s32GrpId, m_stModeInfoVo.s32ChnId, ret); + } + } + + // 6. file stream start + if (AX_NVR_CHN_SRC_TYPE::RECORD == m_stAttr.enStreamSrcType) { + if (!m_stAttr.pPlayback->StartPlay(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, m_stAttr.nStartDate, m_stAttr.nStartTime, + m_stAttr.bReverse)) { + LOG_MM_E(TAG, "[%02d:%02d] start record failed.", m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex); + break; + } + } else { + if (!m_stAttr.bRecord || m_stAttr.enView == AX_NVR_CHN_VIEW_TYPE::PATROL) { + /* If record enabled, rtsp had already started within init_rtsp(). */ + if (!GetStream().Start()) { + LOG_MM_E(TAG, "[%02d:%02d] start stream(type: %d) failed.", m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, + m_stAttr.enStreamSrcType); + GetStream().DeInit(); + break; + } + } + } + + bRet = AX_TRUE; + + } while (0); + + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return bRet; +} + +AX_BOOL CAXNVRChannel::StopRtsp(AX_BOOL bForce) { + AX_BOOL bRet = AX_FALSE; + LOG_MM_I(TAG, "[%02d:%02d][state:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + std::lock_guard lock(mutex_); + + do { + if (m_enState != AX_NVR_CHN_STATE::TRANSFER) { + if (AX_NVR_CHN_STATE::IDLE != m_enState) { + LOG_MM_E(TAG, "[%02d][state:%d] state invalid.", m_stAttr.nDevID, m_enState); + } + + bRet = AX_TRUE; + break; + } + + if (!m_stAttr.bRecord || bForce) { + if (!m_objRtspStream.Stop()) { + LOG_MM_E(TAG, "[%02d] Stream stop failed.", m_stAttr.nDevID); + break; + } + + if (bForce && m_stAttr.bRecord && m_stAttr.enView == AX_NVR_CHN_VIEW_TYPE::PREVIEW) { + if (!m_stAttr.pRecord->Stop(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex)) { + LOG_MM_E(TAG, "[%02d:%02d] Stream Record stop failed.", m_stAttr.nDevID, m_stAttr.enIndex); + } + m_objRtspStream.UnRegisterObserver(&m_objRecordObs); + } + + if (!m_objRtspStream.DeInit()) { + LOG_MM_E(TAG, "[%02d] Stream deinit failed.", m_stAttr.nDevID); + break; + } + this->set_state(AX_NVR_CHN_STATE::IDLE); + } else { + LOG_MM_I(TAG, "[%02d:%02d] rtsp record actived. <%d>", m_stAttr.nDevID, m_stAttr.enIndex, m_stAttr.bRecord); + } + + bRet = AX_TRUE; + + } while (0); + + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return bRet; +} + +AX_BOOL CAXNVRChannel::StopFile(AX_VOID) { + AX_BOOL bRet = AX_FALSE; + LOG_MM_I(TAG, "[%02d:%02d][state:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + std::lock_guard lock(mutex_); + do { + if (AX_NVR_CHN_STATE::TRANSFER != m_enState) { + LOG_MM_I(TAG, "[%02d:%02d:][state:%d] state invalid.", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + bRet = AX_TRUE; + break; + } + + if (AX_NVR_CHN_SRC_TYPE::RECORD == m_stAttr.enStreamSrcType) { + m_stAttr.nStartDate = 0; + m_stAttr.nStartTime = 0; + } else if (AX_NVR_CHN_SRC_TYPE::FFMPEG == m_stAttr.enStreamSrcType) { + if (!m_objFFMpegStream.DeInit()) { + LOG_MM_E(TAG, "[%02d] Stream deinit failed.", m_stAttr.nDevID); + break; + } + } + + this->set_state(AX_NVR_CHN_STATE::IDLE); + bRet = AX_TRUE; + + } while (0); + + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return bRet; +} + +AX_BOOL CAXNVRChannel::StopDisp(AX_VOID) { + AX_BOOL bRet = AX_FALSE; + LOG_MM_I(TAG, "[%02d:%02d][state:%d][reverse:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState, m_stAttr.bReverse); + std::lock_guard lock(mutex_); + + do { + if (AX_NVR_CHN_STATE::PAUSED == m_enState) { + if (!this->pause_resume()) { + break; + } + bRet = AX_TRUE; + } + + if (m_enState != AX_NVR_CHN_STATE::STARTED) { + LOG_MM_I(TAG, "[%02d][state:%d] state invalid.", m_stAttr.nDevID, m_enState); + bRet = AX_TRUE; + break; + } + + // unlink or unregister + if (m_stAttr.pDetector && m_stAttr.pDetectObs && AX_NVR_DETECT_SRC_TYPE::NONE != m_stAttr.enDetectSrcType) { + if (AX_NVR_DETECT_SRC_TYPE::IVPS == m_stAttr.enDetectSrcType) { + m_objIvps.UnRegisterObserver(m_stAttr.nRegiIvpsDeteChn, m_stAttr.pDetectObs); + } else if (AX_NVR_DETECT_SRC_TYPE::VDEC == m_stAttr.enDetectSrcType) { + m_objVdec.UnRegisterObserver(m_stAttr.nRegiVdecDeteChn, m_stAttr.pDetectObs); + } + + if (nullptr == m_stAttr.pDisplay->GetVoRegionObs()) { + m_stAttr.pDetector->UnRegisterObserver(m_objIvps.GetGrpId(), &m_objRgnObs); + m_objRegion.Stop(); + m_objRegion.DeInit(); + } else { + CVOLayerRegionObserver *pVoObs = const_cast(m_stAttr.pDisplay->GetVoRegionObs()); + if (nullptr != pVoObs) { + if (AX_NVR_DETECT_SRC_TYPE::IVPS == m_stAttr.enDetectSrcType) { + m_stAttr.pDetector->UnRegisterObserver(m_objIvps.GetGrpId(), pVoObs); + pVoObs->UnRegisterSrcGrp(m_objIvps.GetGrpId()); + } else if (AX_NVR_DETECT_SRC_TYPE::VDEC == m_stAttr.enDetectSrcType) { + m_stAttr.pDetector->UnRegisterObserver(m_objVdec.GetGrpId(), pVoObs); + pVoObs->UnRegisterSrcGrp(m_objVdec.GetGrpId()); + } + } + } + } + + if (AX_NVR_CHN_SRC_TYPE::RTSP == m_stAttr.enStreamSrcType) { + if (!this->GetStream().UnRegisterObserver(&m_objVdec)) { + LOG_MM_E(TAG, "[%02d] Unlink Stream between VDEC failed.", m_stAttr.nDevID); + break; + } + } + + if (m_stAttr.bReverse && m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD && !m_stAttr.pPlayback->GetAttr().bOnlyIFrameOnReverse) { + // unlink vdec -> ivps -> venc ->...-> vdec -> ivps -> vo + StopReversePlaybackLinkages(); + + AX_S32 ret = AX_SYS_UnLink(&m_stModeInfoIvps, &m_stModeInfoVo); + if (0 != ret) { + THROW_AX_EXCEPTION("unlink IVPS_1 %d %d to DISP %d %d fail, ret = 0x%x", m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, + m_stModeInfoVo.s32GrpId, m_stModeInfoVo.s32ChnId, ret); + } else { + LOG_MM_I(TAG, "unlink IVPS_1 %d %d to DISP %d %d OK", m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, + m_stModeInfoVo.s32GrpId, m_stModeInfoVo.s32ChnId); + } + } else { + LOG_MM_I(TAG, "[%02d] UNLink vdec=%d ivps=%d vo=%d", m_stAttr.nDevID, m_objVdec.GetGrpId(), m_objIvps.GetGrpId(), m_stAttr.nVoChannel); + + // vdec unlink ivps + AX_S32 ret = AX_SYS_UnLink(&m_stModeInfoVdec, &m_stModeInfoIvps); + if (0 != ret) { + THROW_AX_EXCEPTION("unlink VDEC %d %d to IVPS %d %d fail, ret = 0x%x", m_stModeInfoVdec.s32GrpId, m_stModeInfoVdec.s32ChnId, + m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, ret); + } else { + LOG_MM_I(TAG, "unlink VDEC %d %d to IVPS %d %d", m_stModeInfoVdec.s32GrpId, m_stModeInfoVdec.s32ChnId, + m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId); + } + + // ivps unlink vo + ret = AX_SYS_UnLink(&m_stModeInfoIvps, &m_stModeInfoVo); + if (0 != ret) { + THROW_AX_EXCEPTION("unlink IVPS %d %d to DISP %d %d fail, ret = 0x%x", m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, + m_stModeInfoVo.s32GrpId, m_stModeInfoVo.s32ChnId, ret); + } else { + LOG_MM_I(TAG, "unlink IVPS %d %d to DISP %d %d", m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, + m_stModeInfoVo.s32GrpId, m_stModeInfoVo.s32ChnId); + } + } + + // clean vo buf + this->clean(m_stAttr.nVoLayer, m_stAttr.nVoChannel); + + // destroy inner modules on REVERSE playback + if (m_stAttr.bReverse && m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD && !m_stAttr.pPlayback->GetAttr().bOnlyIFrameOnReverse) { + DeInitReversePlaybackModules(); + } + + // destroy VDEC + m_objVdec.Stop(); + m_objVdec.DeInit(); + + // destroy IVPS + m_objIvps.Stop(); + m_objIvps.DeInit(); + + // unregister stream observer and stop stream + if (AX_NVR_CHN_SRC_TYPE::FFMPEG == m_stAttr.enStreamSrcType) { + GetStream().UnRegisterObserver(&m_objVdec); + + if (!m_objFFMpegStream.Stop()) { + LOG_MM_E(TAG, "[%02d]FFMPeg Stream stop failed.", m_stAttr.nDevID); + m_objFFMpegStream.DeInit(); + break; + } + } else if (AX_NVR_CHN_SRC_TYPE::RECORD == m_stAttr.enStreamSrcType) { + if (!m_stAttr.pPlayback->UnRegisterObserver(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, &m_objVdec)) { + LOG_MM_E(TAG, "[%02d] Unlink Record Stream between VDEC failed.", m_stAttr.nDevID); + break; + } + + if (!m_stAttr.pPlayback->StopPlay(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex)) { + LOG_MM_E(TAG, "[%02d]Record Stream stop failed.", m_stAttr.nDevID); + break; + } + } + + this->set_state(AX_NVR_CHN_STATE::TRANSFER); + + bRet = AX_TRUE; + + } while (0); + + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return bRet; +} + +AX_BOOL CAXNVRChannel::InitReversePlaybackModules(AX_U32 nWidth, AX_U32 nHeight, AX_F32 fFps, AX_U32 nGop, AX_PAYLOAD_TYPE_E enPayload) { + LOG_MM_I(TAG, "+++"); + + AX_S32 nGrp = m_objVdec.GetGrpId() + MAX_DEVICE_PLAYBACK_COUNT; + // init and start + if (!this->init_ivps2(nWidth, nHeight, (AX_IVPS_GRP)nGrp)) { + LOG_MM_E(TAG, "[%02d] Create and Start IVPS_2 failed.", m_stAttr.nDevID); + return AX_FALSE; + } + + // create IVPS link info: link to VENC + m_stModeInfoIvps2 = {AX_ID_IVPS, (AX_S32)(m_objIvps2.GetGrpId()), 0}; + + // init and start + if (!this->init_venc(enPayload, nWidth, nHeight, (AX_U32)fFps, (VENC_GRP)nGrp)) { + LOG_MM_E(TAG, "[%02d] Create and Start VENC failed.", m_stAttr.nDevID); + return AX_FALSE; + } + + if (!this->init_transfer((AX_U32)fFps, nGop, nGrp)) { + LOG_MM_E(TAG, "[%02d] Create and Start TRANSFER failed.", m_stAttr.nDevID); + return AX_FALSE; + } else { + m_objVenc.RegisterObserver(&m_objStreamTrans); + } + + m_stModeInfoVenc = {AX_ID_VENC, 0, nGrp}; + + if (!this->init_vdec2(enPayload, nWidth, nHeight, {0, 0}, nGrp)) { + LOG_MM_E(TAG, "[%02d] Create and Start Decoder failed.", m_stAttr.nDevID); + return AX_FALSE; + } else { + m_objStreamTrans.RegisterObserver(&m_objVdec2); + } + + m_stModeInfoVdec2 = {AX_ID_VDEC, (AX_S32)(m_objVdec2.GetGrpId()), 0}; + + LOG_MM_I(TAG, "---"); + return AX_TRUE; +} + +AX_BOOL CAXNVRChannel::DeInitReversePlaybackModules() { + LOG_MM_I(TAG, "+++"); + + // destroy vdec2 + m_objVdec2.Stop(); + m_objVdec2.DeInit(); + + // destroy venctop + m_objVenc.Stop(); + m_objVenc.DeInit(); + + // destroy ivps2 + m_objIvps2.Stop(); + m_objIvps2.DeInit(); + + // destroy stream transfer + m_objStreamTrans.Stop(); + m_objStreamTrans.DeInit(); + + LOG_MM_I(TAG, "---"); + + return AX_TRUE; +} + +AX_BOOL CAXNVRChannel::StartReversePlaybackLinkages() { + LOG_MM_I(TAG, "+++"); + + // VDEC link IVPS_2 + AX_S32 ret = AX_SYS_Link(&m_stModeInfoVdec, &m_stModeInfoIvps2); + if (0 != ret) { + THROW_AX_EXCEPTION("link VDEC %d %d to IVPS_2 %d %d fail, ret = 0x%x", m_stModeInfoVdec.s32GrpId, m_stModeInfoVdec.s32ChnId, + m_stModeInfoIvps2.s32GrpId, m_stModeInfoIvps2.s32ChnId, ret); + } else { + LOG_MM_W(TAG, "link VDEC %d %d to IVPS_2 %d %d OK", m_stModeInfoVdec.s32GrpId, m_stModeInfoVdec.s32ChnId, + m_stModeInfoIvps2.s32GrpId, m_stModeInfoIvps2.s32ChnId); + } + + // IVPS_2 link VENC + ret = AX_SYS_Link(&m_stModeInfoIvps2, &m_stModeInfoVenc); + if (0 != ret) { + THROW_AX_EXCEPTION("link IVPS2 %d %d to VENC %d %d fail, ret = 0x%x", m_stModeInfoIvps2.s32GrpId, m_stModeInfoIvps2.s32ChnId, + m_stModeInfoVenc.s32GrpId, m_stModeInfoVenc.s32ChnId, ret); + } else { + LOG_MM_W(TAG, "link IVPS2 %d %d to VENC %d %d OK", m_stModeInfoIvps2.s32GrpId, m_stModeInfoIvps2.s32ChnId, + m_stModeInfoVenc.s32GrpId, m_stModeInfoVenc.s32ChnId); + } + + // VDEC_2 link IVPS_1 + ret = AX_SYS_Link(&m_stModeInfoVdec2, &m_stModeInfoIvps); + if (0 != ret) { + THROW_AX_EXCEPTION("link VDEC_2 %d %d to IVPS_1 %d %d fail, ret = 0x%x", m_stModeInfoVdec2.s32GrpId, m_stModeInfoVdec2.s32ChnId, + m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, ret); + } else { + LOG_MM_W(TAG, "link VDEC_2 %d %d to IVPS_1 %d %d OK", m_stModeInfoVdec2.s32GrpId, m_stModeInfoVdec2.s32ChnId, + m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId); + } + + LOG_MM_I(TAG, "---"); + return AX_TRUE; +} + +AX_BOOL CAXNVRChannel::StopReversePlaybackLinkages() { + LOG_MM_I(TAG, "+++"); + + // VDEC unlink IVPS_2 + AX_S32 ret = AX_SYS_UnLink(&m_stModeInfoVdec, &m_stModeInfoIvps2); + if (0 != ret) { + THROW_AX_EXCEPTION("unlink VDEC %d %d to IVPS_2 %d %d fail, ret = 0x%x", m_stModeInfoVdec.s32GrpId, m_stModeInfoVdec.s32ChnId, + m_stModeInfoIvps2.s32GrpId, m_stModeInfoIvps2.s32ChnId, ret); + } else { + LOG_MM_W(TAG, "unlink VDEC %d %d to IVPS_2 %d %d OK", m_stModeInfoVdec.s32GrpId, m_stModeInfoVdec.s32ChnId, + m_stModeInfoIvps2.s32GrpId, m_stModeInfoIvps2.s32ChnId); + } + + // IVPS_2 unlink VENC + ret = AX_SYS_UnLink(&m_stModeInfoIvps2, &m_stModeInfoVenc); + if (0 != ret) { + THROW_AX_EXCEPTION("unlink IVPS2 %d %d to VENC %d %d fail, ret = 0x%x", m_stModeInfoIvps2.s32GrpId, m_stModeInfoIvps2.s32ChnId, + m_stModeInfoVenc.s32GrpId, m_stModeInfoVenc.s32ChnId, ret); + } else { + LOG_MM_W(TAG, "unlink IVPS2 %d %d to VENC %d %d OK", m_stModeInfoIvps2.s32GrpId, m_stModeInfoIvps2.s32ChnId, + m_stModeInfoVenc.s32GrpId, m_stModeInfoVenc.s32ChnId); + } + + // VDEC_2 unlink IVPS_1 + ret = AX_SYS_UnLink(&m_stModeInfoVdec2, &m_stModeInfoIvps); + if (0 != ret) { + THROW_AX_EXCEPTION("unlink VDEC_2 %d %d to IVPS_1 %d %d fail, ret = 0x%x", m_stModeInfoVdec2.s32GrpId, m_stModeInfoVdec2.s32ChnId, + m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, ret); + } else { + LOG_MM_W(TAG, "unlink VDEC_2 %d %d to IVPS_1 %d %d OK", m_stModeInfoVdec2.s32GrpId, m_stModeInfoVdec2.s32ChnId, + m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId); + } + + LOG_MM_I(TAG, "---"); + return AX_TRUE; +} + +AX_BOOL CAXNVRChannel::UpdateRect(const AX_VO_RECT_T &stRect) { + AX_BOOL bRet = AX_FALSE; + LOG_MM_D(TAG, "[%02d:%02d][state:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + std::lock_guard lock(mutex_); + + do { + if (m_enState != AX_NVR_CHN_STATE::STARTED) { + LOG_MM_D(TAG, "[%02d][state:%d] state invalid.", m_stAttr.nDevID, m_enState); + break; + } + AX_F32 fFps = 0; + // AX_U32 u32Width = 0; + // AX_U32 u32Height = 0; + if (m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD) { + AXDS_STREAM_INFO_T stStream; + m_stAttr.pPlayback->GetStreamInfo(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, m_stAttr.nStartDate, stStream); + fFps = stStream.uFrameRate; + } else { + const STREAM_INFO_T &streamInfo = this->GetStream().GetStreamInfo(); + fFps = streamInfo.stVideo.nFps; + // u32Width = streamInfo.stVideo.nFps; + // u32Height = streamInfo.stVideo.nFps; + } + + // set vo channel fps + if (!this->set_fps(m_stAttr.nVoLayer, m_stAttr.nVoChannel, fFps)) { + break; + } + + IVPS_CHN_ATTR_T stChnAttr = m_objIvps.GetAttr().stChnAttr[m_stAttr.nLinkIvpsVoooChn]; + LOG_MM_D(TAG, "[%02d]Update Rect %dx%d to %dx%d", m_stAttr.nDevID, stChnAttr.nWidth, stChnAttr.nHeight, stRect.u32Width, + stRect.u32Height); + if (stChnAttr.nWidth == stRect.u32Width && stChnAttr.nHeight == stRect.u32Height) { + bRet = AX_TRUE; + break; + } + + stChnAttr.nWidth = stRect.u32Width; + stChnAttr.nHeight = stRect.u32Height; + stChnAttr.nStride = ALIGN_UP_16(stChnAttr.nWidth); + if (!m_objIvps.UpdateChnAttr(m_stAttr.nLinkIvpsVoooChn, stChnAttr)) { + LOG_MM_E(TAG, "IVPS Update Channel<%d> attr failed", m_stAttr.nLinkIvpsVoooChn); + break; + } + + bRet = AX_TRUE; + + } while (0); + + LOG_MM_D(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return bRet; +} + +AX_BOOL CAXNVRChannel::UpdateRPatrolRect(const AX_VO_RECT_T &stRect) { + AX_BOOL bRet = AX_FALSE; + LOG_MM_I(TAG, "[%02d:%02d][state:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + std::lock_guard lock(mutex_); + + do { + if (m_enState != AX_NVR_CHN_STATE::STARTED && m_enState != AX_NVR_CHN_STATE::PAUSED) { + LOG_MM_W(TAG, "[%02d][state:%d] state invalid.", m_stAttr.nDevID, m_enState); + break; + } + + AX_U32 nSrcWidth = m_objVdec.GetAttr().nWidth; + AX_U32 nSrcHeight = m_objVdec.GetAttr().nHeight; + + AX_VDEC_CHN_ATTR_T tVdecChnAttr = m_objVdec.GetAttr().stChnAttr[m_stAttr.nLinkVdecIvpsChn].stAttr; + AX_U32 nDstWidth = tVdecChnAttr.u32PicWidth; + AX_U32 nDstHeight = tVdecChnAttr.u32PicHeight; + + if (nSrcWidth < stRect.u32Width || nSrcHeight < stRect.u32Height) { /* Keep vdec out resolution and rely on ivps to do resize */ + /* Update vdec output resolution as input */ + tVdecChnAttr.u32PicWidth = nSrcWidth; + tVdecChnAttr.u32PicHeight = ALIGN_UP(nSrcHeight, IVPS_FBC_INPUT_HEIGHT_ALIGN); + tVdecChnAttr.u32FrameStride = ALIGN_UP(tVdecChnAttr.u32PicWidth, VDEC_STRIDE_ALIGN); + m_objVdec.SetChnAttr(m_stAttr.nLinkVdecIvpsChn, tVdecChnAttr); + + /* Update ivps output resolution */ + IVPS_CHN_ATTR_T stChnAttr = m_objIvps.GetAttr().stChnAttr[m_stAttr.nLinkIvpsVoooChn]; + LOG_MM_I(TAG, "[%02d]Update Rect %dx%d to %dx%d", m_stAttr.nDevID, stChnAttr.nWidth, stChnAttr.nHeight, stRect.u32Width, + stRect.u32Height); + if (stChnAttr.nWidth == stRect.u32Width && stChnAttr.nHeight == stRect.u32Height) { + bRet = AX_TRUE; + break; + } + + stChnAttr.nWidth = stRect.u32Width; + stChnAttr.nHeight = stRect.u32Height; + stChnAttr.nStride = ALIGN_UP_16(stChnAttr.nWidth); + if (!m_objIvps.UpdateChnAttr(m_stAttr.nLinkIvpsVoooChn, stChnAttr)) { + LOG_MM_E(TAG, "IVPS Update Channel<%d> attr failed", m_stAttr.nLinkIvpsVoooChn); + break; + } + + bRet = AX_TRUE; + } else { /* Rely on vdec to do resize and ivps bypass */ + // Stop rect drawing + if (m_stAttr.pDetector && m_stAttr.pDetectObs && AX_NVR_DETECT_SRC_TYPE::NONE != m_stAttr.enDetectSrcType) { + if (nullptr == m_stAttr.pDisplay->GetVoRegionObs()) { + m_stAttr.pDetector->UnRegisterObserver(m_objIvps.GetGrpId(), &m_objRgnObs); + } else { + CVOLayerRegionObserver *pVoObs = const_cast(m_stAttr.pDisplay->GetVoRegionObs()); + if (nullptr != pVoObs) { + if (AX_NVR_DETECT_SRC_TYPE::IVPS == m_stAttr.enDetectSrcType) { + pVoObs->UnRegisterSrcGrp(m_objIvps.GetGrpId()); + } else if (AX_NVR_DETECT_SRC_TYPE::VDEC == m_stAttr.enDetectSrcType) { + pVoObs->UnRegisterSrcGrp(m_objVdec.GetGrpId()); + } + } + } + } + + /* Update vdec output resolution according to display */ + tVdecChnAttr.u32PicWidth = stRect.u32Width; + tVdecChnAttr.u32PicHeight = ALIGN_UP(stRect.u32Height, IVPS_FBC_INPUT_HEIGHT_ALIGN); + tVdecChnAttr.u32FrameStride = ALIGN_UP(tVdecChnAttr.u32PicWidth, VDEC_STRIDE_ALIGN); + m_objVdec.SetChnAttr(m_stAttr.nLinkVdecIvpsChn, tVdecChnAttr); + + /* Update ivps output resolution, usually same as input except when input resolution can not match the display */ + IVPS_CHN_ATTR_T tIvpsChnAttr = m_objIvps.GetAttr().stChnAttr[m_stAttr.nLinkIvpsVoooChn]; + LOG_MM_I(TAG, "[%02d]Update Rect %dx%d to %dx%d", m_stAttr.nDevID, tIvpsChnAttr.nWidth, tIvpsChnAttr.nHeight, stRect.u32Width, + stRect.u32Height); + + tIvpsChnAttr.nWidth = stRect.u32Width; + tIvpsChnAttr.nHeight = stRect.u32Height; + tIvpsChnAttr.nStride = ALIGN_UP_16(tIvpsChnAttr.nWidth); + if (!m_objIvps.UpdateChnAttr(m_stAttr.nLinkIvpsVoooChn, tIvpsChnAttr)) { + LOG_MM_E(TAG, "IVPS Update Channel<%d> attr failed", m_stAttr.nLinkIvpsVoooChn); + break; + } + + // Restart rect drawing + if (m_stAttr.pDetector && m_stAttr.pDetectObs && AX_NVR_DETECT_SRC_TYPE::NONE != m_stAttr.enDetectSrcType) { + if (AX_NVR_DETECT_SRC_TYPE::IVPS == m_stAttr.enDetectSrcType) { + if (nullptr == m_stAttr.pDisplay->GetVoRegionObs()) { + m_stAttr.pDetector->RegisterObserver(m_objIvps.GetGrpId(), &m_objRgnObs); + } else { + CVOLayerRegionObserver *pVoObs = const_cast(m_stAttr.pDisplay->GetVoRegionObs()); + if (nullptr != pVoObs) { + pVoObs->RegisterSrcGrp(m_objIvps.GetGrpId(), m_stAttr.nDevID); + } + } + } else if (AX_NVR_DETECT_SRC_TYPE::VDEC == m_stAttr.enDetectSrcType) { + if (nullptr == m_stAttr.pDisplay->GetVoRegionObs()) { + m_stAttr.pDetector->RegisterObserver(m_objVdec.GetGrpId(), &m_objRgnObs); + } else { + CVOLayerRegionObserver *pVoObs = const_cast(m_stAttr.pDisplay->GetVoRegionObs()); + if (nullptr != pVoObs) { + pVoObs->RegisterSrcGrp(m_objVdec.GetGrpId(), m_stAttr.nDevID); + } + } + } + } + + bRet = AX_TRUE; + } + } while (0); + + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return bRet; +} + +AX_BOOL CAXNVRChannel::PauseResume(AX_BOOL bForceResume) { + AX_BOOL bRet = AX_FALSE; + LOG_MM_I(TAG, "[%02d:%02d][state:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + std::lock_guard lock(mutex_); + bRet = this->pause_resume(bForceResume); + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return bRet; +} + +AX_BOOL CAXNVRChannel::Step(AX_BOOL bReverse) { + AX_BOOL bRet = AX_FALSE; + LOG_MM_I(TAG, "[%02d:%02d][state:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + std::lock_guard lock(mutex_); + do { + if (AX_NVR_CHN_STATE::PAUSED != m_enState) { + LOG_MM_W(TAG, "Not in PAUSED state, ignore step operation."); + bRet = AX_TRUE; + break; + } + + if (bReverse != m_stAttr.bReverse) { + AX_PAYLOAD_TYPE_E enPayload = AX_PAYLOAD_TYPE_E::PT_BUTT; + AX_F32 fFps = 0; + AX_U32 nGop = 0; + AX_U32 nWidth = 0; + AX_U32 nHeight = 0; + + AXDS_STREAM_INFO_T stStream; + if (!m_stAttr.pPlayback->GetStreamInfo(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, m_stAttr.nStartDate, stStream)) { + LOG_MM_E(TAG, "[%02d-%02d] Get record info failed.", m_stAttr.nDevID, m_stAttr.enIndex); + break; + } + + fFps = stStream.uFrameRate; + nGop = stStream.uGop; + enPayload = stStream.uEncodeType; + nWidth = stStream.uWidth; + nHeight = stStream.uHeight; + + if (bReverse) { /* Forward => Reverse */ + LOG_MM_W(TAG, "Forward => Reverse START +++"); + /* <------------------ STOP ------------------*/ + AX_S32 ret = AX_SYS_UnLink(&m_stModeInfoVdec, &m_stModeInfoIvps); + if (0 != ret) { + THROW_AX_EXCEPTION("unlink VDEC %d %d to IVPS %d %d fail, ret = 0x%x", m_stModeInfoVdec.s32GrpId, m_stModeInfoVdec.s32ChnId, + m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, ret); + } + m_objVdec.Stop(); + + /* <------------------ START ------------------*/ + InitReversePlaybackModules(nWidth, nHeight, fFps, nGop, enPayload); + StartReversePlaybackLinkages(); + LOG_MM_W(TAG, "Forward => Reverse START ---"); + } else { /* Reverse => Forward */ + LOG_MM_W(TAG, "Reverse => Forward START +++"); + /* <------------------ STOP ------------------*/ + StopReversePlaybackLinkages(); + DeInitReversePlaybackModules(); + m_objVdec.Stop(); + + /* <------------------ START ------------------*/ + AX_S32 ret = AX_SYS_Link(&m_stModeInfoVdec, &m_stModeInfoIvps); + if (0 != ret) { + THROW_AX_EXCEPTION("link VDEC %d %d to IVPS %d %d fail, ret = 0x%x", m_stModeInfoVdec.s32GrpId, m_stModeInfoVdec.s32ChnId, + m_stModeInfoIvps.s32GrpId, m_stModeInfoIvps.s32ChnId, ret); + } + LOG_MM_W(TAG, "Reverse => Forward START ---"); + } + + // ivps reset + m_objIvps.ResetGrp(); + // vo reset + AX_VO_ClearChnBuf(m_stAttr.nVoLayer, m_stAttr.nVoChannel, AX_TRUE); + // vdec start + m_objVdec.Start(); + // datastream restart + m_stAttr.bReverse = bReverse; + m_stAttr.pPlayback->ChangeDirection(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, m_stAttr.bReverse); + } + + AX_S32 ret = AX_VO_StepChn(m_stAttr.nVoLayer, m_stAttr.nVoChannel); + if (0 != ret) { + LOG_MM_E(TAG, "AX_VO_StepChn[%d-%d] failed, ret=0x%x", m_stAttr.nVoLayer, m_stAttr.nVoChannel, ret); + break; + } + + if (m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD) { + m_stAttr.pPlayback->StepFrame(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex); + } + + bRet = AX_TRUE; + } while (0); + + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return bRet; +} + +AX_BOOL CAXNVRChannel::UpdateFps(AX_F32 fFpsFactor) { + LOG_MM_I(TAG, "[%02d:%02d][state:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + std::lock_guard lock(mutex_); + AX_BOOL bRet = AX_FALSE; + + do { +#if 0 + AX_F32 fFps = 0; + // AX_U32 u32Width = 0; + // AX_U32 u32Height = 0; + if (m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD) { + AXDS_STREAM_INFO_T stStream; + m_stAttr.pPlayback->GetStreamInfo(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, m_stAttr.nStartDate, stStream); + fFps = stStream.uFrameRate; + } else { + const STREAM_INFO_T &streamInfo = this->GetStream().GetStreamInfo(); + fFps = streamInfo.stVideo.nFps; + // u32Width = streamInfo.stVideo.nFps; + // u32Height = streamInfo.stVideo.nFps; + } + + if (!this->set_fps(m_stAttr.nVoLayer, m_stAttr.nVoChannel, fFps, fFpsFactor)) { + break; + } +#else + if (m_stAttr.pPlayback == nullptr) { + LOG_MM_E(TAG, "[%02d:%02d] Invalid playback handle.", m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex); + break; + } + + if (!m_stAttr.pPlayback->ChangeSpeed(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, fFpsFactor)) { + LOG_MM_E(TAG, "[%02d:%02d] Playback change speed failed.", m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex); + break; + } +#endif + + bRet = AX_TRUE; + + } while (0); + + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return bRet; +} + +AX_BOOL CAXNVRChannel::Crop(const AX_VO_RECT_T &stRect, const AX_IVPS_RECT_T &stCropRect, AX_BOOL bCrop) { + LOG_MM_I(TAG, "[%02d:%02d][state:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + std::lock_guard lock(mutex_); + + AX_BOOL bRet = AX_FALSE; + + do { + if (AX_NVR_CHN_STATE::STARTED != m_enState && AX_NVR_CHN_STATE::PAUSED != m_enState) { + LOG_MM_I(TAG, "[%02d][state:%d] state invalid.", m_stAttr.nDevID, m_enState); + bRet = AX_TRUE; + break; + } + + if (!m_objIvps.CropResize(bCrop, stCropRect)) { + LOG_MM_E(TAG, "IVPS CropResize Channel<%d> attr failed", m_stAttr.nLinkIvpsVoooChn); + break; + } + + if (AX_NVR_CHN_STATE::PAUSED == m_enState) { + AX_S32 s32Ret = AX_VO_RefreshChn(m_stAttr.nVoLayer, m_stAttr.nVoChannel); + if (s32Ret != 0) { + LOG_MM_E(TAG, "AX_VO_RefreshChn 0x%x ", s32Ret); + break; + } + } + + bRet = AX_TRUE; + + } while (0); + + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return AX_TRUE; +} + +AX_NVR_CHN_RES_T CAXNVRChannel::GetResolution(AX_VOID) { + LOG_MM_I(TAG, "[%02d:%02d][state:%d] +++", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + std::lock_guard lock(mutex_); + + AX_NVR_CHN_RES_T stChnRes; + // AX_U32 u32Width = 0; + // AX_U32 u32Height = 0; + if (m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RECORD) { + AXDS_STREAM_INFO_T stStream; + m_stAttr.pPlayback->GetStreamInfo(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, m_stAttr.nStartDate, stStream); + stChnRes.w = stStream.uWidth; + stChnRes.h = stStream.uHeight; + } else { + #if 0 + const STREAM_INFO_T &streamInfo = this->GetStream().GetStreamInfo(); + stChnRes.w = streamInfo.stVideo.nWidth; + stChnRes.h = streamInfo.stVideo.nHeight; + #else + stChnRes.w = m_objVdec.GetAttr().stChnAttr[m_stAttr.nLinkVdecIvpsChn].stAttr.u32PicWidth; + stChnRes.h = m_objVdec.GetAttr().stChnAttr[m_stAttr.nLinkVdecIvpsChn].stAttr.u32PicHeight; + #endif + } + + LOG_MM_I(TAG, "[%02d:%02d][state:%d] ---", m_stAttr.nDevID, m_stAttr.enIndex, m_enState); + return stChnRes; +} + +VO_CHN CAXNVRChannel::GetCurrentVoChn(AX_VOID) { + std::lock_guard lock(mutex_); + return m_stAttr.nVoChannel; +} + +std::pair CAXNVRChannel::GetCurrentDateTime(AX_VOID) { + std::lock_guard lock(mutex_); + if (m_stAttr.pPlayback) { + return m_stAttr.pPlayback->GetCurrentDateTime(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex); + } + + return make_pair(0, 0); +} + +AX_BOOL CAXNVRChannel::init_rtsp(const std::string &strURL, AX_S32 nCookie) { + extern int ping4(const char *ip, int timeout); + + AX_BOOL bRet = AX_FALSE; + + do { + if (m_stAttr.bPing) { + if (0 != ping4(strURL.c_str(), 2 /* seconds */)) { + LOG_MM_E(TAG, "network to %s is down, please check network", strURL.c_str()); + break; + } + } + + STREAM_ATTR_T stAttr; + stAttr.strURL = strURL; + stAttr.nCookie = nCookie; + if (!m_objRtspStream.Init(stAttr)) { + LOG_MM_E(TAG, "[%02d]RTSP %s Stream initialize failed.", m_stAttr.nDevID, strURL.c_str()); + break; + } + +#if 0 /* move rtsp start after sdk is ready to make sure the 1st decoded nalu is IDR */ + if (!m_objRtspStream.Start()) { + LOG_MM_E(TAG, "[%02d]RTSP %s Stream start failed.", m_stAttr.nDevID, strURL.c_str()); + m_objRtspStream.DeInit(); + break; + } +#endif + + if (m_stAttr.bRecord && m_stAttr.enView == AX_NVR_CHN_VIEW_TYPE::PREVIEW) { + /* Always start rtsp when record enabled */ + if (!m_objRtspStream.Start()) { + LOG_MM_E(TAG, "[%02d]RTSP %s Stream start failed.", m_stAttr.nDevID, strURL.c_str()); + m_objRtspStream.DeInit(); + break; + } + + m_objRecordObs.SetAttr(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, m_stAttr.pRecord); + m_objRtspStream.RegisterObserver(&m_objRecordObs); + + const STREAM_INFO_T &streamInfo = this->GetStream().GetStreamInfo(); + AXDSF_INIT_ATTR_T tStreamAttr = {1 /* minutes */, + streamInfo.stVideo.enPayload, + (AX_U16)streamInfo.stVideo.nFps, + 25, + (AX_U16)streamInfo.stVideo.nWidth, + (AX_U16)streamInfo.stVideo.nHeight}; + if (!m_stAttr.pRecord->Start(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex, tStreamAttr)) { + m_objRtspStream.UnRegisterObserver(&m_objRecordObs); + LOG_MM_E(TAG, "[%02d:%02d]Record data stream start failed.", m_stAttr.nDevID, m_stAttr.enIndex); + } + } + + bRet = AX_TRUE; + } while (0); + + return bRet; +} + +AX_BOOL CAXNVRChannel::init_ffmpeg(AX_VOID) { + AX_BOOL bRet = AX_FALSE; + do { + STREAM_ATTR_T stAttr; + stAttr.strURL = "/opt/bin/NVRDemo/road3.264"; // for test + // stAttr.strURL = "/opt/bin/NVRDemo/DEV_00_STREAM_00.h264"; // for test + + stAttr.nFps = -1; + if (!m_objFFMpegStream.Init(stAttr)) { + LOG_MM_E(TAG, "[%02d]FFMPEG %s Stream initialize failed.", m_stAttr.nDevID, stAttr.strURL.c_str()); + break; + } + + bRet = AX_TRUE; + } while (0); + + return bRet; +} + +AX_BOOL CAXNVRChannel::init_vdec(AX_PAYLOAD_TYPE_E enPayload, AX_U32 nWidth, AX_U32 nHeight, const AX_VO_SIZE_T &voSize, + AX_VDEC_GRP vdGrp /* = INVALID_VDEC_GRP */) { + AX_NVR_FBC_CONFIG_T fbcCfg = CNVRConfigParser::GetInstance()->GetFBCConfig(); + + VDEC_ATTR_T stAttr; + stAttr.vdGrp = vdGrp; + stAttr.enCodecType = enPayload; + stAttr.nWidth = ALIGN_UP_16(nWidth); /* H264 MB 16x16 */ + stAttr.nHeight = ALIGN_UP_16(nHeight); /* H264 MB 16x16 */ + stAttr.nMaxStreamBufSize = stAttr.nWidth * stAttr.nHeight * 3 / 2; + stAttr.enDecodeMode = + (m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RTSP) ? AX_VDEC_DISPLAY_MODE_PREVIEW : AX_VDEC_DISPLAY_MODE_PLAYBACK; + stAttr.bPrivatePool = AX_TRUE; + + if (m_stAttr.enStreamSrcType == AX_NVR_CHN_SRC_TYPE::RTSP) { + /* 2 frame for vdec to send, too long will cause rtsp drop packet */ + AX_U32 fps = GetStream().GetStreamInfo().stVideo.nFps; + stAttr.nTimeOut = ((fps > 0) ? (1000 / fps * 2) : 100); + } else { + stAttr.nTimeOut = -1; + } + + for (AX_S32 j = 0; j < MAX_VDEC_CHN_NUM; ++j) { + switch (j) { + case 0: + /* PLAYBACK PP */ + if (AX_NVR_CHN_VIEW_TYPE::PLAYBACK != m_stAttr.enView) { + break; + } + + m_stAttr.nLinkVdecIvpsChn = j; + + stAttr.stChnAttr[j].bEnable = AX_TRUE; + stAttr.stChnAttr[j].bLinked = AX_TRUE; + stAttr.stChnAttr[j].stAttr.u32OutputFifoDepth = (stAttr.stChnAttr[j].bLinked) ? 0 : m_stAttr.nPpDepth[j]; + stAttr.stChnAttr[j].stAttr.u32PicWidth = nWidth; + stAttr.stChnAttr[j].stAttr.u32PicHeight = nHeight; + + if (fbcCfg.nLv > 0) { + stAttr.stChnAttr[j].stAttr.stCompressInfo.enCompressMode = AX_COMPRESS_MODE_LOSSY; + stAttr.stChnAttr[j].stAttr.stCompressInfo.u32CompressLevel = fbcCfg.nLv; + stAttr.stChnAttr[j].stAttr.u32PicHeight = ALIGN_DOWN(stAttr.stChnAttr[j].stAttr.u32PicHeight, 4); + } + + stAttr.stChnAttr[j].stAttr.u32FrameStride = ALIGN_UP(stAttr.stChnAttr[j].stAttr.u32PicWidth, VDEC_STRIDE_ALIGN); + stAttr.stChnAttr[j].stAttr.enOutputMode = AX_VDEC_OUTPUT_ORIGINAL; + stAttr.stChnAttr[j].stAttr.enImgFormat = AX_FORMAT_YUV420_SEMIPLANAR; + + if (stAttr.bPrivatePool) { + AX_VDEC_CHN_ATTR_T &stChnAttr = stAttr.stChnAttr[j].stAttr; + stChnAttr.u32FrameBufSize = CVDEC::GetBlkSize(stChnAttr.u32PicWidth, stChnAttr.u32PicHeight, stAttr.enCodecType, + &stChnAttr.stCompressInfo, stChnAttr.enImgFormat); + if (stAttr.stChnAttr[j].bLinked) { + stChnAttr.u32FrameBufCnt = m_stAttr.nBackupInDepth + 2; + } else { + stChnAttr.u32FrameBufCnt = m_stAttr.nPpDepth[j] + m_stAttr.nBackupInDepth; + } + } + break; + case 1: + /* PREVIEW PP */ + if (AX_NVR_CHN_VIEW_TYPE::PLAYBACK == m_stAttr.enView) { + break; + } + + m_stAttr.nLinkVdecIvpsChn = j; + + stAttr.stChnAttr[j].bEnable = AX_TRUE; + stAttr.stChnAttr[j].bLinked = AX_TRUE; + stAttr.stChnAttr[j].stAttr.u32OutputFifoDepth = (stAttr.stChnAttr[j].bLinked) ? 0 : m_stAttr.nPpDepth[j]; + + #if 0 /* consider zoom ++ */ + if (nWidth > voSize.u32Width && nHeight > voSize.u32Height) { + /* TO save BW and VPP, scaler down by VDEC PP directly */ + stAttr.stChnAttr[j].stAttr.u32PicWidth = voSize.u32Width; + stAttr.stChnAttr[j].stAttr.u32PicHeight = voSize.u32Height; + } else { + stAttr.stChnAttr[j].stAttr.u32PicWidth = nWidth; + stAttr.stChnAttr[j].stAttr.u32PicHeight = nHeight; + } + #else + stAttr.stChnAttr[j].stAttr.u32PicWidth = nWidth; + stAttr.stChnAttr[j].stAttr.u32PicHeight = nHeight; + #endif + + if (fbcCfg.nLv > 0) { + stAttr.stChnAttr[j].stAttr.stCompressInfo.enCompressMode = AX_COMPRESS_MODE_LOSSY; + stAttr.stChnAttr[j].stAttr.stCompressInfo.u32CompressLevel = fbcCfg.nLv; + stAttr.stChnAttr[j].stAttr.u32PicHeight = ALIGN_DOWN(stAttr.stChnAttr[j].stAttr.u32PicHeight, 4); + } + + stAttr.stChnAttr[j].stAttr.u32FrameStride = ALIGN_UP(stAttr.stChnAttr[j].stAttr.u32PicWidth, VDEC_STRIDE_ALIGN); + stAttr.stChnAttr[j].stAttr.enOutputMode = AX_VDEC_OUTPUT_SCALE; + stAttr.stChnAttr[j].stAttr.enImgFormat = AX_FORMAT_YUV420_SEMIPLANAR; + + if (stAttr.bPrivatePool) { + AX_VDEC_CHN_ATTR_T &stChnAttr = stAttr.stChnAttr[j].stAttr; + stChnAttr.u32FrameBufSize = CVDEC::GetBlkSize(nWidth, nHeight, stAttr.enCodecType, + &stChnAttr.stCompressInfo, stChnAttr.enImgFormat); + stChnAttr.u32FrameBufCnt = m_stAttr.nPpDepth[j]; + } + break; + case 2: + /* DETECT PP */ + if (m_stAttr.enDetectSrcType == AX_NVR_DETECT_SRC_TYPE::VDEC) { + m_stAttr.nRegiVdecDeteChn = j; + + stAttr.nFps = GetStream().GetStreamInfo().stVideo.nFps; + + CONST DETECTOR_ATTR_T &detAttr = m_stAttr.pDetector->GetAttr(); + stAttr.stChnAttr[j].bEnable = AX_TRUE; + stAttr.stChnAttr[j].bLinked = AX_FALSE; + stAttr.stChnAttr[j].stAttr.u32OutputFifoDepth = (stAttr.stChnAttr[j].bLinked) ? 0 : m_stAttr.nPpDepth[j]; + stAttr.stChnAttr[j].stAttr.u32PicWidth = detAttr.nWidth; + stAttr.stChnAttr[j].stAttr.u32PicHeight = detAttr.nHeight; + stAttr.stChnAttr[j].stAttr.u32FrameStride = ALIGN_UP(stAttr.stChnAttr[j].stAttr.u32PicWidth, VDEC_STRIDE_ALIGN); + stAttr.stChnAttr[j].stAttr.enOutputMode = AX_VDEC_OUTPUT_SCALE; + stAttr.stChnAttr[j].stAttr.enImgFormat = AX_FORMAT_YUV420_SEMIPLANAR; + if (detAttr.nSkipRate > 1) { + stAttr.stChnAttr[j].stAttr.stOutputFrmRate.bFrmRateCtrl = AX_TRUE; + stAttr.stChnAttr[j].stAttr.stOutputFrmRate.f32DstFrmRate = stAttr.nFps * 1.0 / detAttr.nSkipRate; + } + + if (stAttr.bPrivatePool) { + AX_VDEC_CHN_ATTR_T &stChnAttr = stAttr.stChnAttr[j].stAttr; + stChnAttr.u32FrameBufSize = CVDEC::GetBlkSize(stChnAttr.u32PicWidth, stChnAttr.u32PicHeight, stAttr.enCodecType, + &stChnAttr.stCompressInfo, stChnAttr.enImgFormat); + stChnAttr.u32FrameBufCnt = m_stAttr.nPpDepth[j]; + } + } else { + stAttr.stChnAttr[j].bEnable = AX_FALSE; + } + break; + default: + stAttr.stChnAttr[j].bEnable = AX_FALSE; + break; + } + } + + AX_BOOL bRet = AX_FALSE; + do { + if (!m_objVdec.Init(stAttr)) { + LOG_MM_E(TAG, "[%02d]VDEC initialize failed.", m_stAttr.nDevID); + break; + } + + // if (m_enSrcStreamType == AX_NVR_CHN_SRC_TYPE::RTSP) { + if (!m_objVdec.Start()) { + m_objVdec.DeInit(); + LOG_MM_E(TAG, "[%02d]VDEC start failed.", m_stAttr.nDevID); + break; + } + // } + + bRet = AX_TRUE; + } while (0); + + return bRet; +} + +AX_BOOL CAXNVRChannel::init_vdec2(AX_PAYLOAD_TYPE_E enPayload, AX_U32 nWidth, AX_U32 nHeight, const AX_VO_SIZE_T &voSize, + AX_VDEC_GRP vdGrp /* = INVALID_VDEC_GRP */) { + AX_NVR_FBC_CONFIG_T fbcCfg = CNVRConfigParser::GetInstance()->GetFBCConfig(); + + VDEC_ATTR_T stAttr; + stAttr.vdGrp = vdGrp; + stAttr.enCodecType = enPayload; + stAttr.enIPBMode = VIDEO_DEC_MODE_I; + stAttr.nWidth = ALIGN_UP_16(nWidth); /* H264 MB 16x16 */ + stAttr.nHeight = ALIGN_UP_16(nHeight); /* H264 MB 16x16 */ + stAttr.nMaxStreamBufSize = stAttr.nWidth * stAttr.nHeight * 3 / 2; + stAttr.enDecodeMode = AX_VDEC_DISPLAY_MODE_PLAYBACK; + stAttr.bPrivatePool = AX_TRUE; + stAttr.nTimeOut = -1; + + for (AX_S32 j = 0; j < MAX_VDEC_CHN_NUM; ++j) { + switch (j) { + case 0: + /* PLAYBACK PP */ + if (AX_NVR_CHN_VIEW_TYPE::PLAYBACK != m_stAttr.enView) { + break; + } + + m_stAttr.nLinkVdecIvpsChn = j; + + stAttr.stChnAttr[j].bEnable = AX_TRUE; + stAttr.stChnAttr[j].bLinked = AX_TRUE; + stAttr.stChnAttr[j].stAttr.u32OutputFifoDepth = (stAttr.stChnAttr[j].bLinked) ? 0 : m_stAttr.nPpDepth[j]; + stAttr.stChnAttr[j].stAttr.u32PicWidth = nWidth; + stAttr.stChnAttr[j].stAttr.u32PicHeight = nHeight; + + if (fbcCfg.nLv > 0) { + stAttr.stChnAttr[j].stAttr.stCompressInfo.enCompressMode = AX_COMPRESS_MODE_LOSSY; + stAttr.stChnAttr[j].stAttr.stCompressInfo.u32CompressLevel = fbcCfg.nLv; + stAttr.stChnAttr[j].stAttr.u32PicHeight = ALIGN_DOWN(stAttr.stChnAttr[j].stAttr.u32PicHeight, 4); + } + + stAttr.stChnAttr[j].stAttr.u32FrameStride = ALIGN_UP(stAttr.stChnAttr[j].stAttr.u32PicWidth, VDEC_STRIDE_ALIGN); + stAttr.stChnAttr[j].stAttr.enOutputMode = AX_VDEC_OUTPUT_ORIGINAL; + stAttr.stChnAttr[j].stAttr.enImgFormat = AX_FORMAT_YUV420_SEMIPLANAR; + + if (stAttr.bPrivatePool) { + AX_VDEC_CHN_ATTR_T &stChnAttr = stAttr.stChnAttr[j].stAttr; + stChnAttr.u32FrameBufSize = CVDEC::GetBlkSize(stChnAttr.u32PicWidth, stChnAttr.u32PicHeight, stAttr.enCodecType, + &stChnAttr.stCompressInfo, stChnAttr.enImgFormat); + if (stAttr.stChnAttr[j].bLinked) { + stChnAttr.u32FrameBufCnt = m_stAttr.nBackupInDepth + 2; + } else { + stChnAttr.u32FrameBufCnt = m_stAttr.nPpDepth[j] + m_stAttr.nBackupInDepth; + } + } + break; + default: + stAttr.stChnAttr[j].bEnable = AX_FALSE; + break; + } + } + + AX_BOOL bRet = AX_FALSE; + do { + if (!m_objVdec2.Init(stAttr)) { + LOG_MM_E(TAG, "[%02d]VDEC initialize failed.", m_stAttr.nDevID); + break; + } + + if (!m_objVdec2.Start()) { + m_objVdec2.DeInit(); + LOG_MM_E(TAG, "[%02d]VDEC start failed.", m_stAttr.nDevID); + break; + } + + bRet = AX_TRUE; + } while (0); + + return bRet; +} + +AX_BOOL CAXNVRChannel::init_ivps(AX_U32 nSrcW, AX_U32 nSrcH, const AX_VO_RECT_T &voChnWin, AX_IVPS_GRP ivGrp) { + AX_BOOL bRet = AX_FALSE; + do { + AX_U32 nChnNum = 0; + + IVPS_ATTR_T stAttr; + stAttr.nWidth = nSrcW; + stAttr.nHeight = nSrcH; + + stAttr.stChnAttr[nChnNum].enEngine = AX_IVPS_ENGINE_VPP; + stAttr.stChnAttr[nChnNum].nWidth = voChnWin.u32Width; + stAttr.stChnAttr[nChnNum].nHeight = voChnWin.u32Height; + stAttr.stChnAttr[nChnNum].nStride = ALIGN_UP_16(stAttr.stChnAttr[nChnNum].nWidth); + stAttr.stChnAttr[nChnNum].bLinked = AX_TRUE; + stAttr.stChnAttr[nChnNum].nFifoDepth = m_stAttr.nFifoDepthForVo; + stAttr.stChnAttr[nChnNum].stPoolAttr.ePoolSrc = POOL_SOURCE_PRIVATE; + stAttr.stChnAttr[nChnNum].stPoolAttr.nFrmBufNum = m_stAttr.nFrmBufNum; + + m_stAttr.nLinkIvpsVoooChn = nChnNum++; + + if (AX_NVR_DETECT_SRC_TYPE::IVPS == m_stAttr.enDetectSrcType) { + CONST DETECTOR_ATTR_T &detAttr = m_stAttr.pDetector->GetAttr(); + stAttr.stChnAttr[nChnNum].enEngine = AX_IVPS_ENGINE_VPP; + stAttr.stChnAttr[nChnNum].nWidth = detAttr.nWidth; + stAttr.stChnAttr[nChnNum].nHeight = detAttr.nHeight; + stAttr.stChnAttr[nChnNum].nStride = ALIGN_UP_16(stAttr.stChnAttr[nChnNum].nWidth); + stAttr.stChnAttr[nChnNum].bLinked = AX_FALSE; + stAttr.stChnAttr[nChnNum].nFifoDepth = m_stAttr.nFifoDepthForDetect; + stAttr.stChnAttr[nChnNum].stPoolAttr.ePoolSrc = POOL_SOURCE_PRIVATE; + stAttr.stChnAttr[nChnNum].stPoolAttr.nFrmBufNum = m_stAttr.nFrmBufNum; + if (detAttr.nSkipRate > 1) { + stAttr.stChnAttr[nChnNum].stFRC.fSrcFrameRate = m_objRtspStream.GetStreamInfo().stVideo.nFps; + stAttr.stChnAttr[nChnNum].stFRC.fDstFrameRate = stAttr.stChnAttr[nChnNum].stFRC.fSrcFrameRate / detAttr.nSkipRate; + } + + m_stAttr.nRegiIvpsDeteChn = nChnNum; + + nChnNum++; + } + + stAttr.nGrpId = ivGrp; + stAttr.nChnNum = nChnNum; + + if (AX_NVR_CHN_VIEW_TYPE::PLAYBACK == m_stAttr.enView) { + stAttr.nBackupInDepth = m_stAttr.nBackupInDepth; + } + + if (!m_objIvps.Init(stAttr)) { + LOG_MM_E(TAG, "[%02d]IVPS initialize failed.", m_stAttr.nDevID); + break; + } + + // if (m_enSrcStreamType == AX_NVR_CHN_SRC_TYPE::RTSP) { + if (!m_objIvps.Start()) { + LOG_MM_E(TAG, "[%02d]IVPS start failed.", m_stAttr.nDevID); + m_objIvps.DeInit(); + break; + } + // } + bRet = AX_TRUE; + } while (0); + + return bRet; +} + +AX_BOOL CAXNVRChannel::init_ivps2(AX_U32 nSrcW, AX_U32 nSrcH, AX_IVPS_GRP ivGrp) { + AX_BOOL bRet = AX_FALSE; + do { + IVPS_ATTR_T stAttr; + stAttr.nWidth = nSrcW; + stAttr.nHeight = nSrcH; + + stAttr.stChnAttr[0].enEngine = AX_IVPS_ENGINE_VPP; + stAttr.stChnAttr[0].nWidth = nSrcW; + stAttr.stChnAttr[0].nHeight = nSrcH; + stAttr.stChnAttr[0].nStride = ALIGN_UP_16(stAttr.stChnAttr[0].nWidth); + stAttr.stChnAttr[0].bLinked = AX_TRUE; + stAttr.stChnAttr[0].nFifoDepth = m_stAttr.nFifoDepthForVo; + stAttr.stChnAttr[0].stPoolAttr.ePoolSrc = POOL_SOURCE_PRIVATE; + stAttr.stChnAttr[0].stPoolAttr.nFrmBufNum = m_stAttr.nFrmBufNum; + + stAttr.nGrpId = ivGrp; + stAttr.nChnNum = 1; + stAttr.nBackupInDepth = m_stAttr.nBackupInDepth; + + AX_NVR_FBC_CONFIG_T fbcCfg = CNVRConfigParser::GetInstance()->GetFBCConfig(); + if (fbcCfg.nLv > 0) { + stAttr.stChnAttr[0].nStride = ALIGN_UP(stAttr.stChnAttr[0].nWidth, IVPS_FBC_STRIDE_ALIGN); + } + + if (!m_objIvps2.Init(stAttr)) { + LOG_MM_E(TAG, "[%02d]IVPS initialize failed.", m_stAttr.nDevID); + break; + } + + if (!m_objIvps2.Start()) { + LOG_MM_E(TAG, "[%02d]IVPS start failed.", m_stAttr.nDevID); + m_objIvps2.DeInit(); + break; + } + + bRet = AX_TRUE; + } while (0); + + return bRet; +} + +AX_BOOL CAXNVRChannel::init_transfer(AX_U32 nFps, AX_U32 nGop, VENC_GRP veGrp /*= INVALID_VENC_GRP*/) { + if (!m_objStreamTrans.Init(veGrp, nFps, nGop)) { + return AX_FALSE; + } + + if (!m_objStreamTrans.Start()) { + LOG_MM_E(TAG, "Start stream pingpong transfer failed."); + m_objStreamTrans.DeInit(); + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_BOOL CAXNVRChannel::init_venc(AX_PAYLOAD_TYPE_E enPayload, AX_U32 nWidth, AX_U32 nHeight, AX_U32 nFPS, VENC_GRP veGrp /*= INVALID_VENC_GRP*/) { + AX_BOOL bRet = AX_FALSE; + do { + VENC_ATTR_T tVencAttr; + + tVencAttr.nChannel = veGrp; + tVencAttr.ePayloadType = enPayload; + tVencAttr.eRcType = (PT_H264 == enPayload ? AX_VENC_RC_MODE_H264CBR : AX_VENC_RC_MODE_H265CBR); + tVencAttr.nGOP = 1; + tVencAttr.fFramerate = nFPS; + tVencAttr.nWidth = nWidth; + tVencAttr.nHeight = nHeight; + tVencAttr.nMaxWidth = nWidth; + tVencAttr.nMaxHeight = nHeight; + tVencAttr.nBufSize = 2 * 1024 * 1024; + tVencAttr.nInFifoDepth = 2; + tVencAttr.nOutFifoDepth = 2; + tVencAttr.eMemSource = AX_MEMORY_SOURCE_CMM; + tVencAttr.eImgFormat = AX_FORMAT_YUV420_SEMIPLANAR; + tVencAttr.nBitrate = 8192; + tVencAttr.bFBC = AX_FALSE; + tVencAttr.bLink = AX_TRUE; + tVencAttr.nGdrNum = 0; + + /* H264 RC config */ + tVencAttr.arrRcConfig[0].ePayloadType = PT_H264; + tVencAttr.arrRcConfig[0].stRCInfo[0].eRcType = AX_VENC_RC_MODE_H264CBR; + tVencAttr.arrRcConfig[0].stRCInfo[0].nMinQp = 0; + tVencAttr.arrRcConfig[0].stRCInfo[0].nMaxQp = 51; + tVencAttr.arrRcConfig[0].stRCInfo[0].nMinIQp = 0; + tVencAttr.arrRcConfig[0].stRCInfo[0].nMaxIQp = 51; + tVencAttr.arrRcConfig[0].stRCInfo[0].nMinIProp = 10; + tVencAttr.arrRcConfig[0].stRCInfo[0].nMaxIProp = 40; + tVencAttr.arrRcConfig[0].stRCInfo[0].nIntraQpDelta = -2; + tVencAttr.arrRcConfig[0].stRCInfo[0].nBitrate = 4096; + tVencAttr.arrRcConfig[0].stRCInfo[1].eRcType = AX_VENC_RC_MODE_H264VBR; + tVencAttr.arrRcConfig[0].stRCInfo[1].nMinQp = 0; + tVencAttr.arrRcConfig[0].stRCInfo[1].nMaxQp = 51; + tVencAttr.arrRcConfig[0].stRCInfo[1].nMinIQp = 0; + tVencAttr.arrRcConfig[0].stRCInfo[1].nMaxIQp = 51; + tVencAttr.arrRcConfig[0].stRCInfo[1].nMinIProp = 10; + tVencAttr.arrRcConfig[0].stRCInfo[1].nMaxIProp = 40; + tVencAttr.arrRcConfig[0].stRCInfo[1].nFixQp = 25; + tVencAttr.arrRcConfig[0].stRCInfo[1].nIntraQpDelta = -2; + tVencAttr.arrRcConfig[0].stRCInfo[1].nBitrate = 4096; + /* H265 RC config */ + tVencAttr.arrRcConfig[1].ePayloadType = PT_H265; + tVencAttr.arrRcConfig[1].stRCInfo[0].eRcType = AX_VENC_RC_MODE_H265CBR; + tVencAttr.arrRcConfig[1].stRCInfo[0].nMinQp = 0; + tVencAttr.arrRcConfig[1].stRCInfo[0].nMaxQp = 51; + tVencAttr.arrRcConfig[1].stRCInfo[0].nMinIQp = 0; + tVencAttr.arrRcConfig[1].stRCInfo[0].nMaxIQp = 51; + tVencAttr.arrRcConfig[1].stRCInfo[0].nMinIProp = 10; + tVencAttr.arrRcConfig[1].stRCInfo[0].nMaxIProp = 40; + tVencAttr.arrRcConfig[1].stRCInfo[0].nIntraQpDelta = -2; + tVencAttr.arrRcConfig[1].stRCInfo[0].nBitrate = 4096; + tVencAttr.arrRcConfig[1].stRCInfo[1].eRcType = AX_VENC_RC_MODE_H265VBR; + tVencAttr.arrRcConfig[1].stRCInfo[1].nMinQp = 0; + tVencAttr.arrRcConfig[1].stRCInfo[1].nMaxQp = 51; + tVencAttr.arrRcConfig[1].stRCInfo[1].nMinIQp = 0; + tVencAttr.arrRcConfig[1].stRCInfo[1].nMaxIQp = 51; + tVencAttr.arrRcConfig[1].stRCInfo[1].nMinIProp = 10; + tVencAttr.arrRcConfig[1].stRCInfo[1].nMaxIProp = 40; + tVencAttr.arrRcConfig[1].stRCInfo[1].nFixQp = 25; + tVencAttr.arrRcConfig[1].stRCInfo[1].nIntraQpDelta = -2; + tVencAttr.arrRcConfig[1].stRCInfo[1].nBitrate = 4096; + + bRet = m_objVenc.Init(tVencAttr); + if (!bRet) { + LOG_MM_E(TAG, "[%02d] VENC initialize failed.", m_stAttr.nDevID); + return AX_FALSE; + } + + bRet = m_objVenc.Start(); + if (!bRet) { + LOG_MM_E(TAG, "[%02d] VENC start failed.", m_stAttr.nDevID); + m_objVenc.DeInit(); + } + + bRet = AX_TRUE; + } while (0); + + return bRet; +} + +AX_BOOL CAXNVRChannel::init_region(AX_S32 nGrp, AX_U32 nSrcW, AX_U32 nSrcH, const AX_VO_RECT_T &voChnWin) { + AX_BOOL bRet = AX_FALSE; + do { + NVR_REGION_ATTR_T rgnAttr; + rgnAttr.nGroup = nGrp; + rgnAttr.nChn = m_stAttr.nLinkIvpsVoooChn; + rgnAttr.nWidth = voChnWin.u32Width; + rgnAttr.nHeight = voChnWin.u32Height; + rgnAttr.nSrcW = nSrcW; + rgnAttr.nSrcH = nSrcH; + + if (m_stAttr.pDisplay->GetFBPaint() == nullptr) { + rgnAttr.enType = AX_NVR_RGN_TYPE::IVPS; + } else { + rgnAttr.enType = AX_NVR_RGN_TYPE::VOFB; + AX_NVR_RECT_T rect; + if (m_stAttr.pDisplay->GetChannelRect(m_stAttr.nVoChannel, rect)) { + rgnAttr.nW = rect.w; + rgnAttr.nH = rect.h; + } + rgnAttr.pVo = const_cast(m_stAttr.pDisplay->GetVo()); + rgnAttr.pFb = const_cast(m_stAttr.pDisplay->GetFBPaint()); + rgnAttr.nVoLayer = m_stAttr.nVoLayer; + rgnAttr.nVoChannel = m_stAttr.nVoChannel; + } + + if (!m_objRegion.Init(rgnAttr)) { + break; + } + + if (!m_objRegion.Start()) { + m_objRegion.DeInit(); + break; + } + bRet = AX_TRUE; + } while (0); + return bRet; +} + +CStream0 &CAXNVRChannel::GetStream(AX_VOID) { + switch (m_stAttr.enStreamSrcType) { + case AX_NVR_CHN_SRC_TYPE::RTSP: + return m_objRtspStream; + case AX_NVR_CHN_SRC_TYPE::FFMPEG: + return m_objFFMpegStream; + case AX_NVR_CHN_SRC_TYPE::RECORD: + return m_objFFMpegStream; + default: + break; + } + return m_objRtspStream; +} + +const AX_NVR_CHN_STATE& CAXNVRChannel::GetCurrentState(AX_VOID) { + std::lock_guard lock(mutex_); + return m_enState; +} + +AX_VOID CAXNVRChannel::set_state(AX_NVR_CHN_STATE enStatus) { + LOG_MM_D(TAG, "[%02d]change state %d to %d", m_stAttr.nDevID, m_enState, enStatus); + m_enState = enStatus; +} + +AX_BOOL CAXNVRChannel::set_fps(VO_LAYER nVoLayer, VO_CHN nVoChannel, AX_F32 fFps, AX_F32 fFactor /*= 1.0f*/) { + if (m_stAttr.enView == AX_NVR_CHN_VIEW_TYPE::PLAYBACK) { + AX_S32 ret = AX_VO_SetChnFrameRate(nVoLayer, nVoChannel, fFps * fFactor); + if (0 != ret) { + LOG_MM_E(TAG, "AX_VO_SetChnFrameRate[%d-%d] fps=%f, factor=%f failed, ret=0x%x", nVoLayer, nVoChannel, fFps, fFactor, ret); + return AX_FALSE; + } + } + return AX_TRUE; +} + +AX_BOOL CAXNVRChannel::clean(VO_LAYER nVoLayer, VO_CHN nVoChannel) { + AX_S32 ret = AX_VO_ClearChnBuf(nVoLayer, nVoChannel, AX_TRUE); + if (0 != ret) { + LOG_MM_E(TAG, "AX_VO_ClearChnBuf[%d-%d] failed, ret=0x%x", nVoLayer, nVoChannel, ret); + return AX_FALSE; + } + + m_stAttr.reset_vo(); + return AX_TRUE; +} + +AX_BOOL CAXNVRChannel::pause_resume(AX_BOOL bForceResume) { + AX_BOOL bRet = AX_FALSE; + do { + AX_S32 ret = -1; + if (AX_NVR_CHN_STATE::STARTED == m_enState) { + if (!bForceResume) { + if (AX_NVR_CHN_SRC_TYPE::RECORD == m_stAttr.enStreamSrcType) { + m_stAttr.pPlayback->PausePlay(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex); + /* TODO: Wait for vo to consume the buffered frames */ + std::this_thread::sleep_for(std::chrono::milliseconds(400)); + } + + ret = AX_VO_PauseChn(m_stAttr.nVoLayer, m_stAttr.nVoChannel); + if (0 != ret) { + LOG_MM_E(TAG, "AX_VO_PauseChn[%d-%d] failed, ret=0x%x", m_stAttr.nVoLayer, m_stAttr.nVoChannel, ret); + break; + } + + this->set_state(AX_NVR_CHN_STATE::PAUSED); + } + } else if (AX_NVR_CHN_STATE::PAUSED == m_enState) { + ret = AX_VO_ResumeChn(m_stAttr.nVoLayer, m_stAttr.nVoChannel); + if (0 != ret) { + LOG_MM_E(TAG, "AX_VO_ResumeChn[%d-%d] failed, ret=0x%x", m_stAttr.nVoLayer, m_stAttr.nVoChannel, ret); + break; + } + + if (AX_NVR_CHN_SRC_TYPE::RECORD == m_stAttr.enStreamSrcType) { + m_stAttr.pPlayback->ResumePlay(m_stAttr.nDevID, (AX_U8)m_stAttr.enIndex); + } + + this->set_state(AX_NVR_CHN_STATE::STARTED); + } else { + LOG_MM_W(TAG, "[%02d][state:%d] state invalid.", m_stAttr.nDevID, m_enState); + break; + } + + bRet = AX_TRUE; + } while (0); + return bRet; +} diff --git a/app/demo/src/ppl/nvr/frm/AXNVRChannel.h b/app/demo/src/ppl/nvr/frm/AXNVRChannel.h new file mode 100644 index 0000000..403357f --- /dev/null +++ b/app/demo/src/ppl/nvr/frm/AXNVRChannel.h @@ -0,0 +1,237 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once +#include "AXNVRDisplayCtrl.h" +#include "AXNVRFrameworkDefine.h" +#include "ax_base_type.h" + +#include "detector.hpp" +#include "ivps.hpp" +#include "venc.hpp" +#include "region.hpp" +#include "rtspstream.hpp" +#include "streamContainer.hpp" +#include "streamTransfer.hpp" +#include "datastream_record.hpp" +#include "datastream_play.hpp" + +#ifdef USE_FFMPEGSTREAM + #include "ffmpegstream.hpp" +#endif + +#include "vdec.hpp" +#include "vo.hpp" + + +enum class AX_NVR_CHN_STATE { + IDLE = 0, // + TRANSFER = 1, // data_transfer - preview + STARTED = 2, // display - started + PAUSED = 3, // display - playback paused + STOPPED = 4, // display - playback stopped +}; + +enum class AX_NVR_CHN_SRC_TYPE { + NONE = 0, + RTSP = 1, + FFMPEG = 2, + RECORD = 3, +}; + + +typedef struct _AX_NVR_CHN_ATTR_T { + // preview : device id + // playback : vo channel id + AX_NVR_DEV_ID nDevID = -1; + AX_NVR_CHN_IDX_TYPE enIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + AX_NVR_CHN_VIEW_TYPE enView = AX_NVR_CHN_VIEW_TYPE::PREVIEW; + CAXNVRDisplayCtrl *pDisplay = nullptr; + + // stream src + AX_BOOL bPing = AX_TRUE; + AX_NVR_CHN_SRC_TYPE enStreamSrcType = AX_NVR_CHN_SRC_TYPE::NONE; + + // record + AX_BOOL bRecord = AX_TRUE; + CDataStreamRecord *pRecord = nullptr; + CDataStreamPlay *pPlayback = nullptr; + AX_U32 nStartDate = 0; // YYYYMMDD + AX_U32 nStartTime = 0; // HHMMSS + AX_BOOL bReverse = AX_FALSE; + + // detect + AX_NVR_DETECT_SRC_TYPE enDetectSrcType = AX_NVR_DETECT_SRC_TYPE::NONE; + CDetector *pDetector = nullptr; + CDetectObserver *pDetectObs = nullptr; + + // display vo, + VO_LAYER nVoLayer = (AX_U32)-1; + VO_CHN nVoChannel = (AX_U32)-1; + + // link channel + AX_S32 nLinkVdecIvpsChn = 0; // vdec chn 0 + AX_S32 nRegiVdecDeteChn = 1; // vdec chn 1 + AX_S32 nLinkIvpsVoooChn = 0; // ivps chn 0 + AX_S32 nRegiIvpsDeteChn = 1; // ivps chn 1 + + // VDEC + AX_U8 nPpDepth[MAX_VDEC_CHN_NUM] = {3, 4, 3}; + + // IVPS + AX_U32 nBackupInDepth = 3; + AX_U32 nFifoDepthForDetect = 2; + AX_U32 nFifoDepthForVo = 0; + AX_U32 nFrmBufNum = 3; + + AX_VOID reset(AX_VOID) { + nDevID = -1; + enIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + enView = AX_NVR_CHN_VIEW_TYPE::PREVIEW; + pDisplay = nullptr; + + bPing = AX_FALSE; + enStreamSrcType = AX_NVR_CHN_SRC_TYPE::NONE; + + bRecord = AX_TRUE; + pRecord = nullptr; + pPlayback = nullptr; + nStartDate = 0; + nStartTime = 0; + bReverse = AX_FALSE; + + enDetectSrcType = AX_NVR_DETECT_SRC_TYPE::NONE; + pDetector = nullptr; + pDetectObs = nullptr; + + nVoLayer = (AX_U32)-1; + nVoChannel = (AX_U32)-1; + + nLinkVdecIvpsChn = 0; + nRegiVdecDeteChn = 1; + nLinkIvpsVoooChn = 0; + nRegiIvpsDeteChn = 1; + + nPpDepth[0] = 3; + nPpDepth[1] = 4; + nPpDepth[2] = 3; + + nBackupInDepth = 3; + nFifoDepthForDetect = 2; + nFifoDepthForVo = 0; + nFrmBufNum = 3; + }; + + AX_VOID reset_vo(AX_VOID) { + nVoLayer = 99; + nVoChannel = 99; + } + +} AX_NVR_CHN_ATTR_T; + +typedef struct _AX_NVR_CHN_RES_T { + AX_U32 w = 0; + AX_U32 h = 0; +} AX_NVR_CHN_RES_T; + +class CAXNVRChannel { +public: + static CAXNVRChannel* CreateInstance(const AX_NVR_CHN_ATTR_T& stAttr); + + CAXNVRChannel(AX_VOID) = default; + virtual ~CAXNVRChannel(AX_VOID) = default; + + AX_BOOL Init(const AX_NVR_CHN_ATTR_T &attr); + AX_VOID DeInit(AX_VOID); + + AX_BOOL TrySwitchMainSub1(AX_U32 nDate=0, AX_U32 nTime=0); + AX_BOOL SwitchMainSub1(AX_U32 nDate=0, AX_U32 nTime=0); + + // const AX_NVR_CHN_ATTR_T& GetAttr(AX_VOID) const; + // AX_VOID SetAttr(const AX_NVR_CHN_ATTR_T &attr); + + AX_BOOL StartRtsp(const std::string &strURL, AX_BOOL bRecord, AX_BOOL bForce = AX_TRUE, AX_S32 nCookie = -1); + AX_BOOL StopRtsp(AX_BOOL bForce = AX_FALSE); + + AX_BOOL StartFile(AX_U32 nDate, AX_U32 nTime, AX_S32 nReverse = -1); + AX_BOOL StopFile(AX_VOID); + + AX_BOOL StartDisp(VO_LAYER nVoLayer, VO_CHN nVoChannel, const AX_VO_RECT_T &stRect); + AX_BOOL StopDisp(AX_VOID); + + AX_BOOL InitReversePlaybackModules(AX_U32 nWidth, AX_U32 nHeight, AX_F32 fFps, AX_U32 nGop, AX_PAYLOAD_TYPE_E enPayload); + AX_BOOL DeInitReversePlaybackModules(); + AX_BOOL StartReversePlaybackLinkages(); + AX_BOOL StopReversePlaybackLinkages(); + + // + AX_BOOL EnableDetect(AX_BOOL bEnable) {return AX_TRUE;}; + AX_BOOL EnableRecord(AX_BOOL bEnable) {return AX_TRUE;}; + + // + AX_BOOL PauseResume(AX_BOOL bForceResume = AX_FALSE); + AX_BOOL Step(AX_BOOL bReverse); + AX_BOOL Hide(AX_VOID) {return AX_TRUE;}; + AX_BOOL Show(AX_VOID) {return AX_TRUE;}; + + // + AX_BOOL UpdateRPatrolRect(const AX_VO_RECT_T &stRect); + AX_BOOL UpdateFps(AX_F32 fFactor); + AX_BOOL UpdateRect(const AX_VO_RECT_T &stRect); + AX_BOOL Crop(const AX_VO_RECT_T &stRect, const AX_IVPS_RECT_T &stCropRect, AX_BOOL bCrop); + + // + AX_NVR_CHN_RES_T GetResolution(AX_VOID); + VO_CHN GetCurrentVoChn(AX_VOID); + std::pair GetCurrentDateTime(AX_VOID); + + CStream0 &GetStream(AX_VOID); + + const AX_NVR_CHN_STATE& GetCurrentState(AX_VOID); + +protected: + std::mutex mutex_; + + AX_NVR_CHN_ATTR_T m_stAttr; + AX_NVR_CHN_STATE m_enState = AX_NVR_CHN_STATE::IDLE; + + AX_MOD_INFO_T m_stModeInfoVdec; + AX_MOD_INFO_T m_stModeInfoVdec2; + AX_MOD_INFO_T m_stModeInfoIvps; + AX_MOD_INFO_T m_stModeInfoIvps2; + AX_MOD_INFO_T m_stModeInfoVenc; + AX_MOD_INFO_T m_stModeInfoVo; + + CRtspStream m_objRtspStream; + CFFMpegStream m_objFFMpegStream; + CVDEC m_objVdec; + CVDEC m_objVdec2; + CIVPS m_objIvps; + CIVPS m_objIvps2; + CVENC m_objVenc; + CVideoStreamTransfer m_objStreamTrans; + CRegion m_objRegion; + CRegionObserver m_objRgnObs; + CDataStreamObserver m_objRecordObs; + +private: + AX_BOOL pause_resume(AX_BOOL bForceResume = AX_FALSE); + AX_VOID set_state(AX_NVR_CHN_STATE enStatus); + AX_BOOL set_fps(VO_LAYER nVoLayer, VO_CHN nVoChannel, AX_F32 fFps, AX_F32 fFactor = 1.0f); + AX_BOOL clean(VO_LAYER nVoLayer, VO_CHN nVoChannel); + AX_BOOL init_rtsp(const std::string &strURL, AX_S32 nCookie); + AX_BOOL init_ffmpeg(AX_VOID); + AX_BOOL init_vdec(AX_PAYLOAD_TYPE_E enPayload, AX_U32 nWidth, AX_U32 nHeight, const AX_VO_SIZE_T &voSize, AX_VDEC_GRP vdGrp = INVALID_VDEC_GRP); + AX_BOOL init_vdec2(AX_PAYLOAD_TYPE_E enPayload, AX_U32 nWidth, AX_U32 nHeight, const AX_VO_SIZE_T &voSize, AX_VDEC_GRP vdGrp = INVALID_VDEC_GRP); + AX_BOOL init_venc(AX_PAYLOAD_TYPE_E enPayload, AX_U32 nWidth, AX_U32 nHeight, AX_U32 nFPS, VENC_GRP veGrp = INVALID_VENC_GRP); + AX_BOOL init_ivps(AX_U32 nSrcW, AX_U32 nSrcH, const AX_VO_RECT_T &voChnWin, AX_IVPS_GRP ivGrp = INVALID_IVPS_GRP); + AX_BOOL init_ivps2(AX_U32 nSrcW, AX_U32 nSrcH, AX_IVPS_GRP ivGrp = INVALID_IVPS_GRP); + AX_BOOL init_transfer(AX_U32 nFps, AX_U32 nGop, VENC_GRP veGrp = INVALID_VENC_GRP); + AX_BOOL init_region(AX_S32 nGrp, AX_U32 nSrcW, AX_U32 nSrcH, const AX_VO_RECT_T &voChnWin); +}; diff --git a/app/demo/src/ppl/nvr/frm/AXNVRDisplayCtrl.cpp b/app/demo/src/ppl/nvr/frm/AXNVRDisplayCtrl.cpp new file mode 100644 index 0000000..5acf1a5 --- /dev/null +++ b/app/demo/src/ppl/nvr/frm/AXNVRDisplayCtrl.cpp @@ -0,0 +1,1202 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include +#include +#include +#include +#include + +#include +#include +#include + +using namespace std; + +#include "AppLogApi.h" +#include "ax_base_type.h" +#include "ax_ivps_api.h" +#include "AXNVRDisplayCtrl.h" +#include "NVRConfigParser.h" +#include "region.hpp" + +#define TAG "NVRDISP" + +#ifndef ALIGN_UP +#define ALIGN_UP(x, align) (((x) + ((align)-1)) & ~((align)-1)) +#endif + +#ifndef ALIGN_DOWN +#define ALIGN_DOWN(x, align) ((x) & ~((align)-1)) +#endif + +std::default_random_engine g_random_engine; +std::uniform_int_distribution g_random_uniform(0, NVR_MAX_LAYOUT_NUM - 1); + +namespace { + + #define MAKE_RGBA(stRGB, u8R, u8G, u8B, u8A) \ + (SHIFT_COLOR8(&(stRGB)->stRed, (u8R)) | \ + SHIFT_COLOR8(&(stRGB)->stGreen, (u8G)) | \ + SHIFT_COLOR8(&(stRGB)->stBlue, (u8B)) | \ + SHIFT_COLOR8(&(stRGB)->stAlpha, (u8A))) + + typedef struct UTIL_COLOR_COMPONENT { + AX_U32 u32Length; + AX_U32 u32Offset; + } UTIL_COLOR_COMPONENT_S; + + typedef struct UTIL_RGB_INFO { + UTIL_COLOR_COMPONENT_S stRed; + UTIL_COLOR_COMPONENT_S stGreen; + UTIL_COLOR_COMPONENT_S stBlue; + UTIL_COLOR_COMPONENT_S stAlpha; + } UTIL_RGB_INFO_S; + + #define MAKE_RGB_INFO(u32RedLen, u32RedOffs, u32GreenLen, u32GreenOffs, u32BlueLen, u32BlueOffs, u32AlphaLen, u32AlphaOffs) \ + { .stRed = { (u32RedLen), (u32RedOffs) }, \ + .stGreen = { (u32GreenLen), (u32GreenOffs) }, \ + .stBlue = { (u32BlueLen), (u32BlueOffs) }, \ + .stAlpha = { (u32AlphaLen), (u32AlphaOffs) } } + + static inline AX_U32 SHIFT_COLOR8(const UTIL_COLOR_COMPONENT_S *pstComp, + AX_U32 u32Value) { + u32Value &= 0xff; + /* Fill the low bits with the high bits. */ + u32Value = (u32Value << 8) | u32Value; + /* Shift down to remove unwanted low bits */ + u32Value = u32Value >> (16 - pstComp->u32Length); + /* Shift back up to where the u32Value should be */ + return u32Value << pstComp->u32Offset; + } +} + +AX_BOOL CAXNVRDisplayCtrl::Init(const AX_NVR_VO_INFO_T &stAttr) { + AX_BOOL bRet = AX_FALSE; + do { + if (m_pVo != nullptr) { + LOG_M_W(TAG, "Invalid pointer"); + bRet = AX_TRUE; + break; + } + + m_stAttr = stAttr; + g_random_engine.seed(time(0)); + + AX_U32 nHz = 0; + AX_VO_RECT_T stArea; + if (!this->getDispInfoFromIntfSync(m_stAttr.stVoAttr.enIntfSync, stArea, nHz)) { + break; + } + + // qt fb + if (m_stAttr.stVoAttr.s32FBIndex[0] != -1) { + AX_S32 s32Ret = this->initFramebuffer(stArea.u32Width, stArea.u32Height, m_stAttr.stVoAttr.s32FBIndex[0]); + if (s32Ret != 0) { + LOG_M_E(TAG, "initialize Frame buffer(dev %d) fail, ret = 0x%x", m_stAttr.stVoAttr.dev, s32Ret); + break; + } + } + + if (m_stAttr.stVoAttr.s32FBIndex[1] != -1) { + // paint fb + AX_CHAR fbPath[32]; + snprintf(fbPath, sizeof(fbPath), "/dev/fb%d", m_stAttr.stVoAttr.s32FBIndex[1]); + UTIL_RGB_INFO_S stAR24_Info = MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 8, 24); + UTIL_RGB_INFO_S stAR15_Info = MAKE_RGB_INFO(5, 10, 5, 5, 5, 0, 1, 15); + AX_NVR_FB_INIT_PARAM_T fbParam; + fbParam.enPixFmt = AX_FORMAT_ARGB1555; + fbParam.pFBPath = fbPath; + fbParam.nWidth = stArea.u32Width; + fbParam.nHeight = stArea.u32Height; + fbParam.nColorDraw = (fbParam.enPixFmt == AX_FORMAT_ARGB1555) ? + MAKE_RGBA(&stAR15_Info, 255, 255, 255, 255) : MAKE_RGBA(&stAR24_Info, 255, 255, 255, 255); + fbParam.uKeyColor = 0x10101; + fbParam.nGroup = 4; + fbParam.nTimeIntervalPanMS = 10; + + m_pFbPaint = new (std::nothrow) CFramebufferPaint; + if (m_pFbPaint == nullptr) { + break; + } + if (!m_pFbPaint->Init(fbParam)) { + LOG_M_E(TAG, "initialize Frame buffer paint(dev %d) failed", m_stAttr.stVoAttr.dev); + break; + } + m_pFbPaint->Start(); + + LOG_M_W(TAG, "[SUCCESS]Frame buffer paint(dev %d)", m_stAttr.stVoAttr.dev); + + } + + if (m_stAttr.enDispDevType == AX_NVR_DISPDEV_TYPE::PRIMARY) { + m_stAttr.stVoAttr.nEngineId = 3; /* TDP */ + m_stAttr.stVoAttr.enEngineMode = AX_VO_ENGINE_MODE_FORCE; + m_stAttr.stVoAttr.enDrawMode = AX_VO_PART_MODE_SINGLE; /* if virutal engine, must set to single mode */ + + m_stAttr.stVoAttr.pipChn = NVR_PIP_CHN_NUM; + } + else if (m_stAttr.enDispDevType == AX_NVR_DISPDEV_TYPE::SECOND) { + m_stAttr.stVoAttr.nEngineId = 4; /* TDP */ + m_stAttr.stVoAttr.enEngineMode = AX_VO_ENGINE_MODE_FORCE; + m_stAttr.stVoAttr.enDrawMode = AX_VO_PART_MODE_SINGLE; + // The following data comes from the layout of the UI : + const AX_U32 top = 4; + const AX_U32 left = 4; + const AX_U32 bottom = 4; + const AX_U32 right = 4; + if (!this->initPollingLayout(stArea.u32Width - (top + bottom), stArea.u32Height - (left + right)) ) { + LOG_M_E(TAG, "initialize polling layout failed."); + break; + } + } + + VO_CHN_INFO_T stChn; + // stChn.nCount = 1; + // stChn.arrChns[0].stRect = {0, 0, stArea.u32Width, stArea.u32Height}; + // stChn.arrChns[0].u32FifoDepth = m_stAttr.u32FifoDepth; + // stChn.arrFps[0] = m_stAttr.fFps; + m_stAttr.stVoAttr.stChnInfo = stChn; + m_pVo = CVO::CreateInstance(m_stAttr.stVoAttr); + if (!m_pVo) { + break; + } + + if (!m_pVo->Start()) { + m_pVo->Destory(); + m_pVo = nullptr; + break; + } else if (!m_stAttr.stVoAttr.bLinkVo2Disp) { + m_pVoRegionObs = new CVOLayerRegionObserver(m_pVo); + } + + bRet = AX_TRUE; + } while (0); + + return bRet; +} + +AX_VOID CAXNVRDisplayCtrl::DeInit() { + + + + if (m_pFbPaint != nullptr) { + m_pFbPaint->DestroyAllChannel(); + m_pFbPaint->Stop(); + m_pFbPaint->DeInit(); + delete m_pFbPaint; + m_pFbPaint = nullptr; + } + + if (m_pVo) { + // if (m_bRoundPatrolStop) { + // VO_ATTR_T attr = m_pVo->GetAttr(); + // AX_VO_BindVideoLayer(attr.voLayer, attr.dev); + // for (AX_U32 i = 0; i < attr.stChnInfo.nCount; ++i) { + // m_pVo->EnableChn(i, attr.stChnInfo.arrChns[i]); + // } + // m_bRoundPatrolStop = AX_FALSE; + // } + if (m_bRoundPatrolStop) { + m_pVo->Init(m_stAttr.stVoAttr); + m_pVo->Start(); + m_bRoundPatrolStop = AX_FALSE; + } + + if (!m_pVo->Stop()) { + LOG_M_E(TAG, "VO Stop failed."); + } + m_pVo->Destory(); + m_pVo = nullptr; + } + + if (m_pVoRegionObs) { + delete m_pVoRegionObs; + m_pVoRegionObs = nullptr; + } +} + +AX_BOOL CAXNVRDisplayCtrl::GetChannelRect(VO_CHN nChn, AX_NVR_RECT_T &rect) { + if (nChn < m_vecRect.size()) { + rect = m_vecRect[nChn]; + return AX_TRUE; + } else { + if (nChn == NVR_PIP_CHN_NUM) { + rect = m_pipRect; + return AX_TRUE; + } + } + return AX_FALSE; +} + +AX_VOID CAXNVRDisplayCtrl::StartPipFBChannel(const AX_NVR_RECT_T &rect) { + if (m_stAttr.enDispDevType == AX_NVR_DISPDEV_TYPE::PRIMARY) { + if (m_pFbPaint) { + m_pipRect = rect; + m_pFbPaint->CreateChannel(NVR_PIP_CHN_NUM, + FB_RECT_T{ALIGN_UP(rect.x, 2), ALIGN_UP(rect.y, 2), ALIGN_DOWN(rect.w, 8), ALIGN_DOWN(rect.h, 2)}, + AX_TRUE); + } + } +} + +AX_VOID CAXNVRDisplayCtrl::StopPipFBChannel(AX_VOID) { + if (m_pFbPaint) { + m_pFbPaint->DestroyChannel(NVR_PIP_CHN_NUM); + } +} + +AX_BOOL CAXNVRDisplayCtrl::EnablePip(const AX_NVR_RECT_T &rect) { + + if (m_stAttr.enDispDevType == AX_NVR_DISPDEV_TYPE::PRIMARY) { + AX_VO_CHN_ATTR_T stAttr; + AX_VO_RECT_T stArea; + VO_ATTR_T attr = m_pVo->GetAttr(); + AX_BOOL b4K = is4K(attr.enIntfSync, stArea); + auto vorect = rect; + m_pipRect = rect; + if (b4K) { + vorect = mapRect(vorect, stArea.u32Width, stArea.u32Height); + } + stAttr.stRect = {ALIGN_UP(vorect.x, 2), ALIGN_UP(vorect.y, 2), ALIGN_DOWN(vorect.w, 8), ALIGN_DOWN(vorect.h, 2)}; + stAttr.u32FifoDepth = m_stAttr.u32PreviewFifoDepth; + stAttr.u32Priority = 99; + stAttr.bKeepPrevFr = AX_TRUE; + // if (m_pFbPaint) { + // m_pFbPaint->CreateChannel(NVR_PIP_CHN_NUM, + // FB_RECT_T{stAttr.stRect.u32X, stAttr.stRect.u32Y, stAttr.stRect.u32Width, stAttr.stRect.u32Height}, + // AX_TRUE); + // } + return m_pVo->EnableChn(NVR_PIP_CHN_NUM, stAttr); + } + + return AX_TRUE; +} + +AX_BOOL CAXNVRDisplayCtrl::DisablePip(AX_VOID) { + if (m_stAttr.enDispDevType == AX_NVR_DISPDEV_TYPE::PRIMARY) { + // if (m_pFbPaint) { + // m_pFbPaint->DestroyChannel(NVR_PIP_CHN_NUM); + // } + return m_pVo->DisableChn(NVR_PIP_CHN_NUM); + } + return AX_TRUE; +} + +AX_VOID CAXNVRDisplayCtrl::StartFBChannels(AX_VOID) { + this->createFbChannels(); +} + +AX_VOID CAXNVRDisplayCtrl::StopFBChannels(AX_VOID) { + this->destoryFbChannels(); +} + +AX_BOOL CAXNVRDisplayCtrl::UpdateChnResolution(VO_CHN nChn, AX_U32 nWidth, AX_U32 nHeight) { + if (m_pVo && m_pVo->UpdateChnResolution(nChn, nWidth, nHeight)) { + return AX_TRUE; + } + + return AX_FALSE; +} + +AX_BOOL CAXNVRDisplayCtrl::UpdateView(const ax_nvr_channel_vector vecViewChns, + const vector vecVoRect, + AX_NVR_VIEW_TYPE enViewType, + AX_NVR_VIEW_CHANGE_TYPE enChangeType) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d][%d] +++", __func__, __LINE__, m_stAttr.enDispDevType); + std::lock_guard lock(mutex_); + + do { + if (vecViewChns.size() != vecVoRect.size()) { + LOG_M_E(TAG, "[%s][%d][%d] vecViewChans.size=%d vecVoRect.size=%d", __func__, __LINE__, m_stAttr.enDispDevType, vecViewChns.size(), vecVoRect.size()); + break; + } + + m_vecRect = vecVoRect; + + if (nullptr == m_pVo) { + LOG_M_E(TAG, "[%s][%d][%d] VO not created and initialized", __func__, __LINE__, m_stAttr.enDispDevType); + break; + } + + AX_BOOL bbRet = AX_TRUE; + if (AX_NVR_DISPDEV_TYPE::PRIMARY == m_stAttr.enDispDevType) { + if (AX_NVR_VIEW_CHANGE_TYPE::HIDE == enChangeType) { + // this->destoryFbChannels(); + VO_ATTR_T attr = m_pVo->GetAttr(); + for (AX_U32 i = 0; i < attr.stChnInfo.nCount; ++i) { + m_pVo->ClearChn(i); + } + } + else if (AX_NVR_VIEW_CHANGE_TYPE::SHOW == enChangeType || AX_NVR_VIEW_CHANGE_TYPE::UPDATE == enChangeType) { + { + // this->destoryFbChannels(); + VO_ATTR_T attr = m_pVo->GetAttr(); + for (AX_U32 i = 0; i < attr.stChnInfo.nCount; ++i) { + if (!m_pVo->HideChn(i)) { + bbRet = AX_FALSE; + break; + } + } + + if (!bbRet) { + break; + } + } + + // 0. Update all Channels + { + + VO_ATTR_T attr = m_pVo->GetAttr(); + attr.stChnInfo.nCount = min(vecViewChns.size(), vecVoRect.size()); + + AX_VO_RECT_T stArea; + AX_BOOL b4K = is4K(attr.enIntfSync, stArea); + for (unsigned int i = 0; i < attr.stChnInfo.nCount; ++i) { + auto &viewchn = get<0>(vecViewChns[i]); + auto vorect = vecVoRect[i]; + if (b4K) { + vorect = mapRect(vorect, stArea.u32Width, stArea.u32Height); + } + + VO_CHN nVoChn = viewchn%attr.stChnInfo.nCount; + attr.stChnInfo.arrChns[nVoChn].stRect = {ALIGN_UP(vorect.x, 2), ALIGN_UP(vorect.y, 2), ALIGN_DOWN(vorect.w, 8), ALIGN_DOWN(vorect.h, 2)}; + attr.stChnInfo.arrCropRect[nVoChn] = {0, 0, 0, 0}; + + LOG_M_D(TAG, "[%d] %d,%d %dx%d", nVoChn, + attr.stChnInfo.arrChns[nVoChn].stRect.u32X, + attr.stChnInfo.arrChns[nVoChn].stRect.u32Y, + attr.stChnInfo.arrChns[nVoChn].stRect.u32Width, + attr.stChnInfo.arrChns[nVoChn].stRect.u32Height); + + if (AX_NVR_VIEW_TYPE::PLAYBACK == enViewType) { + attr.stChnInfo.arrChns[nVoChn].u32FifoDepth = m_stAttr.u32PlaybakFifoDepth; + } else { + attr.stChnInfo.arrChns[nVoChn].u32FifoDepth = m_stAttr.u32PreviewFifoDepth; + } + + attr.stChnInfo.arrChns[nVoChn].u32Priority = m_stAttr.u32Priority; + } + if (!m_pVo->UpdateChnInfo(attr.stChnInfo)) { + bbRet = AX_FALSE; + break; + } + + } + + // Step 1. Show channels + { + VO_ATTR_T attr = m_pVo->GetAttr(); + for (AX_U32 i = 0; i < attr.stChnInfo.nCount; ++i) { + if (!m_pVo->ShowChn(i)) { + bbRet = AX_FALSE; + break; + } + } + if (!bbRet) { + break; + } + } + } + // MIN/MAX does not change the actual layout count of VO, only UpdateRect, AX_VO_HideChn and AX_VO_ShowChn + else if (AX_NVR_VIEW_CHANGE_TYPE::MIN == enChangeType || enChangeType == AX_NVR_VIEW_CHANGE_TYPE::MAX) { + + VO_CHN nVoChn = 0; // vo channel while AX_NVR_VIEW_CHANGE_TYPE::MAX state + + // Step 0. Update all channels + { + VO_ATTR_T attr = m_pVo->GetAttr(); + AX_VO_RECT_T stArea; + AX_BOOL b4K = is4K(attr.enIntfSync, stArea); + for (unsigned int i = 0; i < vecViewChns.size() && i < vecVoRect.size(); ++i) { + auto &viewchn = get<0>(vecViewChns[i]); + auto vorect = vecVoRect[i]; + if (b4K) { + vorect = mapRect(vorect, stArea.u32Width, stArea.u32Height); + } + nVoChn = viewchn%attr.stChnInfo.nCount; + attr.stChnInfo.arrChns[nVoChn].stRect = {ALIGN_UP(vorect.x, 2), ALIGN_UP(vorect.y, 2), ALIGN_DOWN(vorect.w, 8), ALIGN_DOWN(vorect.h, 2)}; + + if (AX_NVR_VIEW_TYPE::PLAYBACK == enViewType) { + attr.stChnInfo.arrChns[nVoChn].u32FifoDepth = m_stAttr.u32PlaybakFifoDepth; + } else { + attr.stChnInfo.arrChns[nVoChn].u32FifoDepth = m_stAttr.u32PreviewFifoDepth; + } + + attr.stChnInfo.arrChns[nVoChn].u32Priority = m_stAttr.u32Priority; + } + + if (!m_pVo->UpdateChnInfo(attr.stChnInfo)) { + bbRet = AX_FALSE; + break; + } + } + + // Step 1. hide all channels + { + VO_ATTR_T attr = m_pVo->GetAttr(); + for (AX_U32 i = 0; i < attr.stChnInfo.nCount; ++i) { + if (!m_pVo->HideChn(i)) { + bbRet = AX_FALSE; + break; + } + } + if (!bbRet) { + break; + } + } + + // Step 2. Update all channels + { + VO_ATTR_T attr = m_pVo->GetAttr(); + for (AX_U32 i = 0; i < attr.stChnInfo.nCount; ++i) { + if (AX_NVR_VIEW_CHANGE_TYPE::MIN == enChangeType) { + if (!m_pVo->ShowChn(i)) { + bbRet = AX_FALSE; + break; + } + } else if (AX_NVR_VIEW_CHANGE_TYPE::MAX == enChangeType) { + if (i == nVoChn) { + if (!m_pVo->ShowChn(i)) { + bbRet = AX_FALSE; + break; + } + } + } + } + if (!bbRet) { + break; + } + } + } + } + bRet = bbRet; + } while (0); + + LOG_M_D(TAG, "[%s][%d][%d] +++", __func__, __LINE__, m_stAttr.enDispDevType); + return bRet; +} + +AX_BOOL CAXNVRDisplayCtrl::UpdateViewRound(AX_NVR_VIEW_CHANGE_TYPE enChangeType) { + + AX_VO_RECT_T stArea; + + // 4K + AX_BOOL b4K = AX_FALSE; + { + VO_ATTR_T attr = m_pVo->GetAttr(); + b4K = is4K(attr.enIntfSync, stArea); + } + + if (AX_NVR_VIEW_CHANGE_TYPE::SHOW == enChangeType) { + if (m_bRoundPatrolStop) { + m_pVo->Init(m_stAttr.stVoAttr); + m_pVo->Start(); + + m_bRoundPatrolStop = AX_FALSE; + } + + VO_CHN_INFO_T stChnInfo; + AX_NVR_VO_SPLITE_TYPE enSplitType = m_szLayoutVideos[m_nCurrentLayoutIndex]; + vector vecVoRectIn = m_mapPollingLayout[enSplitType]; + m_vecRect = vecVoRectIn; + stChnInfo.nCount = vecVoRectIn.size(); + for (int i = 0; i < (int)vecVoRectIn.size(); ++i) { + auto vorect = vecVoRectIn[i]; + if (b4K) { + vorect = mapRect(vorect, stArea.u32Width, stArea.u32Height); + } + stChnInfo.arrChns[i].stRect = {ALIGN_UP(vorect.x, 2), ALIGN_UP(vorect.y, 2), ALIGN_DOWN(vorect.w, 8), ALIGN_DOWN(vorect.h, 2)}; + stChnInfo.arrChns[i].u32FifoDepth = m_stAttr.u32PreviewFifoDepth; + stChnInfo.arrChns[i].u32Priority = m_stAttr.u32Priority; + } + + if (!m_pVo->UpdateChnInfo(stChnInfo)) { + return AX_FALSE; + } + } + else if (AX_NVR_VIEW_CHANGE_TYPE::HIDE == enChangeType) { + if (!m_bRoundPatrolStop) { + m_pVo->Stop(); + m_pVo->DeInit(); + + m_nCurrentLayoutIndex = 0; + m_bRoundPatrolStop = AX_TRUE; + } + } + else if (AX_NVR_VIEW_CHANGE_TYPE::UPDATE == enChangeType) { + if (m_bRoundPatrolStop) { + m_pVo->Init(m_stAttr.stVoAttr); + m_pVo->Start(); + + m_bRoundPatrolStop = AX_FALSE; + } + + m_nCurrentLayoutIndex = getNextLayout(); + + VO_CHN_INFO_T stChnInfo; + AX_NVR_VO_SPLITE_TYPE enSplitType = m_szLayoutVideos[m_nCurrentLayoutIndex]; + vector vecVoRectIn = m_mapPollingLayout[enSplitType]; + m_vecRect = vecVoRectIn; + stChnInfo.nCount = vecVoRectIn.size(); + for (int i = 0; i < (int)vecVoRectIn.size(); ++i) { + auto vorect = vecVoRectIn[i]; + if (b4K) { + vorect = mapRect(vorect, stArea.u32Width, stArea.u32Height); + } + stChnInfo.arrChns[i].stRect = {ALIGN_UP(vorect.x, 2), ALIGN_UP(vorect.y, 2), ALIGN_DOWN(vorect.w, 8), ALIGN_DOWN(vorect.h, 2)}; + stChnInfo.arrChns[i].u32FifoDepth = m_stAttr.u32PreviewFifoDepth; + stChnInfo.arrChns[i].u32Priority = m_stAttr.u32Priority; + } + + if (!m_pVo->UpdateChnInfo(stChnInfo)) { + return AX_FALSE; + } + } + else { + // no other action while round patrol. + } + + return AX_TRUE; +} + +#ifdef USE_COLORBAR_FB0_FB1 +typedef struct COLOR_RGB24 { + AX_U32 u32Value: 24; +} __attribute__((__packed__)) COLOR_RGB24_S; + +typedef struct COLOR_YUV { + AX_U8 u8Y; + AX_U8 u8U; + AX_U8 u8V; +} COLOR_YUV_S; + +typedef struct UTIL_COLOR_COMPONENT { + AX_U32 u32Length; + AX_U32 u32Offset; +} UTIL_COLOR_COMPONENT_S; + +typedef struct UTIL_RGB_INFO { + UTIL_COLOR_COMPONENT_S stRed; + UTIL_COLOR_COMPONENT_S stGreen; + UTIL_COLOR_COMPONENT_S stBlue; + UTIL_COLOR_COMPONENT_S stAlpha; +} UTIL_RGB_INFO_S; + +/* This function takes 8-bit color values */ +static inline AX_U32 SHIFT_COLOR8(const UTIL_COLOR_COMPONENT_S *pstComp, + AX_U32 u32Value) +{ + u32Value &= 0xff; + /* Fill the low bits with the high bits. */ + u32Value = (u32Value << 8) | u32Value; + /* Shift down to remove unwanted low bits */ + u32Value = u32Value >> AX_U32(16 - pstComp->u32Length); + /* Shift back up to where the u32Value should be */ + return u32Value << pstComp->u32Offset; +} + +#define MAKE_RGBA(stRGB, u8R, u8G, u8B, u8A) \ + (SHIFT_COLOR8(&(stRGB)->stRed, (u8R)) | \ + SHIFT_COLOR8(&(stRGB)->stGreen, (u8G)) | \ + SHIFT_COLOR8(&(stRGB)->stBlue, (u8B)) | \ + SHIFT_COLOR8(&(stRGB)->stAlpha, (u8A))) + +#define MAKE_RGB24(stRGB, u8R, u8G, u8B) \ + { .u32Value = MAKE_RGBA(stRGB, u8R, u8G, u8B, 0) } + +#define MAKE_YUV_601_Y(u8R, u8G, u8B) \ + ((( 66 * (u8R) + 129 * (u8G) + 25 * (u8B) + 128) >> 8) + 16) +#define MAKE_YUV_601_U(u8R, u8G, u8B) \ + (((-38 * (u8R) - 74 * (u8G) + 112 * (u8B) + 128) >> 8) + 128) +#define MAKE_YUV_601_V(u8R, u8G, u8B) \ + (((112 * (u8R) - 94 * (u8G) - 18 * (u8B) + 128) >> 8) + 128) + +#define MAKE_YUV_601(u8R, u8G, u8B) \ + { .u8Y = MAKE_YUV_601_Y(u8R, u8G, u8B), \ + .u8U = MAKE_YUV_601_U(u8R, u8G, u8B), \ + .u8V = MAKE_YUV_601_V(u8R, u8G, u8B) } + +#define MAKE_RGB_INFO(u32RedLen, u32RedOffs, u32GreenLen, u32GreenOffs, u32BlueLen, u32BlueOffs, u32AlphaLen, u32AlphaOffs) \ + { .stRed = { (u32RedLen), (u32RedOffs) }, \ + .stGreen = { (u32GreenLen), (u32GreenOffs) }, \ + .stBlue = { (u32BlueLen), (u32BlueOffs) }, \ + .stAlpha = { (u32AlphaLen), (u32AlphaOffs) } } + +static AX_VOID Fill_Smpte_RGB32(const UTIL_RGB_INFO_S *stRGB, AX_U8 *pMem, + AX_U32 u32Width, AX_U32 u32Height, + AX_U32 u32Stride) +{ + const AX_U32 u32ColorsTop[] = { + MAKE_RGBA(stRGB, 192U, 192U, 192U, 255U), /* grey */ + MAKE_RGBA(stRGB, 192U, 192U, 0U, 255U), /* yellow */ + MAKE_RGBA(stRGB, 0U, 192U, 192U, 255U), /* cyan */ + MAKE_RGBA(stRGB, 0U, 192U, 0U, 255U), /* green */ + MAKE_RGBA(stRGB, 192U, 0U, 192U, 255U), /* magenta */ + MAKE_RGBA(stRGB, 192U, 0U, 0U, 255U), /* red */ + MAKE_RGBA(stRGB, 0U, 0U, 192U, 255U), /* blue */ + }; + const AX_U32 u32ColorsMiddle[] = { + MAKE_RGBA(stRGB, 0U, 0U, 192U, 127U), /* blue */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 127U), /* black */ + MAKE_RGBA(stRGB, 192U, 0U, 192U, 127U), /* magenta */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 127U), /* black */ + MAKE_RGBA(stRGB, 0U, 192U, 192U, 127U), /* cyan */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 127U), /* black */ + MAKE_RGBA(stRGB, 192U, 192U, 192U, 127U), /* grey */ + }; + const AX_U32 u32ColorsBottom[] = { + MAKE_RGBA(stRGB, 0U, 33U, 76U, 255U), /* in-phase */ + MAKE_RGBA(stRGB, 255U, 255U, 255U, 255U), /* super white */ + MAKE_RGBA(stRGB, 50U, 0U, 106U, 255U), /* quadrature */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 255U), /* black */ + MAKE_RGBA(stRGB, 9U, 9U, 9U, 255U), /* 3.5% */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 255), /* 7.5% */ + MAKE_RGBA(stRGB, 29U, 29U, 29U, 255U), /* 11.5% */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 255U), /* black */ + }; + AX_U32 u32X; + AX_U32 u32Y; + + for (u32Y = 0; u32Y < u32Height * 6 / 9; ++u32Y) { + for (u32X = 0; u32X < u32Width; ++u32X) + ((AX_U32 *)pMem)[u32X] = u32ColorsTop[u32X * 7 / u32Width]; + pMem += u32Stride; + } + + for (; u32Y < u32Height * 7 / 9; ++u32Y) { + for (u32X = 0; u32X < u32Width; ++u32X) + ((AX_U32 *)pMem)[u32X] = u32ColorsMiddle[u32X * 7 / u32Width]; + pMem += u32Stride; + } + + for (; u32Y < u32Height; ++u32Y) { + for (u32X = 0; u32X < u32Width * 5 / 7; ++u32X) + ((AX_U32 *)pMem)[u32X] = + u32ColorsBottom[u32X * 4 / (u32Width * 5 / 7)]; + for (; u32X < u32Width * 6 / 7; ++u32X) + ((AX_U32 *)pMem)[u32X] = + u32ColorsBottom[(u32X - u32Width * 5 / 7) * 3 + / (u32Width / 7) + 4]; + for (; u32X < u32Width; ++u32X) + ((AX_U32 *)pMem)[u32X] = u32ColorsBottom[7]; + pMem += u32Stride; + } +} + + +static AX_VOID Fill_Smpte_RGB16(const UTIL_RGB_INFO_S *stRGB, AX_U8 *pMem, + AX_U32 u32Width, AX_U32 u32Height, + AX_U32 u32Stride) +{ + const AX_U32 u16ColorsTop[] = { + MAKE_RGBA(stRGB, 192U, 192U, 192U, 255U), /* grey */ + MAKE_RGBA(stRGB, 192U, 192U, 0U, 255U), /* yellow */ + MAKE_RGBA(stRGB, 0U, 192U, 192U, 255U), /* cyan */ + MAKE_RGBA(stRGB, 0U, 192U, 0U, 255U), /* green */ + MAKE_RGBA(stRGB, 192U, 0U, 192U, 255U), /* magenta */ + MAKE_RGBA(stRGB, 192U, 0U, 0U, 255U), /* red */ + MAKE_RGBA(stRGB, 0U, 0U, 192U, 255U), /* blue */ + }; + const AX_U32 u16ColorsMiddle[] = { + MAKE_RGBA(stRGB, 0U, 0U, 192U, 127U), /* blue */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 127U), /* black */ + MAKE_RGBA(stRGB, 192U, 0U, 192U, 127U), /* magenta */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 127U), /* black */ + MAKE_RGBA(stRGB, 0U, 192U, 192U, 127U), /* cyan */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 127U), /* black */ + MAKE_RGBA(stRGB, 192U, 192U, 192U, 127U), /* grey */ + }; + const AX_U32 u16ColorsBottom[] = { + MAKE_RGBA(stRGB, 0U, 33U, 76U, 255U), /* in-phase */ + MAKE_RGBA(stRGB, 255U, 255U, 255U, 255U), /* super white */ + MAKE_RGBA(stRGB, 50U, 0U, 106U, 255U), /* quadrature */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 255U), /* black */ + MAKE_RGBA(stRGB, 9U, 9U, 9U, 255U), /* 3.5% */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 255U), /* 7.5% */ + MAKE_RGBA(stRGB, 29U, 29U, 29U, 255U), /* 11.5% */ + MAKE_RGBA(stRGB, 19U, 19U, 19U, 255U), /* black */ + }; + AX_U32 u32X; + AX_U32 u32Y; + + for (u32Y = 0; u32Y < u32Height * 6 / 9; ++u32Y) { + for (u32X = 0; u32X < u32Width; ++u32X) + ((AX_U16 *)pMem)[u32X] = u16ColorsTop[u32X * 7 / u32Width]; + pMem += u32Stride; + } + + for (; u32Y < u32Height * 7 / 9; ++u32Y) { + for (u32X = 0; u32X < u32Width; ++u32X) + ((AX_U16 *)pMem)[u32X] = u16ColorsMiddle[u32X * 7 / u32Width]; + pMem += u32Stride; + } + + for (; u32Y < u32Height; ++u32Y) { + for (u32X = 0; u32X < u32Width * 5 / 7; ++u32X) + ((AX_U16 *)pMem)[u32X] = + u16ColorsBottom[u32X * 4 / (u32Width * 5 / 7)]; + for (; u32X < u32Width * 6 / 7; ++u32X) + ((AX_U16 *)pMem)[u32X] = + u16ColorsBottom[(u32X - u32Width * 5 / 7) * 3 + / (u32Width / 7) + 4]; + for (; u32X < u32Width; ++u32X) + ((AX_U16 *)pMem)[u32X] = u16ColorsBottom[7]; + pMem += u32Stride; + } +} + +static AX_VOID SAMPLE_Fill_Color(AX_IMG_FORMAT_E enPixFmt, AX_U32 u32Width, AX_U32 u32Height, AX_U32 u32Stride, AX_U8 *u8Mem) +{ + UTIL_RGB_INFO_S stAR12_Info = MAKE_RGB_INFO(4, 8, 4, 4, 4, 0, 4, 12); + UTIL_RGB_INFO_S stAR15_Info = MAKE_RGB_INFO(5, 10, 5, 5, 5, 0, 1, 15); + UTIL_RGB_INFO_S stRG16_Info = MAKE_RGB_INFO(5, 11, 6, 5, 5, 0, 0, 0); + UTIL_RGB_INFO_S stRG24_Info = MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 0, 0); + UTIL_RGB_INFO_S stAR24_Info = MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 8, 24); + + // if (enPixFmt == AX_FORMAT_YUV420_SEMIPLANAR) { + // Fill_Smpte_YUV(u32Width, u32Height, u32Stride, + // u8Mem, u8Mem + u32Stride * u32Height, u8Mem + u32Stride * u32Height + 1); + // } else if (enPixFmt == AX_FORMAT_RGB565) { + // Fill_Smpte_RGB16(&stRG16_Info, u8Mem, u32Width, u32Height, u32Stride); + // } else if (enPixFmt == AX_FORMAT_RGB888) { + // Fill_Smpte_RGB24(&stRG24_Info, u8Mem, u32Width, u32Height, u32Stride); + // } else if (enPixFmt == AX_FORMAT_ARGB1555) { + // Fill_Smpte_RGB16(&stAR15_Info, u8Mem, u32Width, u32Height, u32Stride); + // } else if (enPixFmt == AX_FORMAT_ARGB4444) { + // Fill_Smpte_RGB16(&stAR12_Info, u8Mem, u32Width, u32Height, u32Stride); + // } else + if (enPixFmt == AX_FORMAT_RGB565) { + Fill_Smpte_RGB16(&stRG16_Info, u8Mem, u32Width, u32Height, u32Stride); + } + else if (enPixFmt == AX_FORMAT_ARGB8888) { + Fill_Smpte_RGB32(&stAR24_Info, u8Mem, u32Width, u32Height, u32Stride); + } else { + printf("%s unsupported fomat, fmt: %d\n", __func__, enPixFmt); + } +} +#endif + +AX_S32 CAXNVRDisplayCtrl::initFramebuffer(AX_U32 u32Width, AX_U32 u32Height, AX_U32 u32FbIndex) { + + AX_S32 s32Fd, s32Ret = 0; + + do { + AX_CHAR fbPath[32]; + struct fb_var_screeninfo stVar; + // struct fb_bitfield stR32 = {24, 8, 0}; + // struct fb_bitfield stG32 = {16, 8, 0}; + // struct fb_bitfield stB32 = {8, 8, 0}; + // struct fb_bitfield stA32 = {0, 8, 0}; + struct fb_bitfield r = {16, 8, 0}; + struct fb_bitfield g = {8, 8, 0}; + struct fb_bitfield b = {0, 8, 0}; + struct fb_bitfield a = {24, 8, 0}; + + /* 1.Open framebuffer device */ + + snprintf(fbPath, sizeof(fbPath), "/dev/fb%d", u32FbIndex); + s32Fd = open(fbPath, O_RDWR); + if (s32Fd < 0) { + LOG_M_E(TAG, "open %s failed, err:%s", fbPath, strerror(errno)); + return s32Fd; + } + // LOG_M_W(TAG, "open %s success", fbPath); + + /* 2.Get the variable screen info */ + s32Ret = ioctl(s32Fd, FBIOGET_VSCREENINFO, &stVar); + if (s32Ret < 0) { + LOG_M_E(TAG, "get variable screen info from fb%d failed", u32FbIndex); + break; + } + + /* 3.Modify the variable screen info, the screen size: u32Width*u32Height, the + * virtual screen size: u32Width*(u32Height*2), the pixel format: ARGB8888 + */ + stVar.xres = u32Width; + stVar.xres_virtual = u32Width; + stVar.yres = u32Height; + stVar.yres_virtual = u32Height*2; + stVar.transp = a; + stVar.red = r; + stVar.green = g; + stVar.blue = b; + stVar.bits_per_pixel = 32; + + /* 4.Set the variable screeninfo */ + s32Ret = ioctl(s32Fd, FBIOPUT_VSCREENINFO, &stVar); + if (s32Ret < 0) { + LOG_M_E(TAG, "put variable screen info to fb%d failed", u32FbIndex); + break; + } + + AX_FB_COLORKEY_T stColorKey; + stColorKey.u16Enable = 1; + stColorKey.u16Inv = 0; + stColorKey.u32KeyLow = 0x10101; + stColorKey.u32KeyHigh = 0x10101; + s32Ret = ioctl(s32Fd, AX_FBIOPUT_COLORKEY, &stColorKey); + if (s32Ret < 0) { + LOG_M_E(TAG, "put colorkey to fb%d failed", u32FbIndex); + break; + } + +#ifdef USE_COLORBAR_FB0_FB1 + AX_U8 *pShowScreen; + struct fb_fix_screeninfo stFix; + AX_S32 i, j = 0; + AX_U32 *u32Pixel; + + + /* 5.Get the fix screen info */ + s32Ret = ioctl(s32Fd, FBIOGET_FSCREENINFO, &stFix); + if (s32Ret < 0) { + // SAMPLE_PRT("get fix screen info from fb%d failed\n", u32FbIndex); + break; + } + + /* 6.Map the physical video memory for user use */ + pShowScreen = (AX_U8*)mmap(NULL, stFix.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, s32Fd, 0); + if (pShowScreen == (AX_U8 *) - 1) { + // SAMPLE_PRT("map fb%d failed\n", u32FbIndex); + break; + } + if (u32FbIndex == 1) { + SAMPLE_Fill_Color(AX_FORMAT_ARGB8888, u32Width, u32Height * 2, u32Width * 4, pShowScreen); + } + else if (u32FbIndex == 0) { + SAMPLE_Fill_Color(AX_FORMAT_RGB565, u32Width, u32Height * 2, u32Width * 4, pShowScreen); + } + + for (i = u32Height / 4; i < u32Height * 3 / 4; i++) { + u32Pixel = (AX_U32 *)(pShowScreen + i * u32Width * 4); + for (j = u32Width / 3; j < u32Width * 2 / 3; j++) { + u32Pixel[j] &= ~(0xff << 24); + } + } + + munmap(pShowScreen, stFix.smem_len); +#endif + } while(0); + + close(s32Fd); + return s32Ret; +} + +const vector CAXNVRDisplayCtrl::calcLayouts(AX_NVR_VO_SPLITE_TYPE enSplitType, + int nWidth, int nHeight, + int nLeftMargin, int nTopMargin, + int nRightMargin, int nBottomMargin) const { + + int cols_ = 0; + int rows_ = 0; + switch (enSplitType) + { + case AX_NVR_VO_SPLITE_TYPE::ONE: + case AX_NVR_VO_SPLITE_TYPE::MAX: + cols_ = 1; + rows_ = 1; + break; + case AX_NVR_VO_SPLITE_TYPE::FOUR: + cols_ = 2; + rows_ = 2; + break; + case AX_NVR_VO_SPLITE_TYPE::SIXTEEN: + case AX_NVR_VO_SPLITE_TYPE::EIGHT: + cols_ = 4; + rows_ = 4; + break; + case AX_NVR_VO_SPLITE_TYPE::THIRTYSIX: + cols_ = 6; + rows_ = 6; + break; + case AX_NVR_VO_SPLITE_TYPE::SIXTYFOUR: + cols_ = 8; + rows_ = 8; + break; + default: + cols_ = 1; + rows_ = 1; + break; + } + + int verticalSpacing = 4; + int horizontalSpacing = 4; + int rect_w_tmp = (nWidth - (cols_ - 1) * horizontalSpacing) / cols_; + int rect_h_tmp = (nHeight - (rows_ - 1) * verticalSpacing) / rows_; + int rect_w = ALIGN_DOWN(rect_w_tmp, 8); + int rect_h = ALIGN_DOWN(rect_h_tmp, 2); + int w = rect_w * cols_ + (cols_ - 1) * horizontalSpacing; + int h = rect_h * rows_ + (rows_ - 1) * verticalSpacing; + int left_right = nWidth - w; + int top_bottom = nHeight - h; + int left = left_right / 2; + left = left - left % 2; + int right = left_right - left; + int top = top_bottom / 2; + top = top - top % 2; + int bottom = top_bottom - top; + + vector vecVoRect; + int pt_x = 0; + int pt_y = 0; + if (enSplitType == AX_NVR_VO_SPLITE_TYPE::EIGHT) { + int index = 0; + vector channels = {1,2,4,5,6,8,9,10}; + for (AX_U32 i = 0; i < (AX_U32)rows_; ++i) { + for (AX_U32 j = 0; j < (AX_U32)cols_; ++j) { + if (std::find(channels.begin(), channels.end(), index) != channels.end()) { + index++; + continue; + } + + AX_NVR_RECT_T nvr_rect; + nvr_rect.x = pt_x + nLeftMargin + left + j * horizontalSpacing + j * rect_w; + nvr_rect.y = pt_y + nTopMargin + top + i * verticalSpacing + i * rect_h; + if (index == 0) { + nvr_rect.w = rect_w * 3 + horizontalSpacing * 2; + nvr_rect.h = rect_h * 3 + verticalSpacing * 2; + } + else { + nvr_rect.w = rect_w; + nvr_rect.h = rect_h; + } + vecVoRect.emplace_back(nvr_rect); + // qDebug() << nvr_rect.x << nvr_rect.y << nvr_rect.w << nvr_rect.h; + index++; + } + } + } else { + for (AX_U32 i = 0; i < (AX_U32)rows_; ++i) { + for (AX_U32 j = 0; j < (AX_U32)cols_; ++j) { + AX_NVR_RECT_T nvr_rect; + nvr_rect.x = pt_x + nLeftMargin + left + j * horizontalSpacing + j * rect_w; + nvr_rect.y = pt_y + nTopMargin + top + i * verticalSpacing + i * rect_h; + nvr_rect.w = rect_w; + nvr_rect.h = rect_h; + // qDebug() << nvr_rect.x << nvr_rect.y << nvr_rect.w << nvr_rect.h; + vecVoRect.emplace_back(nvr_rect); + } + } + } + return vecVoRect; +} + +AX_BOOL CAXNVRDisplayCtrl::initPollingLayout(AX_U32 u32Width, AX_U32 u32Height) { + +#if 0 + struct POINT { + AX_U32 x, y; + } pt = {0, 0}; + + struct COORDINATE { + AX_U32 x1, y1, x2, y2; + } area; + + constexpr AX_U32 BORDER = 8; + + /* calculate video channel rectage */ + for (AX_U32 i = 0; i < NVR_MAX_LAYOUT_NUM; ++i) { + AX_U32 nVideoCount = m_szLayoutVideos[i]; + AX_U32 nCols = ceil(sqrt((float)nVideoCount)); + AX_U32 nRows = ((nVideoCount % nCols) > 0) ? (nVideoCount / nCols + 1) : (nVideoCount / nCols); + if (2 == nVideoCount) { + nCols = 2; + nRows = 2; + } + /* border for both row and col */ + const AX_U32 nAreaW = ALIGN_DOWN(((u32Width - pt.x - BORDER * (nCols - 1)) / nCols), 8); + const AX_U32 nAreaH = ALIGN_DOWN(((u32Height - pt.y - BORDER * (nRows - 1)) / nRows), 2); + + vector vecVoRect; + for (AX_U32 i = 0; i < nRows; ++i) { + for (AX_U32 j = 0; j < nCols; ++j) { + area.x1 = pt.x + j * BORDER + j * nAreaW; + area.y1 = pt.y + i * BORDER + i * nAreaH; + area.x2 = area.x1 + nAreaW; + area.y2 = area.y1 + nAreaH; + + AX_NVR_RECT_T nvr_rect; + nvr_rect.x = area.x1; + nvr_rect.y = area.y1; + nvr_rect.w = area.x2 - area.x1; + nvr_rect.h = area.y2 - area.y1; + vecVoRect.emplace_back(nvr_rect); + } + } + + m_mapPollingLayout[nVideoCount] = vecVoRect; + } +#endif + for (auto enType: m_szLayoutVideos) { + m_mapPollingLayout[enType] = this->calcLayouts(enType, u32Width, u32Height, 4, 4, 4, 4); + } +#if 0 + for (auto it : m_mapPollingLayout) { + printf("count=%d \n", (int)it.first); + for (auto rect: it.second) { + printf("[%d]rect=%d %d %d %d \n", (int)it.first, rect.x, rect.y, rect.w, rect.h); + } + } +#endif + return AX_TRUE; +} + +AX_BOOL CAXNVRDisplayCtrl::is4K(AX_VO_INTF_SYNC_E eIntfSync, AX_VO_RECT_T& stArea) { + AX_BOOL b4k = AX_FALSE; + switch (eIntfSync) { + case AX_VO_OUTPUT_1080P25: + case AX_VO_OUTPUT_1080P30: + case AX_VO_OUTPUT_1080P50: + case AX_VO_OUTPUT_1080P60: + stArea.u32Width = 1920; + stArea.u32Height = 1080; + b4k = AX_FALSE; + break; + case AX_VO_OUTPUT_3840x2160_25: + case AX_VO_OUTPUT_3840x2160_30: + case AX_VO_OUTPUT_3840x2160_50: + case AX_VO_OUTPUT_3840x2160_60: + stArea.u32Width = 3840; + stArea.u32Height = 2160; + b4k = AX_TRUE; + break; + case AX_VO_OUTPUT_4096x2160_25: + case AX_VO_OUTPUT_4096x2160_30: + case AX_VO_OUTPUT_4096x2160_50: + case AX_VO_OUTPUT_4096x2160_60: + stArea.u32Width = 4096; + stArea.u32Height = 2160; + b4k = AX_TRUE; + break; + default: + LOG_M_E(TAG, "%s: UnSupport device %d", __func__, eIntfSync); + return AX_FALSE; + } + return b4k; +} + +AX_BOOL CAXNVRDisplayCtrl::getDispInfoFromIntfSync(AX_VO_INTF_SYNC_E eIntfSync, AX_VO_RECT_T& stArea, AX_U32& nHz) { + stArea.u32X = 0; + stArea.u32Y = 0; + stArea.u32Width = 1920; + stArea.u32Height = 1080; + switch (eIntfSync) { + case AX_VO_OUTPUT_1080P25: nHz = 25; break; + case AX_VO_OUTPUT_1080P30: nHz = 30; break; + case AX_VO_OUTPUT_1080P50: nHz = 50; break; + case AX_VO_OUTPUT_1080P60: nHz = 60; break; + case AX_VO_OUTPUT_3840x2160_25: nHz = 25; break; + case AX_VO_OUTPUT_3840x2160_30: nHz = 30; break; + case AX_VO_OUTPUT_3840x2160_50: nHz = 50; break; + case AX_VO_OUTPUT_3840x2160_60: nHz = 60; break; + case AX_VO_OUTPUT_4096x2160_25: nHz = 25; break; + case AX_VO_OUTPUT_4096x2160_30: nHz = 30; break; + case AX_VO_OUTPUT_4096x2160_50: nHz = 50; break; + case AX_VO_OUTPUT_4096x2160_60: nHz = 60; break; + default: + LOG_M_E(TAG, "%s: UnSupport device %d", __func__, eIntfSync); + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_VOID CAXNVRDisplayCtrl::createFbChannels(AX_VOID) { + if (m_pFbPaint == nullptr) return; + + VO_ATTR_T attr = m_pVo->GetAttr(); + AX_VO_RECT_T stArea; + AX_BOOL b4K = is4K(attr.enIntfSync, stArea); + if (!b4K) { + for (unsigned int nVoChn = 0; nVoChn < attr.stChnInfo.nCount; ++nVoChn) { + // printf("createFbChannels (%d, %d, %dx%d)\n", attr.stChnInfo.arrChns[nVoChn].stRect.u32X, + // attr.stChnInfo.arrChns[nVoChn].stRect.u32Y, + // attr.stChnInfo.arrChns[nVoChn].stRect.u32Width, + // attr.stChnInfo.arrChns[nVoChn].stRect.u32Height); + + m_pFbPaint->CreateChannel(nVoChn, FB_RECT_T{attr.stChnInfo.arrChns[nVoChn].stRect.u32X, + attr.stChnInfo.arrChns[nVoChn].stRect.u32Y, + attr.stChnInfo.arrChns[nVoChn].stRect.u32Width, + attr.stChnInfo.arrChns[nVoChn].stRect.u32Height}); + } + } + else { + for (unsigned int nVoChn = 0; nVoChn < m_vecRect.size(); ++nVoChn) { + // printf("createFbChannels (%d, %d, %dx%d)\n", m_vecRect[nVoChn].x, m_vecRect[nVoChn].y, m_vecRect[nVoChn].w, m_vecRect[nVoChn].h); + m_pFbPaint->CreateChannel(nVoChn, FB_RECT_T{m_vecRect[nVoChn].x, + m_vecRect[nVoChn].y, + m_vecRect[nVoChn].w, + m_vecRect[nVoChn].h}); + } + } + + // m_pFbPaint->Start(); +} + +AX_VOID CAXNVRDisplayCtrl::destoryFbChannels(AX_VOID) { + if (m_pFbPaint == nullptr) return; + VO_ATTR_T attr = m_pVo->GetAttr(); + for (unsigned int nVoChn = 0; nVoChn < attr.stChnInfo.nCount; ++nVoChn) { + m_pFbPaint->DestroyChannel(nVoChn); + } + // m_pFbPaint->Stop(); +} + +AX_NVR_RECT_T CAXNVRDisplayCtrl::mapRect(AX_NVR_RECT_T &rect1920x1080, int dst_width, int dst_height) { + + int x1 = rect1920x1080.x * dst_width / 1920; + int y1 = rect1920x1080.y * dst_height / 1080; + + int x2 = (rect1920x1080.x + rect1920x1080.w) * dst_width / 1920; + int y2 = (rect1920x1080.y + rect1920x1080.h) * dst_height / 1080; + + int width = rect1920x1080.w * dst_width / 1920; + int height = rect1920x1080.h * dst_height / 1080; + + AX_NVR_RECT_T rect3840x2160; + rect3840x2160.x = x1; + rect3840x2160.y = y1; + rect3840x2160.w = width; + rect3840x2160.h = height; + + return rect3840x2160; +} + +AX_S32 CAXNVRDisplayCtrl::getNextLayout() { + AX_NVR_RPATROL_CONFIG_T tConfig = CNVRConfigParser::GetInstance()->GetRoundPatrolConfig(); + + AX_S32 nNext = m_nCurrentLayoutIndex; + switch (tConfig.nStrategy) { + case 0: { /* ascending */ + nNext = (nNext + 1) % NVR_MAX_LAYOUT_NUM; + break; + } + case 1: { /* round */ + nNext += 1 * m_nRoundPatrolDirection; + if (nNext >= (AX_S32)NVR_MAX_LAYOUT_NUM) { + nNext = (AX_S32)NVR_MAX_LAYOUT_NUM - 2; + m_nRoundPatrolDirection = -1; + } else if (nNext < 0) { + nNext = 1; + m_nRoundPatrolDirection = 1; + } + break; + } + case 2: { /* random */ + while ((nNext = g_random_uniform(g_random_engine)) == m_nCurrentLayoutIndex) { + } + break; + } + default: break; + } + + return nNext; +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/frm/AXNVRDisplayCtrl.h b/app/demo/src/ppl/nvr/frm/AXNVRDisplayCtrl.h new file mode 100644 index 0000000..a48f651 --- /dev/null +++ b/app/demo/src/ppl/nvr/frm/AXNVRDisplayCtrl.h @@ -0,0 +1,129 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once +#include "ax_base_type.h" +#include "vo.hpp" +#include "framebufferPaint.hpp" +#include "frm/AXNVRFrameworkDefine.h" + +#include +#include +#include + +using namespace std; + +const AX_U32 NVR_MAX_LAYOUT_NUM = 5; + +typedef struct _AX_NVR_VO_INFO_T { + AX_NVR_DISPDEV_TYPE enDispDevType = AX_NVR_DISPDEV_TYPE::PRIMARY; + AX_U32 u32PreviewFifoDepth = 2; /* IN FIFO of VO */ + AX_U32 u32PlaybakFifoDepth = 2; /* IN FIFO of VO */ + AX_U32 u32Priority = 0; + AX_F32 fFps = 60.0; + VO_ATTR_T stVoAttr; +} AX_NVR_VO_INFO_T; + +class CAXNVRDisplayCtrl { +public: + CAXNVRDisplayCtrl(AX_VOID) = default; + virtual ~CAXNVRDisplayCtrl(AX_VOID) = default; + + AX_BOOL Init(const AX_NVR_VO_INFO_T &stAttr); + AX_VOID DeInit(); + + AX_BOOL GetChannelRect(VO_CHN nChn, AX_NVR_RECT_T &rect); + + AX_VOID StartPipFBChannel(const AX_NVR_RECT_T &rect); + AX_VOID StopPipFBChannel(AX_VOID); + AX_BOOL EnablePip(const AX_NVR_RECT_T &rect); + AX_BOOL DisablePip(AX_VOID); + + AX_BOOL UpdateView(const ax_nvr_channel_vector vecViewChns, + const vector vecVoRect, + AX_NVR_VIEW_TYPE enViewType, + AX_NVR_VIEW_CHANGE_TYPE enChangeType); + AX_VOID StartFBChannels(AX_VOID); + AX_VOID StopFBChannels(AX_VOID); + + AX_BOOL UpdateViewRound(AX_NVR_VIEW_CHANGE_TYPE enChangeType); + AX_BOOL UpdateChnResolution(VO_CHN nChn, AX_U32 nWidth, AX_U32 nHeight); + + const CVO *GetVo() const { return m_pVo; }; + const CVOLayerRegionObserver *GetVoRegionObs() const { return m_pVoRegionObs; }; + const CFramebufferPaint *GetFBPaint() const { return m_pFbPaint; }; + const AX_NVR_VO_INFO_T& GetAttr() const { return m_stAttr; }; + + void SetStartIndex(AX_U32 nStartndex) { + m_nCurrentLayoutIndex = nStartndex; + if (m_nCurrentLayoutIndex >= (AX_S32)NVR_MAX_LAYOUT_NUM) { + m_nCurrentLayoutIndex = NVR_MAX_LAYOUT_NUM - 1; + } + }; + + AX_U32 GetCurrentLayoutCnt() { + AX_U32 nCurrentLayoutCnt = 1; + switch (m_szLayoutVideos[m_nCurrentLayoutIndex]) + { + case AX_NVR_VO_SPLITE_TYPE::ONE: + nCurrentLayoutCnt = 1; + break; + case AX_NVR_VO_SPLITE_TYPE::FOUR: + nCurrentLayoutCnt = 4; + break; + case AX_NVR_VO_SPLITE_TYPE::EIGHT: + nCurrentLayoutCnt = 8; + break; + case AX_NVR_VO_SPLITE_TYPE::SIXTEEN: + nCurrentLayoutCnt = 16; + break; + case AX_NVR_VO_SPLITE_TYPE::THIRTYSIX: + nCurrentLayoutCnt = 36; + break; + default: + break; + } + return nCurrentLayoutCnt; + }; + +protected: + std::mutex mutex_; + +private: + CVO *m_pVo = nullptr; + CFramebufferPaint *m_pFbPaint = nullptr; + AX_NVR_VO_INFO_T m_stAttr; + vector m_vecRect; + AX_NVR_RECT_T m_pipRect; + CVOLayerRegionObserver* m_pVoRegionObs {nullptr}; + + // polling vo config: 1<-->4<-->8<-->16<-->36 + map> m_mapPollingLayout; + AX_NVR_VO_SPLITE_TYPE m_szLayoutVideos[NVR_MAX_LAYOUT_NUM] = {AX_NVR_VO_SPLITE_TYPE::ONE, + AX_NVR_VO_SPLITE_TYPE::FOUR, + AX_NVR_VO_SPLITE_TYPE::EIGHT, + AX_NVR_VO_SPLITE_TYPE::SIXTEEN, + AX_NVR_VO_SPLITE_TYPE::THIRTYSIX}; + AX_S32 m_nCurrentLayoutIndex = 0; + AX_S32 m_nRoundPatrolDirection = 1; + + AX_S32 initFramebuffer(AX_U32 u32Width, AX_U32 u32Height, AX_U32 u32FbIndex); + AX_BOOL initPollingLayout(AX_U32 u32Width, AX_U32 u32Height); + const vector calcLayouts(AX_NVR_VO_SPLITE_TYPE enSplitType, int nWidth, int nHeight, + int nLeftMargin, int nTopMargin, int nRightMargin, int nBottomMargin) const; + AX_BOOL getDispInfoFromIntfSync(AX_VO_INTF_SYNC_E eIntfSync, AX_VO_RECT_T& stArea, AX_U32& nHz); + AX_BOOL is4K(AX_VO_INTF_SYNC_E eIntfSync, AX_VO_RECT_T& stArea); + AX_VOID createFbChannels(AX_VOID); + AX_VOID destoryFbChannels(AX_VOID); + AX_NVR_RECT_T mapRect(AX_NVR_RECT_T &rect1920x1080, int dst_width=3840, int dst_height=2160); + AX_S32 getNextLayout(); + + AX_BOOL m_bRoundPatrolStop = AX_FALSE; + +}; \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/frm/AXNVRFramework.cpp b/app/demo/src/ppl/nvr/frm/AXNVRFramework.cpp new file mode 100644 index 0000000..5043dd0 --- /dev/null +++ b/app/demo/src/ppl/nvr/frm/AXNVRFramework.cpp @@ -0,0 +1,676 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "AXNVRFramework.h" +#include "TestSuiteConfigParser.h" +#include "ax_engine_api.h" +#include "ax_engine_type.h" + +#define TAG "FRM" + +#ifndef ALIGN_UP +#define ALIGN_UP(x, align) (((x) + ((align)-1)) & ~((align)-1)) +#endif + +// #define SKEL_MODEL_PATH ("/opt/etc/skelModels/1024x576/part") + +AX_BOOL CAXNVRFramework::Init(AX_U32 nDetectType, AX_U32 loglevel) { + + AX_BOOL bRet = AX_FALSE; + do { + AX_S32 nRet = 0; + // - log level + AX_U32 nLogLevel = loglevel; + // - log + APP_LOG_ATTR_T stLog; + memset(&stLog, 0, sizeof(stLog)); + stLog.nTarget = APP_LOG_TARGET_STDOUT; + stLog.nLv = nLogLevel; + + AX_CHAR* env = getenv("APP_LOG_TARGET"); + if (env) { + stLog.nTarget = atoi(env); + } + + strcpy(stLog.szAppName, "nvr"); + nRet = AX_APP_Log_Init(&stLog); + if (0 != nRet) { + printf("AX_APP_Log_Init failed, ret = 0x%x\n", nRet); + } else { + printf("[SUCCESS]AX_APP_Log_Init\n"); + + if (stLog.nTarget & APP_LOG_TARGET_SYSLOG) { + AX_APP_Log_SetSysModuleInited(AX_TRUE); + } + } + + // read config + m_stRPratrolCfg = CNVRConfigParser::GetInstance()->GetRoundPatrolConfig(); + m_stDetectCfg = CNVRConfigParser::GetInstance()->GetDetectConfig(); + m_stPrimaryCfg = CNVRConfigParser::GetInstance()->GetPrimaryDispConfig(); + m_stSecondaryCfg = CNVRConfigParser::GetInstance()->GetSecondaryDispConfig(); + m_stRecordCfg = CNVRConfigParser::GetInstance()->GetRecordConfig(); + m_stDeviceCfg = CNVRConfigParser::GetInstance()->GetDeviceConfig(); + + if (0 == nDetectType) { + /* disable detect by user input arg(-t 0). */ + m_stDetectCfg.bEnable = AX_FALSE; + } + + // - sys + nRet = AX_SYS_Init(); + if (0 != nRet) { + LOG_M_E(TAG, "AX_SYS_Init failed, ret = 0x%x", nRet); + break; + } + + // - vo + nRet = AX_VO_Init(); + if (0 != nRet) { + LOG_M_E(TAG, "AX_VO_Init failed, ret = 0x%x", nRet); + break; + } + + m_pPrimaryDispCtrl = this->initPrimaryDispCtrl(); + if (!m_pPrimaryDispCtrl) { + LOG_M_E(TAG, "init primary screen failed"); + break; + } + + m_pSecondaryDispCtrl = new (std::nothrow) CAXNVRDisplayCtrl; + if (!m_pSecondaryDispCtrl) { + LOG_M_E(TAG, "create secondary screen failed."); + break; + } + + if (!this->initVdec()) { + LOG_M_E(TAG, "init and start VDEC failed."); + break; + } + + if (!this->initIvps()) { + break; + } + + if (!this->initVenc()) { + break; + } + + // detect and detect observer + if (!this->initDetect(nDetectType)) { + break; + } + + // if (nDetectType) { + // CRegionTask::GetInstance()->Start(); + // } + + // record + m_pDataStreamRecord = this->initDataStreamRecord(); + if (!m_pDataStreamRecord) { + LOG_M_E(TAG, "init record failed."); + break; + } + + // preview + m_pPreviewCtrl = this->initPreviewCtrl(m_pPrimaryDispCtrl, + m_pSecondaryDispCtrl, + m_pDataStreamRecord, + nDetectType, + m_pDetect, + m_pDetectObs); + if (!m_pPreviewCtrl) { + LOG_M_E(TAG, "init preview ctrl failed."); + break; + } + + + m_pDataStreamPlayback = this->initDataStreamPlayback(); + if (!m_pDataStreamPlayback) { + LOG_M_E(TAG, "init playback failed."); + break; + } + + // playback + m_pPlaybakCtrl = this->initPlaybakCtrl(m_pPrimaryDispCtrl, m_pDataStreamPlayback); + if (!m_pPlaybakCtrl) { + LOG_M_E(TAG, "init playback ctrl failed."); + break; + } + + AX_U32 nRemoteDeviceCnt = 0; + std::vector mapRemoteDevice = CRemoteDeviceParser::GetInstance()->GetRemoteDeviceMap(&nRemoteDeviceCnt, m_stDeviceCfg.strPath); + AX_U32 index = 0; + for (auto &info : mapRemoteDevice) { + if (index >= nRemoteDeviceCnt) break; + if (!m_pPreviewCtrl->InsertDevice(info)) { + LOG_M_W(TAG, "Start channel %d failed.", info.nChannelId); + } + index ++; + } + + bRet = AX_TRUE; + } while (0); + + return bRet; +} + +AX_VOID CAXNVRFramework::DeInit() { + // if (nDetectType) { + // CRegionTask::GetInstance()->Stop(); + // } + + if (m_pDetect) { + m_pDetect->Stop(); + } + + if (m_pPlaybakCtrl) { + m_pPlaybakCtrl->DeInit(); + DEL_PTR(m_pPlaybakCtrl) + } + + if (m_pPreviewCtrl) { + m_pPreviewCtrl->DeInit(); + DEL_PTR(m_pPreviewCtrl) + } + + if (m_pDetect) { + m_pDetect->DeInit(); + DEL_PTR(m_pDetectObs) + } + + AX_ENGINE_Deinit(); + + if (m_pDataStreamRecord) { + m_pDataStreamRecord->StopAll(); + m_pDataStreamRecord->DeInit(); + DEL_PTR(m_pDataStreamRecord) + } + + if (m_pDataStreamPlayback) { + m_pDataStreamPlayback->DeInit(); + DEL_PTR(m_pDataStreamPlayback) + } + + if (m_pPrimaryDispCtrl) { + m_pPrimaryDispCtrl->DeInit(); + DEL_PTR(m_pPrimaryDispCtrl) + } + + if (m_pSecondaryDispCtrl) { + this->DeInitSecondaryDispCtrl(); + // if (m_bSecondaryInit) { + // m_pSecondaryDispCtrl->DeInit(); + // } + DEL_PTR(m_pSecondaryDispCtrl) + } + + CDecodeTask::GetInstance()->Stop(); + + AX_VO_Deinit(); + AX_IVPS_Deinit(); + AX_VDEC_Deinit(); + // AX_POOL_Exit(); + AX_SYS_Deinit(); + + AX_CHAR* env = getenv("APP_LOG_TARGET"); + if (env) { + if (atoi(env) & APP_LOG_TARGET_SYSLOG) { + AX_APP_Log_SetSysModuleInited(AX_FALSE); + } + } + AX_APP_Log_DeInit(); +} + +AX_BOOL CAXNVRFramework::InitSecondaryDispCtrl(AX_VOID) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] +++", __func__, __LINE__); + + do { + if (nullptr == m_pSecondaryDispCtrl) { + LOG_M_E(TAG, "Invalid secondary screen handle"); + break; + } + + if (m_stSecondaryCfg.nDevId == -1) { + LOG_M_E(TAG, "Secondary screen not configured, please check the configuration file"); + break; + } + + if (m_bSecondaryInit) { + LOG_M_W(TAG, "[ERROR]Secondary screen has been initialized"); + bRet = AX_TRUE; + break; + } + + AX_NVR_VO_INFO_T stSecondaryAttr; + stSecondaryAttr.enDispDevType = AX_NVR_DISPDEV_TYPE::SECOND; + stSecondaryAttr.stVoAttr.dev = m_stSecondaryCfg.nDevId; + stSecondaryAttr.stVoAttr.uiLayer = 1; + + if (!m_stDetectCfg.bEnable) { + /* if no need to draw rects, change to AX_VO_LAYER_OUT_TO_LINK to not push into layer fifo to speed up VB */ + stSecondaryAttr.stVoAttr.bLinkVo2Disp = AX_TRUE; + } else { + stSecondaryAttr.stVoAttr.bLinkVo2Disp = m_stSecondaryCfg.bLink; + } + stSecondaryAttr.stVoAttr.s32FBIndex[0] = m_stSecondaryCfg.nFBQt; + stSecondaryAttr.stVoAttr.s32FBIndex[1] = m_stSecondaryCfg.nFBRect; + stSecondaryAttr.stVoAttr.enIntfType = AX_VO_INTF_HDMI; + stSecondaryAttr.stVoAttr.enIntfSync = (AX_VO_INTF_SYNC_E)m_stSecondaryCfg.nHDMI; + stSecondaryAttr.stVoAttr.nLayerDepth = m_stSecondaryCfg.nLayerDepth; + stSecondaryAttr.stVoAttr.nBgClr = 0x303030; + stSecondaryAttr.stVoAttr.nDetectW = m_stDetectCfg.nW; + stSecondaryAttr.stVoAttr.nDetectH = m_stDetectCfg.nH; + stSecondaryAttr.stVoAttr.enVoMode = (m_stSecondaryCfg.nOnlineMode ? AX_VO_MODE_ONLINE : AX_VO_MODE_OFFLINE); + if (!m_pSecondaryDispCtrl->Init(stSecondaryAttr)) { + LOG_M_E(TAG, "Secondary screen init failed"); + break; + } + + m_bSecondaryInit = AX_TRUE; + bRet = AX_TRUE; + + } while (0); + + LOG_M_D(TAG, "[%s][%d] ---", __func__, __LINE__); + return bRet; +} + +AX_VOID CAXNVRFramework::DeInitSecondaryDispCtrl(AX_VOID) { + LOG_M_D(TAG, "[%s][%d] +++", __func__, __LINE__); + if (m_pSecondaryDispCtrl && m_stSecondaryCfg.nDevId != -1) { + if (!m_bSecondaryInit) { + LOG_M_W(TAG, "Secondary screen has not initialized"); + } else { + m_pSecondaryDispCtrl->DeInit(); + m_bSecondaryInit = AX_FALSE; + } + } + LOG_M_D(TAG, "[%s][%d] ---", __func__, __LINE__); +} + +AX_S32 CAXNVRFramework::MapToDisplay(AX_NVR_VIEW_TYPE enViewType, AX_NVR_DEV_ID nDevID) { + AX_S32 nChn = -1; + if (enViewType == AX_NVR_VIEW_TYPE::PREVIEW) { + const CVO *pVo = m_pPrimaryDispCtrl->GetVo(); + if (pVo) { + VO_ATTR_T attr = pVo->GetAttr(); + int nCount = attr.stChnInfo.nCount; + if (nCount != 0) { + nChn = nDevID%nCount; + } + } + } + + return nChn; +} + +AX_VOID CAXNVRFramework::GetResolution(AX_NVR_DEV_ID nDevID, AX_NVR_VIEW_TYPE enViewType, AX_U32 &nWidth, AX_U32 &nHeight) { + if (enViewType == AX_NVR_VIEW_TYPE::PREVIEW) { + m_pPreviewCtrl->GetResolution(nDevID, nWidth, nHeight); + } else if (enViewType == AX_NVR_VIEW_TYPE::PLAYBACK) { + m_pPlaybakCtrl->GetResolution(nDevID, nWidth, nHeight); + } +} + +AX_BOOL CAXNVRFramework::StartRoundPatrol(AX_VOID) { + AX_BOOL bRet = AX_FALSE; + + // m_pSecondaryDispCtrl->SetStartIndex(m_stRPratrolCfg.u32LayoutSplitCntIndex); + m_pSecondaryDispCtrl->SetStartIndex(0); + if (!m_pSecondaryDispCtrl->UpdateViewRound(AX_NVR_VIEW_CHANGE_TYPE::SHOW)) { + return AX_FALSE; + } + + vector vecDevID; + for (int i = m_nStartDevId; i < (AX_S32)m_pSecondaryDispCtrl->GetCurrentLayoutCnt(); ++i) { + vecDevID.emplace_back(i); + } + + bRet = m_pPreviewCtrl->StartRoundPatrol(vecDevID); + + return bRet; +} + +AX_VOID CAXNVRFramework::StopRoundPatrol(AX_VOID) { + vector vecDevID; + for (int i = m_nStartDevId; i < (AX_S32)m_pSecondaryDispCtrl->GetCurrentLayoutCnt(); ++i) { + vecDevID.emplace_back(i); + } + + m_pPreviewCtrl->StopRoundPatrol(vecDevID); + m_pSecondaryDispCtrl->UpdateViewRound(AX_NVR_VIEW_CHANGE_TYPE::HIDE); +} + +AX_BOOL CAXNVRFramework::UpdateRoundPatrol(AX_VOID) { + AX_BOOL bRet = AX_FALSE; + + vector vecLastDevID; + vector vecNextDevID; + vector vecUpdDevID; + vector vecStartDevID; + vector vecStopDevID; + if (m_stRPratrolCfg.enType == AX_NVR_RPATROL_TYPE::SPLIT) { + for (int i = m_nStartDevId; i < (AX_S32)m_pSecondaryDispCtrl->GetCurrentLayoutCnt(); ++i) { + vecLastDevID.emplace_back(i); + } + + if (!m_pSecondaryDispCtrl->UpdateViewRound(AX_NVR_VIEW_CHANGE_TYPE::UPDATE)) { + return AX_FALSE; + } + + for (int i = m_nStartDevId; i < (AX_S32)m_pSecondaryDispCtrl->GetCurrentLayoutCnt(); ++i) { + vecNextDevID.emplace_back(i); + } + + for (auto& nLastDev : vecLastDevID) { + AX_BOOL bExist = AX_FALSE; + for (auto& nNextDev : vecNextDevID) { + if (nLastDev == nNextDev) { + bExist = AX_TRUE; + break; + } + } + + if (bExist) { + vecUpdDevID.emplace_back(nLastDev); + } else { + vecStopDevID.emplace_back(nLastDev); + } + } + + for (auto& nNextDev : vecNextDevID) { + if (nNextDev >= MAX_DEVICE_ROUNDPATROL_COUNT) { + continue; + } + + AX_BOOL bExist = AX_FALSE; + for (auto& nLastDev : vecLastDevID) { + if (nNextDev == nLastDev) { + bExist = AX_TRUE; + break; + } + } + + if (!bExist) { + vecStartDevID.emplace_back(nNextDev); + } + } + + /* Stop no more exist channels */ + bRet = m_pPreviewCtrl->StopRoundPatrol(vecStopDevID); + if (!bRet) { + LOG_MM_E(TAG, "Stop round patrol failed."); + } + + /* Update exist channel resolution according to vo display */ + bRet = m_pPreviewCtrl->UpdateRoundPatrolPreview(vecUpdDevID); + if (!bRet) { + LOG_MM_E(TAG, "Update round patrol failed."); + } + + /* Start new channels, and notice that VDEC channels would be start keeping output resolution as input */ + bRet = m_pPreviewCtrl->StartRoundPatrol(vecStartDevID); + if (!bRet) { + LOG_MM_E(TAG, "Start round patrol failed."); + } + + /* Update new started channels whose VDEC channel output resolution should be calculated according to vo display */ + bRet = m_pPreviewCtrl->UpdateRoundPatrolPreview(vecStartDevID); + if (!bRet) { + LOG_MM_E(TAG, "Update round patrol failed."); + } + } + + return bRet; +} + +AX_U32 CAXNVRFramework::GetCurrentSplitCnt(AX_VOID) { + return m_pSecondaryDispCtrl->GetCurrentLayoutCnt(); +} + +vector CAXNVRFramework::GetDeviceFileList(AX_VOID) { + vector vecDevFileList(MAX_DEVICE_COUNT); + int device = 1; + for (auto &dev_file: vecDevFileList) { + dev_file = device; + device++; + } + return vecDevFileList; +} + +CAXNVRDisplayCtrl *CAXNVRFramework::initPrimaryDispCtrl(AX_VOID) { + AX_NVR_VO_INFO_T stPrimaryAttr; + stPrimaryAttr.enDispDevType = AX_NVR_DISPDEV_TYPE::PRIMARY; + stPrimaryAttr.stVoAttr.dev = m_stPrimaryCfg.nDevId; + stPrimaryAttr.stVoAttr.uiLayer = 0; + + if (!m_stDetectCfg.bEnable) { + /* if no need to draw rects, change to AX_VO_LAYER_OUT_TO_LINK to not push into layer fifo to speed up VB */ + stPrimaryAttr.stVoAttr.bLinkVo2Disp = AX_TRUE; + } else { + stPrimaryAttr.stVoAttr.bLinkVo2Disp = m_stPrimaryCfg.bLink; + } + + stPrimaryAttr.stVoAttr.s32FBIndex[0] = m_stPrimaryCfg.nFBQt; + stPrimaryAttr.stVoAttr.s32FBIndex[1] = m_stPrimaryCfg.nFBRect; + stPrimaryAttr.stVoAttr.enIntfType = AX_VO_INTF_HDMI; + stPrimaryAttr.stVoAttr.enIntfSync = (AX_VO_INTF_SYNC_E)m_stPrimaryCfg.nHDMI; + stPrimaryAttr.stVoAttr.nLayerDepth = m_stPrimaryCfg.nLayerDepth; + stPrimaryAttr.stVoAttr.nBgClr = 0x202020; // ((44 << 2) << 20) |((44 << 2) << 10) |(44 << 2); + stPrimaryAttr.stVoAttr.nDetectW = m_stDetectCfg.nW; + stPrimaryAttr.stVoAttr.nDetectH = m_stDetectCfg.nH; + stPrimaryAttr.stVoAttr.enVoMode = (m_stPrimaryCfg.nOnlineMode ? AX_VO_MODE_ONLINE : AX_VO_MODE_OFFLINE); + CAXNVRDisplayCtrl *pPrimaryDispCtrl = nullptr; + pPrimaryDispCtrl = new (std::nothrow) CAXNVRDisplayCtrl; + if (pPrimaryDispCtrl) { + if (!pPrimaryDispCtrl->Init(stPrimaryAttr)) { + DEL_PTR(pPrimaryDispCtrl) + return pPrimaryDispCtrl; + } + } + return pPrimaryDispCtrl; +} + +AX_BOOL CAXNVRFramework::initVdec(AX_VOID) { + // - vdec + AX_VDEC_MOD_ATTR_T stModAttr; + memset(&stModAttr, 0, sizeof(stModAttr)); + stModAttr.u32MaxGroupCount = MAX_DEVICE_VDEC_COUNT; + stModAttr.enDecModule = AX_ENABLE_ONLY_VDEC; + AX_S32 nRet = AX_VDEC_Init(&stModAttr); + if (0 != nRet) { + LOG_M_E(TAG, "AX_VDEC_Init failed, ret = 0x%x", nRet); + return AX_FALSE; + } + // -- decode thread(select) + return CDecodeTask::GetInstance()->Start(); +} + +AX_BOOL CAXNVRFramework::initIvps(AX_VOID) { + // - ivps + AX_S32 nRet = AX_IVPS_Init(); + if (0 != nRet) { + LOG_M_E(TAG, "AX_IVPS_Init fail, ret = 0x%x", nRet); + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_BOOL CAXNVRFramework::initVenc(AX_VOID) { + // - venc + AX_VENC_MOD_ATTR_T stModAttr; + memset(&stModAttr, 0, sizeof(stModAttr)); + stModAttr.enVencType = AX_VENC_VIDEO_ENCODER; + stModAttr.stModThdAttr.bExplicitSched = AX_FALSE; + stModAttr.stModThdAttr.u32TotalThreadNum = 1; + AX_S32 nRet = AX_VENC_Init(&stModAttr); + if (0 != nRet) { + LOG_M_E(TAG, "AX_VENC_Init fail, ret = 0x%x", nRet); + return AX_FALSE; + } + + return AX_TRUE; +} + +CDataStreamRecord *CAXNVRFramework::initDataStreamRecord(AX_VOID) { + // record + CDataStreamRecord *pRecord = new(std::nothrow) CDataStreamRecord; + if (pRecord) { + AXDS_RECORD_INIT_ATTR_T stAttr; + sprintf(stAttr.szParentDir[0], "%s", m_stRecordCfg.strPath.c_str()); + stAttr.uMaxDevCnt = MAX_DEVICE_COUNT; + stAttr.uStreamCnt = MAX_DEVICE_STREAM_COUNT; + stAttr.uMaxDevSpace = m_stRecordCfg.uMaxDevSpace; + stAttr.uMaxFilePeriod = m_stRecordCfg.uMaxFilePeriod; + stAttr.bGenIFOnClose = AX_TRUE; + if (!pRecord->Init(stAttr)) { + DEL_PTR(pRecord) + return pRecord; + } + } + return pRecord; +} + +CDataStreamPlay *CAXNVRFramework::initDataStreamPlayback(AX_VOID) { + // record + CDataStreamPlay *pPlaybck = new(std::nothrow) CDataStreamPlay; + if (pPlaybck) { + AXDS_PLAY_INIT_ATTR_T stAttr; + stAttr.strParentDir = m_stRecordCfg.strPath; + stAttr.uMaxDevCnt = MAX_DEVICE_COUNT; + stAttr.uStreamCnt = MAX_DEVICE_STREAM_COUNT; + stAttr.bOnlyIFrameOnReverse = m_stRecordCfg.bOnlyIFrameOnReverse; + + /* In case test suite enabled, playback streams exist under directory configured in test_suite.json */ + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + AX_NVR_TS_CONFIG_T tTestSuiteConfig = CTestSuiteConfigParser::GetInstance()->GetConfig(); + for (auto& m: tTestSuiteConfig.vecModuleInfo) { + if (m.strName == "playback") { + stAttr.strParentDir = m.strDataPath; + } + } + } + + if (!pPlaybck->Init(stAttr)) { + DEL_PTR(pPlaybck) + return pPlaybck; + } + } + return pPlaybck; +} + +CAXNVRPreviewCtrl *CAXNVRFramework::initPreviewCtrl(CAXNVRDisplayCtrl *pPrimaryDispCtrl, + CAXNVRDisplayCtrl *pSecondDispCtrl, + CDataStreamRecord *pRecord, + int nDetectType, + CDetector *pDetect, + CDetectObserver *pDetectObs) { + // Preview + CAXNVRPreviewCtrl *pPreviewCtrl = new (std::nothrow) CAXNVRPreviewCtrl; + if (pPreviewCtrl) { + AX_NVR_DEVICE_MGR_ATTR_T stAttr; + stAttr.pPrimary = pPrimaryDispCtrl; + stAttr.pSecond = pSecondDispCtrl; + stAttr.pRecord = pRecord; + stAttr.enDetectSrc = (AX_NVR_DETECT_SRC_TYPE)nDetectType; + if (AX_NVR_DETECT_SRC_TYPE::NONE != stAttr.enDetectSrc) { + stAttr.pDetect = pDetect; + stAttr.pDetectObs = pDetectObs; + } + pPreviewCtrl->Init(stAttr); + } + return pPreviewCtrl; +} + +CAXNVRPlaybakCtrl *CAXNVRFramework::initPlaybakCtrl(CAXNVRDisplayCtrl *pPrimaryDispCtrl, CDataStreamPlay *pPlayback) { + // Playback + CAXNVRPlaybakCtrl *pPlaybakCtrl = new (std::nothrow) CAXNVRPlaybakCtrl; + if (pPlaybakCtrl) { + AX_NVR_FILE_MGR_ATTR_T stRecordAttr; + stRecordAttr.pPrimary = m_pPrimaryDispCtrl; + stRecordAttr.strPath = m_stRecordCfg.strPath; + stRecordAttr.pPlayback = pPlayback; + + /* In case test suite enabled, playback streams under directory of configured in test_suite.json */ + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + AX_NVR_TS_CONFIG_T tTestSuiteConfig = CTestSuiteConfigParser::GetInstance()->GetConfig(); + for (auto& m: tTestSuiteConfig.vecModuleInfo) { + if (m.strName == "playback") { + stRecordAttr.strPath = m.strDataPath; + } + } + } + + pPlaybakCtrl->Init(stRecordAttr); + } + return pPlaybakCtrl; +} + +AX_BOOL CAXNVRFramework::initDetect(int nDetectType) { + + AX_BOOL bRet = AX_FALSE; + do { + if (nDetectType == 0) { + bRet = AX_TRUE; + break; + } + + // -- npu engine init + AX_ENGINE_NPU_ATTR_T tNpuAttr; + memset(&tNpuAttr, 0, sizeof(AX_ENGINE_NPU_ATTR_T)); + tNpuAttr.eHardMode = AX_ENGINE_VIRTUAL_NPU_STD; + AX_S32 nRet = AX_ENGINE_Init(&tNpuAttr); + if (AX_SUCCESS != nRet) { + LOG_M_E(TAG, "AX_ENGINE_Init fail, ret = 0x%x", nRet); + break; + } + + // -- detect init + DETECTOR_ATTR_T tDAttr; + tDAttr.nSkipRate = m_stDetectCfg.nSkipRate; + tDAttr.strModelPath = m_stDetectCfg.strModelPath; + tDAttr.ePPL = AX_SKEL_PPL_HVCFP; + tDAttr.nGrpCount = MAX_DETECTOR_GROUP_NUM; + tDAttr.nChannelNum = m_stDetectCfg.nChannelNum; + tDAttr.nWidth = m_stDetectCfg.nW; + tDAttr.nHeight = m_stDetectCfg.nH; + tDAttr.nFrameDepth = m_stDetectCfg.nDepth; + m_pDetect = new(std::nothrow) CDetector; + if (!m_pDetect) { + LOG_M_E(TAG, "create Detect failed"); + break; + } + + if (!m_pDetect->Init(tDAttr)) { + LOG_M_E(TAG, "init Detect failed"); + break; + } + + m_pDetectObs = new(std::nothrow) CDetectObserver(m_pDetect); + if (!m_pDetectObs) { + LOG_M_E(TAG, "create DetectObserver failed"); + break; + } + + if (!m_pDetect->Start()) { + LOG_M_E(TAG, "start Detect failed"); + break; + } + + bRet = AX_TRUE; + + } while(0); + + return bRet; +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/frm/AXNVRFramework.h b/app/demo/src/ppl/nvr/frm/AXNVRFramework.h new file mode 100644 index 0000000..0fc61ad --- /dev/null +++ b/app/demo/src/ppl/nvr/frm/AXNVRFramework.h @@ -0,0 +1,118 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once +#include "AXSingleton.h" +#include "detector.hpp" +#include "datastream_record.hpp" +#include "datastream_play.hpp" + +#include "AXNVRFrameworkDefine.h" +#include "RemoteDeviceParser.h" +#include "NVRConfigParser.h" +#include "AXNVRDisplayCtrl.h" +#include "AXNVRPreviewCtrl.h" +#include "AXNVRPlaybackCtrl.h" + + +class CAXNVRFramework : public CAXSingleton { + friend class CAXSingleton; + +private: + CAXNVRFramework(AX_VOID) noexcept = default; + virtual ~CAXNVRFramework(AX_VOID) = default; + +public: + AX_BOOL Init(AX_U32 nDetectType, AX_U32 loglevel); + AX_VOID DeInit(); + + // Vo + CAXNVRDisplayCtrl *PrimaryDispCtrl(AX_VOID); + AX_BOOL InitSecondaryDispCtrl(AX_VOID); + AX_VOID DeInitSecondaryDispCtrl(AX_VOID); + + // AX_BOOL UpdateView(AX_NVR_VIEW_TYPE enViewType, AX_NVR_VIEW_CHANGE_TYPE enChangeType, const vector &vecVoRect = vector()); + + AX_S32 MapToDisplay(AX_NVR_VIEW_TYPE enViewType, AX_NVR_DEV_ID nDevID); + + // preview and playback + CAXNVRPreviewCtrl *PreviewCtrl(AX_VOID); + CAXNVRPlaybakCtrl *PlaybakCtrl(AX_VOID); + + // AX_BOOL ZoomAndMove(AX_NVR_DEV_ID nDevID, AX_NVR_VIEW_TYPE enViewType, const AX_NVR_RECT_T &stCropRect, AX_BOOL bReset); + AX_VOID GetResolution(AX_NVR_DEV_ID nDevID, AX_NVR_VIEW_TYPE enViewType, AX_U32 &nWidth, AX_U32 &nHeight); + vector GetDeviceFileList(AX_VOID); + + // Round Patrol + AX_BOOL StartRoundPatrol(AX_VOID); + AX_VOID StopRoundPatrol(AX_VOID); + AX_BOOL UpdateRoundPatrol(AX_VOID); + AX_U32 GetCurrentSplitCnt(AX_VOID); + + inline AX_VOID SetRoundPatrolInfo(const AX_NVR_RPATROL_CONFIG_T &stInfo) { m_stRPratrolCfg = stInfo; }; + inline const AX_NVR_RPATROL_CONFIG_T& GetRoundPatrolInfo() const { return m_stRPratrolCfg; }; + inline AX_VOID SetRoundPatrolDevice(const vector &vecDevID) {}; + inline const vector GetRoundPatrolDevice() const { return vector(); }; + +private: + std::mutex mutex_; + int m_nStartDevId = 0; + + CAXNVRDisplayCtrl *m_pPrimaryDispCtrl = nullptr; + CAXNVRDisplayCtrl *m_pSecondaryDispCtrl = nullptr; + CAXNVRPreviewCtrl *m_pPreviewCtrl = nullptr; + CAXNVRPlaybakCtrl *m_pPlaybakCtrl = nullptr; + + CDetectObserver *m_pDetectObs = nullptr; + CDetector *m_pDetect = nullptr; + CDataStreamRecord *m_pDataStreamRecord = nullptr; + CDataStreamPlay *m_pDataStreamPlayback = nullptr; + + AX_NVR_RPATROL_CONFIG_T m_stRPratrolCfg; + AX_NVR_DETECT_CONFIG_T m_stDetectCfg; + AX_NVR_DISPVO_CONFIG_T m_stPrimaryCfg; + AX_NVR_DISPVO_CONFIG_T m_stSecondaryCfg; + AX_NVR_RECORD_CONFIG_T m_stRecordCfg; + AX_NVR_DEVICE_CONFIG_T m_stDeviceCfg; + + AX_BOOL m_bSecondaryInit = AX_FALSE; + +private: + CAXNVRDisplayCtrl *initPrimaryDispCtrl(AX_VOID); + AX_BOOL initVdec(AX_VOID); + AX_BOOL initIvps(AX_VOID); + AX_BOOL initVenc(AX_VOID); + + AX_BOOL initDetect(int nDetectType); + CDataStreamRecord *initDataStreamRecord(AX_VOID); + CDataStreamPlay *initDataStreamPlayback(AX_VOID); + CAXNVRPreviewCtrl *initPreviewCtrl(CAXNVRDisplayCtrl *pPrimaryDispCtrl, + CAXNVRDisplayCtrl *pSecondDispCtrl, + CDataStreamRecord *pRecord, + int nDetectType, + CDetector *pDetect, + CDetectObserver *pDetectObs); + + CAXNVRPlaybakCtrl *initPlaybakCtrl(CAXNVRDisplayCtrl *pPrimaryDispCtrl, + CDataStreamPlay *pPlayback); + +}; + +inline CAXNVRPreviewCtrl *CAXNVRFramework::PreviewCtrl(AX_VOID) { + return m_pPreviewCtrl; +} + +inline CAXNVRPlaybakCtrl *CAXNVRFramework::PlaybakCtrl(AX_VOID) { + return m_pPlaybakCtrl; +} + +inline CAXNVRDisplayCtrl *CAXNVRFramework::PrimaryDispCtrl(AX_VOID) { + return m_pPrimaryDispCtrl; +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/frm/AXNVRFrameworkDefine.h b/app/demo/src/ppl/nvr/frm/AXNVRFrameworkDefine.h new file mode 100644 index 0000000..d61e1de --- /dev/null +++ b/app/demo/src/ppl/nvr/frm/AXNVRFrameworkDefine.h @@ -0,0 +1,242 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once +#include +#include +#include +#include + +using namespace std; + +#include "ax_base_type.h" +#include "rtspstream.hpp" + +#define DEL_PTR(ptr) { if (ptr) { delete ptr; ptr=nullptr; } } +// #define SafeDelete(ptr) { try { delete ptr; } catch (...) { ASSERT(FALSE); } ptr=NULL; } + +#define MAX_DEVICE_COUNT (64) +#define MAX_DEVICE_VDEC_COUNT (64+32+1) +#define MAX_DEVICE_STREAM_COUNT (2) +#define MAX_DEVICE_PLAYBACK_COUNT (16) +#define MAX_DEVICE_ROUNDPATROL_COUNT (32) +#define NVR_VERSION_STR ("v0.1") + +#define NVR_PIP_CHN_NUM (MAX_DEVICE_COUNT) +#define MAX_PRIMARY_DISP_CHN_COUNT (MAX_DEVICE_COUNT + 1) /* 1: pip */ + +// channel +typedef AX_S32 AX_NVR_DEV_ID; +// index and devid(channel) +typedef vector> ax_nvr_channel_vector; + + +// DebugDefine +// #define USE_COLORBAR_FB0_FB1 +#define USE_FFMPEGSTREAM + +// Display Define +enum class AX_NVR_DISPDEV_TYPE { + PRIMARY = 0, + SECOND = 1, +}; + +enum class AX_NVR_VIEW_TYPE { + PREVIEW = 0, + PLAYBACK = 1, + POLLING = 2, + PIP = 3, + OTHERS = 99, // without VO +}; + +enum class AX_NVR_VIEW_CHANGE_TYPE { + UNKNOW = -1, + SHOW = 0, // create vo channels + HIDE = 1, // destory vo channels + UPDATE = 2, + MIN = 3, + MAX = 4, + MAINSUB = 5, +}; + +enum class AX_NVR_VO_SPLITE_TYPE { + UNKNOW = -1, + ONE = 1, // 1x1: 1 + FOUR = 2, // 2x2: 4 + EIGHT = 7, // 1+7: 8 + SIXTEEN = 4, // 4x4:16 + THIRTYSIX = 6, // 6x6 + SIXTYFOUR = 8, // 8x8:64 + MAX = 99 +}; + +typedef struct _AX_NVR_RECT_T { + bool bShow = true; + unsigned int x = {0}; + unsigned int y = {0}; + unsigned int w = {0}; + unsigned int h = {0}; +} AX_NVR_RECT_T; + +typedef struct _AX_NVR_VO_SPLITE_WINDOW_T { + unsigned int nIndex; + bool bDisp; + AX_NVR_RECT_T rect; +} AX_NVR_VO_SPLITE_WINDOW_T; + +// enum class AX_NVR_CHN_URL_TYPE { +// MAIN = 0, +// SUB1 = 1, +// }; + +enum class AX_NVR_CHN_IDX_TYPE { + MAIN = 0x00, + SUB1 = 0x01, +}; + +enum class AX_NVR_CHN_VIEW_TYPE { + PREVIEW = 0x00, + PATROL = 0x01, + PLAYBACK = 0x02, +}; + +enum class AX_NVR_CHN_TYPE { + COMMON = 0, + FISHEYE = 1, +}; + +enum class AX_NVR_TS_RUN_MODE { + DISABLE = 0, + STABILITY = 1, + UT = 2, +}; + +typedef struct _AX_NVR_DEV_CHN_INFO_T { + AX_BOOL bRecord; + unsigned char szRtspUrl[128]; + _AX_NVR_DEV_CHN_INFO_T() { + bRecord = AX_TRUE; + strcpy((char*)szRtspUrl, "rtsp://192.168.2.8/test.264"); + }; + +} AX_NVR_DEV_CHN_INFO_T; + +typedef struct _AX_NVR_DEV_INFO_T { + AX_NVR_DEV_ID nChannelId; // device id, channel id while preview + AX_U8 szAlias[64]; // alias name + AX_NVR_CHN_TYPE enType; // common/fisheyc + + AX_NVR_CHN_IDX_TYPE enPreviewIndex; // main/sub1 preview + AX_BOOL bPreviewDisplay; + + AX_NVR_CHN_IDX_TYPE enPatrolIndex; // main/sub1 pratrol + AX_BOOL bPatrolDisplay; + + AX_NVR_DEV_CHN_INFO_T stChnMain; + AX_NVR_DEV_CHN_INFO_T stChnSub1; + + _AX_NVR_DEV_INFO_T() { + nChannelId = -1; + strcpy((char*)szAlias, "remote device"); + enType = AX_NVR_CHN_TYPE::COMMON; + + enPreviewIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + bPreviewDisplay = AX_TRUE; + + enPatrolIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + bPatrolDisplay = AX_TRUE; + + stChnSub1.bRecord = AX_FALSE; + }; + +} AX_NVR_DEV_INFO_T; + +// using URL_ARGS = std::vector>; + +enum class AX_NVR_RPATROL_TYPE { + SPLIT = 0, // Multi-Grid switching + CHANNELS = 1, // Multi-Channels switching + BOTH = 2, // Multi-Grid-Channels switching +}; + +// round patrol all channels +typedef struct { + AX_BOOL bEnable; + AX_NVR_RPATROL_TYPE enType; + AX_NVR_VO_SPLITE_TYPE enSpliteType; // only for CHANNELS Type + AX_U32 uIntelval; // [5, 120] second + AX_S32 nStrategy; // 0: ascending; 1: round; 2: random +} AX_NVR_RPATROL_CONFIG_T; + +enum class AX_NVR_DETECT_SRC_TYPE { + NONE = 0, + IVPS = 1, + VDEC = 2, +}; + +// detect +typedef struct { + AX_U32 nPPL; + AX_U32 nVNPU; + AX_BOOL bTrackEnable; +} AX_NVR_DETECT_CHN_PARAM_T; + +typedef struct { + AX_BOOL bEnable; + AX_U32 nW; + AX_U32 nH; + AX_U32 nSkipRate; + AX_S32 nDepth; + AX_S32 nChannelNum; + AX_NVR_DETECT_CHN_PARAM_T tChnParam[3]; + std::string strModelPath; +} AX_NVR_DETECT_CONFIG_T; + +// display +typedef struct { + AX_S32 nDevId; // if -1, disable + AX_S32 nFBQt; + AX_S32 nFBRect; + AX_U32 nHDMI; + AX_U32 nChnDepth; + AX_U32 nLayerDepth; + AX_U32 nTolerance; + AX_BOOL bLink; /* linkage of vo->disp */ + AX_U32 nOnlineMode; +} AX_NVR_DISPVO_CONFIG_T; + +// record +typedef struct { + std::string strPath; + AX_U32 uMaxDevSpace; + AX_U32 uMaxFilePeriod; + AX_BOOL bOnlyIFrameOnReverse; /* 是否仅倒放I帧 */ +} AX_NVR_RECORD_CONFIG_T; + +// remote device source +typedef struct { + std::string strPath; +} AX_NVR_DEVICE_CONFIG_T; + +typedef struct { + AX_BOOL bSaveDisk; + AX_U32 nFrequency; // frequency of result feedback, unit: seconds +} AX_NVR_DATA_STREAM_CONFIG_T; + +// test suite +typedef struct { + AX_NVR_TS_RUN_MODE eMode; + std::string strStabilityPath; + std::string strUTPath; +} AX_NVR_TEST_SUITE_CONFIG_T; + +// FBC +typedef struct { + AX_U32 nLv; // lossy level +} AX_NVR_FBC_CONFIG_T; diff --git a/app/demo/src/ppl/nvr/frm/AXNVRPlaybackCtrl.cpp b/app/demo/src/ppl/nvr/frm/AXNVRPlaybackCtrl.cpp new file mode 100644 index 0000000..de084a3 --- /dev/null +++ b/app/demo/src/ppl/nvr/frm/AXNVRPlaybackCtrl.cpp @@ -0,0 +1,535 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "AXNVRPlaybackCtrl.h" +#include "AppLogApi.h" + +#define TAG "PLAYBACK" + +AX_VOID CAXNVRPlaybakCtrl::Init(const AX_NVR_FILE_MGR_ATTR_T &stAttr) { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + if (m_bInit) { + return; + } + + m_bInit = AX_TRUE; + m_stAttr = stAttr; + for (AX_U32 nDevID = 0; nDevID < m_stAttr.nMaxCount; ++nDevID) { + AX_NVR_FILE_T stDevice; + stDevice.pPlaybackChn = this->createPlaybackChannel(nDevID); + stDevice.nChannelId = nDevID; + m_mapDevice.emplace(nDevID, stDevice); + } + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); +} + +AX_VOID CAXNVRPlaybakCtrl::DeInit() { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + if (!m_bInit) return; + + m_bInit = AX_FALSE; + + for (auto& it : m_mapDevice) { + // const auto& nDevID = it.first; + auto& stDevice = it.second; + if (stDevice.pPlaybackChn) { + stDevice.pPlaybackChn->StopDisp(); + stDevice.pPlaybackChn->StopFile(); + delete stDevice.pPlaybackChn; + stDevice.pPlaybackChn = nullptr; + } + } + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); +} + +AX_VOID CAXNVRPlaybakCtrl::SetAttr(const AX_NVR_FILE_MGR_ATTR_T &stAttr) { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + m_stAttr = stAttr; + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); +} + + +std::vector CAXNVRPlaybakCtrl::GetDeviceFiles(AX_VOID) { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + + std::vector vecDevID; + LOG_M_D(TAG, "GetAllDeviceInfo path=%s", __func__, __LINE__, m_stAttr.strPath.c_str()); + std::vector vecDeviceInfo = CDataStreamPlay::GetAllDeviceInfo(m_stAttr.strPath); + for (auto &it: vecDeviceInfo) { + if (!it.bValid) continue; + + auto device = m_mapDevice.find(it.nDeviceID); + if (device == m_mapDevice.end()) { + LOG_M_E(TAG, "[%s][%d] Playback Channel %d not found", __func__, __LINE__, it.nDeviceID); + continue; + } + + auto& stDevice = device->second; + stDevice.stDeviceInfo = it; + if (stDevice.stDeviceInfo.bValid) { + LOG_M_D(TAG, "valid dev=%d", __func__, __LINE__, stDevice.stDeviceInfo.nDeviceID); + vecDevID.emplace_back(stDevice.stDeviceInfo.nDeviceID); + } + } + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return vecDevID; +} + +std::vector CAXNVRPlaybakCtrl::GetDeviceFileInfo(AX_NVR_DEV_ID nDeviceID, const string &strDate) { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + + std::vector vecDevicePeriod; + + CVideoInfoMap mapTimePeriodInfo = CDataStreamPlay::GetVideoInfo(m_stAttr.strPath, strDate); + auto dev = mapTimePeriodInfo.find(nDeviceID); + auto device = m_mapDevice.find(nDeviceID); + if (dev == mapTimePeriodInfo.end() || device == m_mapDevice.end()) { + LOG_M_E(TAG, "[%s][%d] Playback Channel %d not found", __func__, __LINE__, nDeviceID); + return vecDevicePeriod; + } + auto& stDevice = device->second; + if (stDevice.enPlayChnIdx == AX_NVR_CHN_IDX_TYPE::MAIN && dev->second.size() >= 1) { + return dev->second[0]; + } + else if (stDevice.enPlayChnIdx == AX_NVR_CHN_IDX_TYPE::SUB1 && dev->second.size() >= 2) { + return dev->second[1]; + } + else { + LOG_M_E(TAG, "[%s][%d] not found device and stream"); + } + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return vecDevicePeriod; +} + +AX_BOOL CAXNVRPlaybakCtrl::Start(const ax_nvr_channel_vector &vecChn, AX_U32 nDate, AX_U32 nTime, AX_BOOL bReverse) { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + AX_BOOL bRet = AX_FALSE; + + do { + if (m_stAttr.pPrimary == nullptr) { + LOG_M_E(TAG, "[%s][%d]pPrimary null pointer", __func__, __LINE__); + break; + } + + if (vecChn.size() == 0) { + LOG_M_E(TAG, "[%s][%d]vecChn.size invalid", __func__, __LINE__); + break; + } + + const CVO *pVo = m_stAttr.pPrimary->GetVo(); + if (pVo == nullptr) { + LOG_M_E(TAG, "[%s][%d]pVo null pointer", __func__, __LINE__); + break; + } + VO_ATTR_T attr = pVo->GetAttr(); + AX_BOOL bbRet = AX_TRUE; + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDevID = get<1>(chn); + if (nDevID == -1) continue; + + VO_CHN nVoChn = get<0>(chn)%attr.stChnInfo.nCount; + auto it = m_mapDevice.find(nDevID); + if (it == m_mapDevice.end()) { + LOG_M_E(TAG, "[%s][%d]Playback Channel not found", __func__, __LINE__); + continue; + } + + const auto& stDevice = it->second; + if (!stDevice.pPlaybackChn) { + LOG_M_E(TAG, "[%s][%d]Playback Channel invalid", __func__, __LINE__); + continue; + } + + if (!stDevice.pPlaybackChn->StartFile(nDate, nTime, bReverse)) { + LOG_M_E(TAG, "[%s][%d]StartFile failed", __func__, __LINE__); + bbRet = AX_FALSE; + continue; + } + + if (!stDevice.pPlaybackChn->StartDisp(attr.voLayer, nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect)) { + LOG_M_E(TAG, "[%s][%d]StartDisp failed", __func__, __LINE__); + bbRet = AX_FALSE; + continue; + } + } + bRet = bbRet; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPlaybakCtrl::StopAll() { + std::lock_guard lock(mutex_); + AX_BOOL bRet = AX_TRUE; + do { + if (m_stAttr.pPrimary == nullptr) { + break; + } + + for (const auto& it : m_mapDevice) { + const auto& stDevice = it.second; + if (stDevice.pPlaybackChn == nullptr) continue; + + stDevice.pPlaybackChn->StopDisp(); + stDevice.pPlaybackChn->StopFile(); + } + + } while(0); + + return bRet; +} + +AX_BOOL CAXNVRPlaybakCtrl::Stop(const ax_nvr_channel_vector &vecChn) { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + AX_BOOL bRet = AX_FALSE; + do { + if (m_stAttr.pPrimary == nullptr) { + break; + } + + AX_BOOL bbRet = AX_TRUE; + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDevID = get<1>(chn); + if (nDevID == -1) continue; + + auto it = m_mapDevice.find(nDevID); + if (it == m_mapDevice.end()) { + break; + } + + const auto& stDevice = it->second; + if (stDevice.pPlaybackChn == nullptr) continue; + + stDevice.pPlaybackChn->StopDisp(); + stDevice.pPlaybackChn->StopFile(); + } + bRet = bbRet; + } while(0); + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPlaybakCtrl::Update(const ax_nvr_channel_vector &vecChn) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + do { + if (m_stAttr.pPrimary == nullptr) { + break; + } + + const CVO *pVo = m_stAttr.pPrimary->GetVo(); + if (pVo == nullptr) { + break; + } + VO_ATTR_T attr = pVo->GetAttr(); + + AX_BOOL bbRet = AX_TRUE; + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDevID = get<1>(chn); + if (nDevID == -1) continue; + + VO_CHN nVoChn = get<0>(chn)%attr.stChnInfo.nCount; + auto it = m_mapDevice.find(nDevID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + break; + } + + const auto& stDevice = it->second; + // if (stDevice.nChannelId == -1) continue; + // if (stDevice.nChannelId != nDevID) continue; + + if (stDevice.pPlaybackChn == nullptr) continue; + if (!stDevice.pPlaybackChn->UpdateRect(attr.stChnInfo.arrChns[nVoChn].stRect)) { + bbRet = AX_FALSE; + break; + } + } + + bRet = bbRet; + + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPlaybakCtrl::PauseResume(const ax_nvr_channel_vector &vecChn, AX_BOOL bForceResume) { + LOG_M_I(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + AX_BOOL bRet = AX_FALSE; + do { + AX_BOOL bbRet = AX_TRUE; + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDeviceID = get<1>(chn); + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bRet = AX_TRUE; /* Not playbacked channel would be treated normal as well */ + break; + } + + const auto& nDevID = it->first; + const auto& stDevice = it->second; + + // if (stDevice.nChannelId == -1) continue; + // if (stDevice.nChannelId != nDevID) continue; + + if (stDevice.pPlaybackChn == nullptr) continue; + if (!stDevice.pPlaybackChn->PauseResume(bForceResume)) { + bbRet = AX_FALSE; + break; + } + bRet = bbRet; + } + } while(0); + LOG_M_I(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPlaybakCtrl::SetSpeed(const ax_nvr_channel_vector &vecChn, AX_F32 nSpeedfactor) { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + AX_BOOL bRet = AX_FALSE; + + do { + AX_BOOL bbRet = AX_TRUE; + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDeviceID = get<1>(chn); + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_TRUE; /* Not playbacked channel would be treated normal as well */ + break; + } + + const auto& nDevID = it->first; + const auto& stDevice = it->second; + + if (stDevice.pPlaybackChn == nullptr) continue; + if (!stDevice.pPlaybackChn->UpdateFps(nSpeedfactor)) { + bbRet = AX_FALSE; + break; + } + } + bRet = bbRet; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPlaybakCtrl::Step(const ax_nvr_channel_vector &vecChn, AX_BOOL bReverse) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + do { + AX_BOOL bbRet = AX_TRUE; + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDeviceID = get<1>(chn); + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) break; + + const auto& nDevID = it->first; + const auto& stDevice = it->second; + + if (stDevice.pPlaybackChn == nullptr) continue; + + if (!stDevice.pPlaybackChn->Step(bReverse)) { + bbRet = AX_FALSE; + break; + } + } + bRet = bbRet; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPlaybakCtrl::SwitchMainSub1(const ax_nvr_channel_vector &vecChn, AX_U32 nDefaultDate /*= 0*/, AX_U32 nDefaultTime /*= 0*/) { + + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + AX_BOOL bRet = AX_FALSE; + + do { + if (m_stAttr.pPrimary == nullptr) { + LOG_M_E(TAG, "[%s][%d]pPrimary null pointer", __func__, __LINE__); + break; + } + + if (vecChn.size() == 0) { + LOG_M_E(TAG, "[%s][%d]vecChn.size invalid", __func__, __LINE__); + break; + } + + CVO *pVo = const_cast(m_stAttr.pPrimary->GetVo()); + if (pVo == nullptr) { + LOG_M_E(TAG, "[%s][%d]pVo null pointer", __func__, __LINE__); + break; + } + VO_ATTR_T attr = pVo->GetAttr(); + AX_BOOL bbRet = AX_TRUE; + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDevID = get<1>(chn); + if (nDevID == -1) continue; + + VO_CHN nVoChn = get<0>(chn) % attr.stChnInfo.nCount; + auto it = m_mapDevice.find(nDevID); + if (it == m_mapDevice.end()) { + LOG_M_E(TAG, "[%s][%d]Playback Channel not found", __func__, __LINE__); + break; + } + + const auto& stDevice = it->second; + if (!stDevice.pPlaybackChn) { + LOG_M_E(TAG, "[%s][%d]Playback Channel invalid", __func__, __LINE__); + break; + } + + std::pair pairDateTime = stDevice.pPlaybackChn->GetCurrentDateTime(); + AX_U32 nDate = pairDateTime.first; + AX_U32 nTime = pairDateTime.second; + if (0 == nDate && 0 == nTime) { + nDate = nDefaultDate; + nTime = nDefaultTime; + LOG_M_W(TAG, "[%s][%d] Get current playback datetime failed, use timeline value as default.", __func__, __LINE__); + } + + if (!stDevice.pPlaybackChn->TrySwitchMainSub1(nDate, nTime)) { + bbRet = AX_FALSE; + break; + } + + stDevice.pPlaybackChn->StopDisp(); + stDevice.pPlaybackChn->StopFile(); + + if (!stDevice.pPlaybackChn->SwitchMainSub1(nDate, nTime)) { + bbRet = AX_FALSE; + break; + } + + if (!stDevice.pPlaybackChn->StartFile(nDate, nTime)) { + LOG_M_E(TAG, "[%s][%d]Start File failed", __func__, __LINE__); + bbRet = AX_FALSE; + break; + } + + if (!stDevice.pPlaybackChn->StartDisp(attr.voLayer, nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect)) { + LOG_M_E(TAG, "[%s][%d]Start Disp failed", __func__, __LINE__); + bbRet = AX_FALSE; + break; + } + } + bRet = bbRet; + } while(0); + + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPlaybakCtrl::ZoomAndMove(AX_NVR_DEV_ID nDeviceID, const AX_NVR_RECT_T &stCropRect, AX_BOOL bCrop) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + do { + if (m_stAttr.pPrimary == nullptr) { + break; + } + + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + break; + } + + const CVO *pVo = m_stAttr.pPrimary->GetVo(); + if (pVo == nullptr) break; + VO_ATTR_T attr = pVo->GetAttr(); + int nCount = attr.stChnInfo.nCount; + + const auto& stDevice = it->second; + AX_VO_RECT_T stRect; + AX_IVPS_RECT_T stCropRectTmp; + stCropRectTmp.nX = stCropRect.x; + stCropRectTmp.nY = stCropRect.y; + stCropRectTmp.nW = stCropRect.w; + stCropRectTmp.nH = stCropRect.h; + + int nVoChn = stDevice.nChannelId % nCount; + if (bCrop) { + if (stCropRectTmp.nW * 32 < attr.stChnInfo.arrChns[nVoChn].stRect.u32Width + || stCropRectTmp.nH * 32 < attr.stChnInfo.arrChns[nVoChn].stRect.u32Height) { + break; + } + } + + if (!stDevice.pPlaybackChn->Crop(stRect, stCropRectTmp, bCrop)) { + break; + } + + bRet = AX_TRUE; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPlaybakCtrl::GetResolution(AX_NVR_DEV_ID nDeviceID, AX_U32 &nWidth, AX_U32 &nHeight) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + do { + if (m_stAttr.pPrimary == nullptr) { + break; + } + + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + break; + } + + const auto& stDevice = it->second; + const AX_NVR_CHN_RES_T chnres = stDevice.pPlaybackChn->GetResolution(); + nWidth = chnres.w; + nHeight = chnres.h; + bRet = AX_TRUE; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +CAXNVRChannel *CAXNVRPlaybakCtrl::createPlaybackChannel(AX_NVR_DEV_ID nDevID) { + AX_NVR_CHN_ATTR_T stAttr; + stAttr.nDevID = nDevID; + // stAttr.enStreamSrcType = AX_NVR_CHN_SRC_TYPE::FFMPEG; + stAttr.enStreamSrcType = AX_NVR_CHN_SRC_TYPE::RECORD; + stAttr.enView = AX_NVR_CHN_VIEW_TYPE::PLAYBACK; + stAttr.pPlayback = m_stAttr.pPlayback; + stAttr.nFrmBufNum = 4; + stAttr.nBackupInDepth = m_stAttr.pPrimary->GetAttr().u32PlaybakFifoDepth + 1; + + return CAXNVRChannel::CreateInstance(stAttr); +} diff --git a/app/demo/src/ppl/nvr/frm/AXNVRPlaybackCtrl.h b/app/demo/src/ppl/nvr/frm/AXNVRPlaybackCtrl.h new file mode 100644 index 0000000..4061b06 --- /dev/null +++ b/app/demo/src/ppl/nvr/frm/AXNVRPlaybackCtrl.h @@ -0,0 +1,104 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once +#include "AXNVRDisplayCtrl.h" +#include "AXNVRChannel.h" +#include "AXNVRFrameworkDefine.h" +#include "datastream_play.hpp" + +#include "ax_base_type.h" +#include "detector.hpp" +#include +#include +#include +using namespace std; + + +typedef struct _AX_NVR_FILE_MGR_ATTR_T { + AX_U32 nMaxCount = MAX_DEVICE_PLAYBACK_COUNT; + CAXNVRDisplayCtrl *pPrimary = nullptr; + CDataStreamPlay *pPlayback = nullptr; + string strPath = ""; +} AX_NVR_FILE_MGR_ATTR_T; + +typedef struct _AX_NVR_FILE_T { + AX_NVR_DEV_ID nChannelId = -1; + AX_NVR_CHN_IDX_TYPE enPlayChnIdx = AX_NVR_CHN_IDX_TYPE::MAIN; + CAXNVRChannel *pPlaybackChn = nullptr; + AXDS_DEVICE_INFO_T stDeviceInfo; +} AX_NVR_FILE_T; + +typedef void (*UpdateCallback)(void* context); + +/** + * @brief for preivew and round-patrol + * + */ +class CAXNVRPlaybakCtrl { +public: + CAXNVRPlaybakCtrl(AX_VOID) = default; + virtual ~CAXNVRPlaybakCtrl(AX_VOID) = default; + + // 初始化 + AX_VOID Init(const AX_NVR_FILE_MGR_ATTR_T &stAttr); + AX_VOID DeInit(); + + // + AX_VOID SetAttr(const AX_NVR_FILE_MGR_ATTR_T &stAttr); + + // 获取当前存在的通道文件 + std::vector GetDeviceFiles(AX_VOID); + std::vector GetDeviceFileInfo(AX_NVR_DEV_ID nDeviceID, const string &strDate); + + // 获取当前选中的通道文件 + // virtual AX_NVR_DEV_INFO_T SelectDeviceFile(AX_NVR_DEV_ID nDeviceID) = 0; + + // 设置回调函数用于更新界面,比如录像时间段更新等 + // virtual void SetUpdateCallback(UpdateCallback callback, void* context) = 0; + + // 设置/获取属性 + // virtual void SetAttr(AX_VOID) = 0; + // virtual void GetAttr(AX_VOID) = 0; + + // 播放相关操作 + // 多文件通道 + AX_BOOL Update(const ax_nvr_channel_vector &vecChn); + AX_BOOL Start(const ax_nvr_channel_vector &vecChn, AX_U32 nDate, AX_U32 nTime, AX_BOOL bReverse); + AX_BOOL Stop(const ax_nvr_channel_vector &vecChn); + AX_BOOL StopAll(); + + // virtual AX_VOID SeekTo(AX_U64 mTimestamp) = 0; + + // 单文件通道 + AX_BOOL PauseResume(const ax_nvr_channel_vector &vecChn, AX_BOOL bForceResume = AX_FALSE); + AX_BOOL SetSpeed(const ax_nvr_channel_vector &vecChn, AX_F32 nSpeedfactor = 1.0); + AX_BOOL Step(const ax_nvr_channel_vector &vecChn, AX_BOOL bReverse); + AX_BOOL SwitchMainSub1(const ax_nvr_channel_vector &vecChn, AX_U32 nDefaultDate = 0, AX_U32 nDefaultTime = 0); + + AX_BOOL ZoomAndMove(const AX_NVR_DEV_ID nDeviceID, const AX_NVR_RECT_T &stCropRect, AX_BOOL bCrop); + + // get attr-resolution + AX_BOOL GetResolution(AX_NVR_DEV_ID nDeviceID, AX_U32 &nWidth, AX_U32 &nHeight); + + // 播放操作状态获取:使用struct包含状态/时间戳等信息? + // virtual AX_U32 GetCurrentStatus() = 0; + // virtual AX_U64 GetCurrentTimestamp() = 0; + +private: + std::mutex mutex_; + AX_BOOL m_bInit = AX_FALSE; + AX_NVR_FILE_MGR_ATTR_T m_stAttr; + + std::map m_mapDevice; + +protected: + CAXNVRChannel *createPlaybackChannel(AX_NVR_DEV_ID nDevID); + AX_BOOL pause_resume(const vector &vecDevID); +}; \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/frm/AXNVRPreviewCtrl.cpp b/app/demo/src/ppl/nvr/frm/AXNVRPreviewCtrl.cpp new file mode 100644 index 0000000..09d043b --- /dev/null +++ b/app/demo/src/ppl/nvr/frm/AXNVRPreviewCtrl.cpp @@ -0,0 +1,1141 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "AXNVRPreviewCtrl.h" +#include "AppLogApi.h" + +#define TAG "PREVIEW" + + +AX_VOID CAXNVRPreviewCtrl::Init(const AX_NVR_DEVICE_MGR_ATTR_T &stAttr) { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + if (m_bInit) { + return; + } + + m_bInit = AX_TRUE; + m_stAttr = std::move(stAttr); + for (AX_U32 nDevID = 0; nDevID < m_stAttr.nMaxCount; ++nDevID) { + AX_NVR_DEVICE_T stDevice; + stDevice.pRPatrolChn = this->createRPatrolChannel(nDevID); + stDevice.pThreadRPatrol = new (std::nothrow) CAXThread; + stDevice.pThreadRPatrolUpdate = new (std::nothrow) CAXThread; + stDevice.pPreviewChnMain = this->createPreviewChannel(nDevID, AX_NVR_CHN_IDX_TYPE::MAIN); + stDevice.pPreviewChnSub1 = this->createPreviewChannel(nDevID, AX_NVR_CHN_IDX_TYPE::SUB1); + stDevice.pThreadPreview = new (std::nothrow) CAXThread; + m_mapDevice.emplace(nDevID, stDevice); + } + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); +} + +AX_VOID CAXNVRPreviewCtrl::DeInit() { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + if (!m_bInit) { + return; + } + + m_bInit = AX_FALSE; + + for (auto& it : m_mapDevice) { + const auto& nDevID = it.first; + auto& stDevice = it.second; + + // deinit round patrol channel + if (stDevice.pRPatrolChn) { + stDevice.pRPatrolChn->StopDisp(); + stDevice.pRPatrolChn->StopRtsp(AX_TRUE); + delete stDevice.pRPatrolChn; + stDevice.pRPatrolChn = nullptr; + } + + // deinit preview channel - main + if (stDevice.pPreviewChnMain) { + stDevice.pPreviewChnMain->StopDisp(); + stDevice.pPreviewChnMain->StopRtsp(AX_TRUE); + delete stDevice.pPreviewChnMain; + stDevice.pPreviewChnMain = nullptr; + } + + // deinit preview channel - main + if (stDevice.pPreviewChnSub1) { + stDevice.pPreviewChnSub1->StopDisp(); + stDevice.pPreviewChnSub1->StopRtsp(AX_TRUE); + delete stDevice.pPreviewChnSub1; + stDevice.pPreviewChnSub1 = nullptr; + } + + if (stDevice.pThreadRPatrol) { + delete stDevice.pThreadRPatrol; + stDevice.pThreadRPatrol = nullptr; + } + + if (stDevice.pThreadRPatrolUpdate) { + delete stDevice.pThreadRPatrolUpdate; + stDevice.pThreadRPatrolUpdate = nullptr; + } + + if (stDevice.pThreadPreview) { + delete stDevice.pThreadPreview; + stDevice.pThreadPreview = nullptr; + } + } + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); +} + +AX_BOOL CAXNVRPreviewCtrl::InsertDevice(const AX_NVR_DEV_INFO_T &stDeviceInfo) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + do { + auto it = m_mapDevice.find(stDeviceInfo.nChannelId); + if (it == m_mapDevice.end()) break; + auto& stDevice = it->second; + + if (stDevice.stDevInfo.nChannelId != -1) break; + stDevice.stDevInfo = stDeviceInfo; + + // start preview channel rtsp and record + if (!this->startRtsp(stDevice.pPreviewChnMain, stDevice.stDevInfo.stChnMain, AX_FALSE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::MAIN, stDevice.stDevInfo.nChannelId))) { + break; + } + if (!this->startRtsp(stDevice.pPreviewChnSub1, stDevice.stDevInfo.stChnSub1, AX_FALSE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::SUB1, stDevice.stDevInfo.nChannelId))) { + break; + } + + bRet = AX_TRUE; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPreviewCtrl::UpdateDevice(const AX_NVR_DEV_INFO_T &stDeviceInfo) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + do { + auto it = m_mapDevice.find(stDeviceInfo.nChannelId); + if (it == m_mapDevice.end()) break; + auto& stDevice = it->second; + + if (stDevice.stDevInfo.nChannelId == -1) break; + if (stDevice.stDevInfo.nChannelId != stDeviceInfo.nChannelId) break; + // FixMe: stDevInfoTmp for check to stop and start + AX_NVR_DEV_INFO_T stDevInfoTmp = stDevice.stDevInfo; + stDevice.stDevInfo = stDeviceInfo; + +#if 0 // + if (stDevInfoTmp.nType != it->second.stDevInfo.nType + || 0 != strcmp(stDevInfoTmp.szRtspUrl, it->second.stDevInfo.szRtspUrl) + || 0 != strcmp(stDevInfoTmp.szRtspUrlSecond, it->second.stDevInfo.szRtspUrlSecond)) { + // do sth. + } +#endif + + // stop and start preview channel rtsp and record + stDevice.pPreviewChnMain->StopRtsp(); + if (!this->startRtsp(stDevice.pPreviewChnMain, stDevice.stDevInfo.stChnMain, AX_FALSE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::MAIN, stDevice.stDevInfo.nChannelId))) { + break; + } + + stDevice.pPreviewChnSub1->StopRtsp(); + if (!this->startRtsp(stDevice.pPreviewChnSub1, stDevice.stDevInfo.stChnSub1, AX_FALSE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::SUB1, stDevice.stDevInfo.nChannelId))) { + break; + } + + + // stop and start round patrol channel rtsp and display + stDevice.pRPatrolChn->StopRtsp(); + if (AX_NVR_CHN_IDX_TYPE::MAIN == stDevice.stDevInfo.enPatrolIndex) { + if (!this->startRtsp(stDevice.pRPatrolChn, stDevice.stDevInfo.stChnMain, AX_TRUE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PATROL, stDevice.stDevInfo.enPatrolIndex, stDevice.stDevInfo.nChannelId))) { + break; + } + } else if (AX_NVR_CHN_IDX_TYPE::SUB1 == stDevice.stDevInfo.enPatrolIndex) { + if (!this->startRtsp(stDevice.pRPatrolChn, stDevice.stDevInfo.stChnSub1, AX_TRUE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PATROL, stDevice.stDevInfo.enPatrolIndex, stDevice.stDevInfo.nChannelId))) { + break; + } + } + + bRet = AX_TRUE; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPreviewCtrl::DeleteDevice(const vector &vecDevID) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + do { + + for (auto nDevID:vecDevID) { + + auto it = m_mapDevice.find(nDevID); + if (it == m_mapDevice.end()) break; + if (it->second.stDevInfo.nChannelId == -1) break; + if (it->second.stDevInfo.nChannelId != nDevID) break; + it->second.stDevInfo.nChannelId = -1; + + // stop preview channel rtsp and record + it->second.pPreviewChnMain->StopRtsp(AX_TRUE); + it->second.pPreviewChnSub1->StopRtsp(AX_TRUE); + + // stop round patrol channel rtsp and display + it->second.pRPatrolChn->StopDisp(); + it->second.pRPatrolChn->StopRtsp(AX_TRUE); + } + + bRet = AX_TRUE; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_NVR_DEV_INFO_T CAXNVRPreviewCtrl::SelectDevice(AX_NVR_DEV_ID nDeviceID) { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) return AX_NVR_DEV_INFO_T(); + if (it->second.stDevInfo.nChannelId != nDeviceID) return AX_NVR_DEV_INFO_T(); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return it->second.stDevInfo; +} + +vector CAXNVRPreviewCtrl::GetFreeDevices() { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + vector vecFreeDevices; + std::lock_guard lock(mutex_); + + for (const auto& it : m_mapDevice) { + const auto& nDevID = it.first; + const auto& stDevice = it.second; + if (stDevice.stDevInfo.nChannelId == -1) { + vecFreeDevices.emplace_back(nDevID); + } + } + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return vecFreeDevices; +} + +vector CAXNVRPreviewCtrl::GetDevices() { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + vector vecDeviceList; + std::lock_guard lock(mutex_); + + for (const auto& it : m_mapDevice) { + const auto& nDevID = it.first; + const auto& stDevice = it.second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.stDevInfo.nChannelId != nDevID) continue; + vecDeviceList.emplace_back(stDevice.stDevInfo); + } + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return vecDeviceList; +} + +AX_BOOL CAXNVRPreviewCtrl::ZoomAndMove(AX_NVR_DEV_ID nDeviceID, const AX_NVR_RECT_T &stCropRect, AX_BOOL bCrop) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + do { + if (m_stAttr.pPrimary == nullptr) break; + CVO *pVo = const_cast(m_stAttr.pPrimary->GetVo()); + if (pVo == nullptr) break; + VO_ATTR_T attr = pVo->GetAttr(); + int nCount = attr.stChnInfo.nCount; + + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) break; + if (it->second.stDevInfo.nChannelId == -1) break; + if (it->second.stDevInfo.nChannelId != nDeviceID) break; + if (it->second.pPreviewChnMain == nullptr) break; + if (it->second.pPreviewChnSub1 == nullptr) break; + const auto& stDevice = it->second; + + int nVoChn = stDevice.stDevInfo.nChannelId%nCount; + + AX_IVPS_RECT_T stCropRectTmp; + stCropRectTmp.nX = stCropRect.x; + stCropRectTmp.nY = stCropRect.y; + stCropRectTmp.nW = stCropRect.w; + stCropRectTmp.nH = stCropRect.h; + + if (bCrop) { + if (stCropRectTmp.nW * 32 < attr.stChnInfo.arrChns[nVoChn].stRect.u32Width + || stCropRectTmp.nH * 32 < attr.stChnInfo.arrChns[nVoChn].stRect.u32Height) { + break; + } + + pVo->UpdateChnCropRect(nVoChn, stCropRectTmp); + } else { + pVo->UpdateChnCropRect(nVoChn, {0, 0, 0, 0}); + } + + if (AX_NVR_CHN_IDX_TYPE::MAIN == stDevice.stDevInfo.enPreviewIndex) { + bRet = stDevice.pPreviewChnMain->Crop(attr.stChnInfo.arrChns[nVoChn].stRect, stCropRectTmp, bCrop); + } else if (AX_NVR_CHN_IDX_TYPE::SUB1 == stDevice.stDevInfo.enPreviewIndex) { + bRet = stDevice.pPreviewChnSub1->Crop(attr.stChnInfo.arrChns[nVoChn].stRect, stCropRectTmp, bCrop); + } + + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPreviewCtrl::StartPip(AX_NVR_DEV_ID nDeviceID, AX_NVR_CHN_IDX_TYPE enIdx) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + do { + + AX_NVR_CHN_ATTR_T stAttr; + stAttr.nDevID = nDeviceID; + stAttr.enIndex = enIdx; + stAttr.enView = AX_NVR_CHN_VIEW_TYPE::PREVIEW; + stAttr.enStreamSrcType = AX_NVR_CHN_SRC_TYPE::RTSP; + + stAttr.enDetectSrcType = m_stAttr.enDetectSrc; + stAttr.pDetector = m_stAttr.pDetect; + stAttr.pDetectObs = m_stAttr.pDetectObs; + + stAttr.bRecord = AX_FALSE; + stAttr.pRecord = nullptr; + stAttr.pDisplay = m_stAttr.pPrimary; + + if (!m_chnPip.Init(stAttr)) { + break; + } + + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + break; + } + + auto stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; + + if (AX_NVR_CHN_IDX_TYPE::MAIN == enIdx) { + stDevice.stDevInfo.stChnMain.bRecord = AX_FALSE; + if (!this->startRtsp(&m_chnPip, stDevice.stDevInfo.stChnMain, AX_TRUE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, enIdx, stDevice.stDevInfo.nChannelId, AX_TRUE))) { + break; + } + } else if (AX_NVR_CHN_IDX_TYPE::SUB1 == enIdx) { + stDevice.stDevInfo.stChnSub1.bRecord = AX_FALSE; + if (!this->startRtsp(&m_chnPip, stDevice.stDevInfo.stChnSub1, AX_TRUE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, enIdx, stDevice.stDevInfo.nChannelId, AX_TRUE))) { + break; + } + } + + // display + CVO *pVo = const_cast(m_stAttr.pPrimary->GetVo()); + if (pVo == nullptr) break; + VO_ATTR_T attr = pVo->GetAttr(); + int nVoLayer = attr.voLayer; + int nVoChn = NVR_PIP_CHN_NUM; + if (!m_chnPip.StartDisp(nVoLayer, nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect)) { + break; + } else { + pVo->SetPipRect(attr.stChnInfo.arrChns[nVoChn].stRect); + } + + bRet = AX_TRUE; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + + +AX_BOOL CAXNVRPreviewCtrl::StopPip(AX_VOID) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + CVO *pVo = const_cast(m_stAttr.pPrimary->GetVo()); + if (pVo != nullptr) { + pVo->SetPipRect({0, 0, 0, 0}); + } + + m_chnPip.StopDisp(); + m_chnPip.StopRtsp(); + + bRet = AX_TRUE; + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_VOID CAXNVRPreviewCtrl::StartRPatrolThread(AX_VOID* pArg) { + AX_NVR_DEVICE_T* pDevice = (AX_NVR_DEVICE_T*)pArg; + LOG_M_I(TAG, "[%s][%d] dev=%d +++ ", __func__, __LINE__, pDevice->stDevInfo.nChannelId); + + do { + + if (m_stAttr.pSecond == nullptr) break; + const CVO *pVo = m_stAttr.pSecond->GetVo(); + if (pVo == nullptr) break; + VO_ATTR_T attr = pVo->GetAttr(); + int nCount = attr.stChnInfo.nCount; + int nVoLayer = attr.voLayer; + + int nVoChn = pDevice->stDevInfo.nChannelId % nCount; + + if (AX_NVR_CHN_IDX_TYPE::MAIN == pDevice->stDevInfo.enPatrolIndex) { + if (!this->startRtsp(pDevice->pRPatrolChn, pDevice->stDevInfo.stChnMain, AX_FALSE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PATROL, AX_NVR_CHN_IDX_TYPE::MAIN, pDevice->stDevInfo.nChannelId))) { + pDevice->bRes = AX_FALSE; + break; + } + } else if (AX_NVR_CHN_IDX_TYPE::SUB1 == pDevice->stDevInfo.enPatrolIndex) { + if (!this->startRtsp(pDevice->pRPatrolChn, pDevice->stDevInfo.stChnSub1, AX_FALSE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PATROL, AX_NVR_CHN_IDX_TYPE::SUB1, pDevice->stDevInfo.nChannelId))) { + pDevice->bRes = AX_FALSE; + break; + } + } + if (pDevice->stDevInfo.bPatrolDisplay) { + if (!pDevice->pRPatrolChn->StartDisp(nVoLayer, nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect)) { + pDevice->bRes = AX_FALSE; + break; + } + } + } while(0); + + LOG_M_I(TAG, "[%s][%d] dev=%d --- ", __func__, __LINE__, pDevice->stDevInfo.nChannelId); +} + +AX_BOOL CAXNVRPreviewCtrl::StartRoundPatrol(const vector &vecDevID) { + LOG_MM_I(TAG, "+++"); + + const AX_U32 MAX_RPATROL_CNT = MAX_DEVICE_ROUNDPATROL_COUNT; + AX_BOOL bRet = AX_FALSE; + std::lock_guard lock(mutex_); + +do { + AX_BOOL bbRet = AX_TRUE; + AX_U32 nIndex = 0; + for (auto nDeviceID : vecDevID) { + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + break; + } + + auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; + if (stDevice.pRPatrolChn == nullptr) continue; + + if (!stDevice.pThreadRPatrol->Start([this](AX_VOID* pArg) -> AX_VOID { StartRPatrolThread(pArg); }, &stDevice, "patrol")) { + LOG_M_E(TAG, "[%s][%d] Start stop channel %d thread failed.", __func__, __LINE__, stDevice.stDevInfo.nChannelId); + } + + nIndex ++; + if (nIndex >= MAX_RPATROL_CNT) { + break; + } + } + + nIndex = 0; + for (auto nDeviceID : vecDevID) { + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + break; + } + auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; + if (stDevice.pRPatrolChn == nullptr) continue; + + stDevice.pThreadRPatrol->Stop(); + stDevice.pThreadRPatrol->Join(); + + if (!stDevice.bRes) { + bbRet = AX_FALSE; + } + + nIndex ++; + if (nIndex >= MAX_RPATROL_CNT) { + break; + } + } + + bRet = bbRet; + } while(0); + + LOG_MM_I(TAG, "---"); + return bRet; +} + +AX_VOID CAXNVRPreviewCtrl::StopRPatrolThread(AX_VOID* pArg) { + AX_NVR_DEVICE_T* pDevice = (AX_NVR_DEVICE_T*)pArg; + LOG_M_I(TAG, "[%s][%d] dev=%d +++ ", __func__, __LINE__, pDevice->stDevInfo.nChannelId); + + pDevice->pRPatrolChn->StopDisp(); + pDevice->pRPatrolChn->StopRtsp(AX_TRUE); + + LOG_M_I(TAG, "[%s][%d] dev=%d --- ", __func__, __LINE__, pDevice->stDevInfo.nChannelId); +} + +AX_BOOL CAXNVRPreviewCtrl::StopRoundPatrol(const vector &vecDevID) { + LOG_MM_I(TAG, "+++"); + + std::lock_guard lock(mutex_); + + AX_BOOL bRet = AX_FALSE; + + do { + AX_BOOL bbRet = AX_TRUE; + for (auto nDeviceID : vecDevID) { + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + break; + } + + auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.pRPatrolChn == nullptr) continue; + + if (!stDevice.pThreadRPatrol->Start([this](AX_VOID* pArg) -> AX_VOID { StopRPatrolThread(pArg); }, &stDevice, "patrol")) { + LOG_M_E(TAG, "[%s][%d] Start stop channel %d thread failed.", __func__, __LINE__, stDevice.stDevInfo.nChannelId); + continue; + } + } + + for (auto nDeviceID : vecDevID) { + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + break; + } + + const auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.pRPatrolChn == nullptr) continue; + + stDevice.pThreadRPatrol->Stop(); + stDevice.pThreadRPatrol->Join(); + } + + bRet = bbRet; + } while (0); + + LOG_MM_I(TAG, "---"); + + return bRet; +} + +AX_VOID CAXNVRPreviewCtrl::UpdateRPatrolThread(AX_VOID* pArg) { + AX_NVR_DEVICE_T* pDevice = (AX_NVR_DEVICE_T*)pArg; + LOG_M_I(TAG, "[%s][%d] dev=%d +++ ", __func__, __LINE__, pDevice->stDevInfo.nChannelId); + + do { + + if (m_stAttr.pSecond == nullptr) break; + const CVO *pVo = m_stAttr.pSecond->GetVo(); + if (pVo == nullptr) break; + VO_ATTR_T attr = pVo->GetAttr(); + int nCount = attr.stChnInfo.nCount; + int nVoLayer = attr.voLayer; + + int nVoChn = pDevice->stDevInfo.nChannelId % nCount; + if (pDevice->stDevInfo.bPatrolDisplay) { + if (!pDevice->pRPatrolChn->UpdateRPatrolRect(attr.stChnInfo.arrChns[nVoChn].stRect)) { + pDevice->bRes = AX_FALSE; + break; + } + } + } while(0); + + LOG_M_I(TAG, "[%s][%d] dev=%d --- ", __func__, __LINE__, pDevice->stDevInfo.nChannelId); +} + +AX_BOOL CAXNVRPreviewCtrl::UpdateRoundPatrolPreview(const vector &vecDevID) { + LOG_MM_I(TAG, "+++"); + + const AX_U32 MAX_RPATROL_CNT = MAX_DEVICE_ROUNDPATROL_COUNT; + AX_BOOL bRet = AX_FALSE; + std::lock_guard lock(mutex_); + + do { + AX_BOOL bbRet = AX_TRUE; + AX_U32 nIndex = 0; + for (auto nDeviceID : vecDevID) { + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + break; + } + auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; + if (stDevice.pRPatrolChn == nullptr) continue; + + if (!stDevice.pThreadRPatrolUpdate->Start([this](AX_VOID* pArg) -> AX_VOID { UpdateRPatrolThread(pArg); }, &stDevice, "patrol")) { + LOG_M_E(TAG, "[%s][%d] Start update channel %d thread failed.", __func__, __LINE__, stDevice.stDevInfo.nChannelId); + } + + nIndex ++; + if (nIndex >= MAX_RPATROL_CNT) { + break; + } + } + + nIndex = 0; + for (auto nDeviceID : vecDevID) { + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + break; + } + auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; + if (stDevice.pRPatrolChn == nullptr) continue; + + stDevice.pThreadRPatrolUpdate->Stop(); + stDevice.pThreadRPatrolUpdate->Join(); + + if (!stDevice.bRes) { + bbRet = AX_FALSE; + } + + nIndex ++; + if (nIndex >= MAX_RPATROL_CNT) { + break; + } + } + + bRet = bbRet; + } while(0); + + LOG_MM_I(TAG, "---"); + + return bRet; +} + +AX_VOID CAXNVRPreviewCtrl::StartPreviewThread(AX_VOID* pArg) { + AX_NVR_DEVICE_T* pDevice = (AX_NVR_DEVICE_T*)pArg; + LOG_M_D(TAG, "[%s][%d] dev=%d +++ ", __func__, __LINE__, pDevice->stDevInfo.nChannelId); + do { + if (m_stAttr.pPrimary == nullptr) break; + const CVO *pVo = m_stAttr.pPrimary->GetVo(); + if (pVo == nullptr) break; + VO_ATTR_T attr = pVo->GetAttr(); + int nCount = attr.stChnInfo.nCount; + int nVoLayer = attr.voLayer; + int nVoChn = pDevice->stDevInfo.nChannelId%nCount; + + pDevice->bRes = AX_TRUE; + if (AX_NVR_CHN_IDX_TYPE::MAIN == pDevice->stDevInfo.enPreviewIndex) { + // init main rtsp and start within StartDisp + if (!this->startRtsp(pDevice->pPreviewChnMain, pDevice->stDevInfo.stChnMain, AX_TRUE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::MAIN, pDevice->stDevInfo.nChannelId))) { + pDevice->bRes = AX_FALSE; + break; + } + // init sub1 rtsp while record + if (!this->startRtsp(pDevice->pPreviewChnSub1, pDevice->stDevInfo.stChnSub1, AX_FALSE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::SUB1, pDevice->stDevInfo.nChannelId))) { + pDevice->bRes = AX_FALSE; + break; + } + // display + if (pDevice->stDevInfo.bPreviewDisplay) { + if (!pDevice->pPreviewChnMain->StartDisp(nVoLayer, nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect)) { + pDevice->bRes = AX_FALSE; + break; + } + } + } else if (AX_NVR_CHN_IDX_TYPE::SUB1 == pDevice->stDevInfo.enPreviewIndex) { + // init main rtsp while record + if (!this->startRtsp(pDevice->pPreviewChnMain, pDevice->stDevInfo.stChnMain, AX_FALSE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::MAIN, pDevice->stDevInfo.nChannelId))) { + pDevice->bRes = AX_FALSE; + break; + } + // init sub1 rtsp and start within StartDisp + if (!this->startRtsp(pDevice->pPreviewChnSub1, pDevice->stDevInfo.stChnSub1, AX_TRUE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::SUB1, pDevice->stDevInfo.nChannelId))) { + pDevice->bRes = AX_FALSE; + break; + } + // display + if (pDevice->stDevInfo.bPreviewDisplay) { + if (!pDevice->pPreviewChnSub1->StartDisp(nVoLayer, nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect)) { + pDevice->bRes = AX_FALSE; + break; + } + } + } + + } while (0); + + LOG_M_D(TAG, "[%s][%d] dev=%d --- ", __func__, __LINE__, pDevice->stDevInfo.nChannelId); +} + +AX_BOOL CAXNVRPreviewCtrl::StartPreview(const ax_nvr_channel_vector &vecChn) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + +#if 1 + do { + if (m_stAttr.pPrimary == nullptr) break; + const CVO *pVo = m_stAttr.pPrimary->GetVo(); + if (pVo == nullptr) break; + VO_ATTR_T attr = pVo->GetAttr(); + int nCount = attr.stChnInfo.nCount; + int nVoLayer = attr.voLayer; + + AX_BOOL bbRet = AX_TRUE; + + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDeviceID = get<1>(chn); + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + break; + } + auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; + if (stDevice.pPreviewChnMain == nullptr) continue; + if (stDevice.pPreviewChnSub1 == nullptr) continue; + + if (!stDevice.pThreadPreview->Start([this](AX_VOID* pArg) -> AX_VOID { StartPreviewThread(pArg); }, &stDevice, "preview")) { + LOG_M_E(TAG, "[%s][%d] Start stop channel %d thread failed.", __func__, __LINE__, stDevice.stDevInfo.nChannelId); + } + } + + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDeviceID = get<1>(chn); + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + break; + } + auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; + if (stDevice.pPreviewChnMain == nullptr) continue; + if (stDevice.pPreviewChnSub1 == nullptr) continue; + + stDevice.pThreadPreview->Stop(); + stDevice.pThreadPreview->Join(); + + if (!stDevice.bRes) { + bbRet = AX_FALSE; + } + } + + bRet = bbRet; + } while(0); + +#else + do { + if (m_stAttr.pPrimary == nullptr) break; + const CVO *pVo = m_stAttr.pPrimary->GetVo(); + if (pVo == nullptr) break; + VO_ATTR_T attr = pVo->GetAttr(); + int nCount = attr.stChnInfo.nCount; + int nVoLayer = attr.voLayer; + + AX_BOOL bbRet = AX_TRUE; + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDeviceID = get<1>(chn); + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + break; + } + auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; + if (stDevice.pPreviewChnMain == nullptr) continue; + if (stDevice.pPreviewChnSub1 == nullptr) continue; + + int nVoChn = stDevice.stDevInfo.nChannelId%nCount; + + if (AX_NVR_CHN_IDX_TYPE::MAIN == stDevice.stDevInfo.enPreviewIndex) { + // start main rtsp + if (!this->startRtsp(stDevice.pPreviewChnMain, stDevice.stDevInfo.stChnMain, AX_TRUE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::MAIN, stDevice.stDevInfo.nChannelId))) { + break; + } + // start sub1 rtsp while record + if (!this->startRtsp(stDevice.pPreviewChnSub1, stDevice.stDevInfo.stChnSub1, AX_FALSE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::SUB1, stDevice.stDevInfo.nChannelId))) { + break; + } + // display + if (!stDevice.pPreviewChnMain->StartDisp(nVoLayer, nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect)) { + bbRet = AX_FALSE; + break; + } + } else if (AX_NVR_CHN_IDX_TYPE::SUB1 == stDevice.stDevInfo.enPreviewIndex) { + // start main rtsp while record + if (!this->startRtsp(stDevice.pPreviewChnMain, stDevice.stDevInfo.stChnMain, AX_FALSE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::MAIN, stDevice.stDevInfo.nChannelId))) { + break; + } + // start sub1 rtsp + if (!this->startRtsp(stDevice.pPreviewChnSub1, stDevice.stDevInfo.stChnSub1, AX_TRUE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::SUB1, stDevice.stDevInfo.nChannelId))) { + break; + } + // display + if (!stDevice.pPreviewChnSub1->StartDisp(nVoLayer, nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect)) { + bbRet = AX_FALSE; + break; + } + } + + LOG_M_D(TAG, "[%s][%d] Start %d --- ", __func__, __LINE__, nDeviceID); + } + bRet = bbRet; + } while(0); +#endif + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPreviewCtrl::UpdatePreview(const ax_nvr_channel_vector &vecChn) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + do { + if (m_stAttr.pPrimary == nullptr) break; + const CVO *pVo = m_stAttr.pPrimary->GetVo(); + if (pVo == nullptr) break; + VO_ATTR_T attr = pVo->GetAttr(); + int nCount = attr.stChnInfo.nCount; + int nVoLayer = attr.voLayer; + + AX_BOOL bbRet = AX_TRUE; + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDeviceID = get<1>(chn); + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + continue; + } + auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; + if (stDevice.pPreviewChnMain == nullptr) continue; + if (stDevice.pPreviewChnSub1 == nullptr) continue; + + int nVoChn = stDevice.stDevInfo.nChannelId%nCount; + // main display update + if (AX_NVR_CHN_IDX_TYPE::MAIN == stDevice.stDevInfo.enPreviewIndex) { + if (!it->second.pPreviewChnMain->UpdateRect(attr.stChnInfo.arrChns[nVoChn].stRect)) { + LOG_MM_W(TAG, "[%d] Update rect(%d, %d) failed.", nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect.u32Width, attr.stChnInfo.arrChns[nVoChn].stRect.u32Height); + bbRet = AX_FALSE; + continue; + } + } + // sub1 display update + else if (AX_NVR_CHN_IDX_TYPE::SUB1 == stDevice.stDevInfo.enPreviewIndex) { + if (!it->second.pPreviewChnSub1->UpdateRect(attr.stChnInfo.arrChns[nVoChn].stRect)) { + LOG_MM_W(TAG, "[%d] Update rect(%d, %d) failed.", nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect.u32Width, attr.stChnInfo.arrChns[nVoChn].stRect.u32Height); + bbRet = AX_FALSE; + continue; + } + } + } + bRet = bbRet; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +AX_BOOL CAXNVRPreviewCtrl::SwitchPreviewMainSub(const ax_nvr_channel_vector &vecChn) { + AX_BOOL bRet = AX_FALSE; + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + + do { + if (m_stAttr.pPrimary == nullptr) break; + CVO *pVo = const_cast(m_stAttr.pPrimary->GetVo()); + if (pVo == nullptr) break; + VO_ATTR_T attr = pVo->GetAttr(); + int nCount = attr.stChnInfo.nCount; + int nVoLayer = attr.voLayer; + + AX_BOOL bbRet = AX_TRUE; + for (auto &chn: vecChn) { + AX_NVR_DEV_ID nDeviceID = get<1>(chn); + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) { + bbRet = AX_FALSE; + break; + } + auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; + if (stDevice.pPreviewChnMain == nullptr) continue; + if (stDevice.pPreviewChnSub1 == nullptr) continue; + + int nVoChn = stDevice.stDevInfo.nChannelId % nCount; + + pVo->UpdateChnCropRect(nVoChn, {0, 0, 0, 0}); + + // main to sub1 + if (AX_NVR_CHN_IDX_TYPE::MAIN == stDevice.stDevInfo.enPreviewIndex) { + // stop main + stDevice.pPreviewChnMain->StopDisp(); + stDevice.pPreviewChnMain->StopRtsp(); + // change channel stream type to sub1 + stDevice.stDevInfo.enPreviewIndex = AX_NVR_CHN_IDX_TYPE::SUB1; + // start sub1 rtsp + if (!this->startRtsp(stDevice.pPreviewChnSub1, stDevice.stDevInfo.stChnSub1, AX_TRUE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::SUB1, stDevice.stDevInfo.nChannelId))) { + break; + } + if (!stDevice.pPreviewChnSub1->StartDisp(nVoLayer, nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect)) { + bbRet = AX_FALSE; + break; + } + } + // sub1 to main + else if (AX_NVR_CHN_IDX_TYPE::SUB1 == stDevice.stDevInfo.enPreviewIndex) { + // stop sub1 + stDevice.pPreviewChnSub1->StopDisp(); + stDevice.pPreviewChnSub1->StopRtsp(); + // change channel stream type to main + stDevice.stDevInfo.enPreviewIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + // start main + if (!this->startRtsp(stDevice.pPreviewChnMain, stDevice.stDevInfo.stChnMain, AX_TRUE, GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE::PREVIEW, AX_NVR_CHN_IDX_TYPE::MAIN, stDevice.stDevInfo.nChannelId))) { + break; + } + if (!stDevice.pPreviewChnMain->StartDisp(nVoLayer, nVoChn, attr.stChnInfo.arrChns[nVoChn].stRect)) { + bbRet = AX_FALSE; + break; + } + } + } + bRet = bbRet; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + + +AX_VOID CAXNVRPreviewCtrl::StopPreviewThread(AX_VOID* pArg) { + AX_NVR_DEVICE_T* pDevice = (AX_NVR_DEVICE_T*)pArg; + LOG_M_D(TAG, "[%s][%d] dev=%d +++ ", __func__, __LINE__, pDevice->stDevInfo.nChannelId); + + pDevice->pPreviewChnMain->StopDisp(); + pDevice->pPreviewChnMain->StopRtsp(); + pDevice->pPreviewChnSub1->StopDisp(); + pDevice->pPreviewChnSub1->StopRtsp(); + + LOG_M_D(TAG, "[%s][%d] dev=%d --- ", __func__, __LINE__, pDevice->stDevInfo.nChannelId); +} + +// AX_VOID CAXNVRPreviewCtrl::StopPreview(const ax_nvr_channel_vector &vecChn) { +// +// LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); +// std::lock_guard lock(mutex_); +// +// do { +// AX_BOOL bbRet = AX_TRUE; +// for (auto &chn: vecChn) { +// AX_NVR_DEV_ID nDeviceID = get<1>(chn); +// auto it = m_mapDevice.find(nDeviceID); +// if (it == m_mapDevice.end()) { +// bbRet = AX_FALSE; +// break; +// } +// auto& stDevice = it->second; +// if (stDevice.stDevInfo.nChannelId == -1) continue; +// if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; +// if (stDevice.pPreviewChnMain == nullptr) continue; +// if (stDevice.pPreviewChnSub1 == nullptr) continue; +// +// if (!stDevice.pThreadPreview->Start([this](AX_VOID* pArg) -> AX_VOID { StopPreviewThread(pArg); }, &stDevice, "preview")) { +// LOG_M_E(TAG, "[%s][%d] Start stop channel %d thread failed.", __func__, __LINE__, stDevice.stDevInfo.nChannelId); +// } +// } +// +// for (auto &chn: vecChn) { +// AX_NVR_DEV_ID nDeviceID = get<1>(chn); +// auto it = m_mapDevice.find(nDeviceID); +// if (it == m_mapDevice.end()) { +// bbRet = AX_FALSE; +// break; +// } +// auto& stDevice = it->second; +// if (stDevice.stDevInfo.nChannelId == -1) continue; +// if (stDevice.stDevInfo.nChannelId != nDeviceID) continue; +// if (stDevice.pPreviewChnMain == nullptr) continue; +// if (stDevice.pPreviewChnSub1 == nullptr) continue; +// +// stDevice.pThreadPreview->Stop(); +// stDevice.pThreadPreview->Join(); +// } +// +// } while(0); +// +// LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); +// } + +AX_VOID CAXNVRPreviewCtrl::StopPreview(AX_VOID) { + LOG_M_D(TAG, "[%s][%d] +++ ", __func__, __LINE__); + std::lock_guard lock(mutex_); + +#if 1 + // CRegionTask::GetInstance()->Stop(); + for (auto& it : m_mapDevice) { + // const auto& nDevID = it.first; + auto &stDevice = it.second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.pPreviewChnMain == nullptr) continue; + if (stDevice.pPreviewChnSub1 == nullptr) continue; + + if (!stDevice.pThreadPreview->Start([this](AX_VOID* pArg) -> AX_VOID { StopPreviewThread(pArg); }, &stDevice, "preview")) { + LOG_M_E(TAG, "[%s][%d] Start stop channel %d thread failed.", __func__, __LINE__, stDevice.stDevInfo.nChannelId); + } + } + for (const auto& it : m_mapDevice) { + // const auto& nDevID = it.first; + const auto& stDevice = it.second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.pPreviewChnMain == nullptr) continue; + stDevice.pThreadPreview->Stop(); + stDevice.pThreadPreview->Join(); + } + +#else + for (auto& it : m_mapDevice) { + // const auto& nDevID = it.first; + auto &stDevice = it.second; + if (stDevice.stDevInfo.nChannelId == -1) continue; + if (stDevice.pPreviewChnMain == nullptr) continue; + if (stDevice.pPreviewChnSub1 == nullptr) continue; + + stDevice.pPreviewChnMain->StopDisp(); + stDevice.pPreviewChnMain->StopRtsp(); + stDevice.pPreviewChnSub1->StopDisp(); + stDevice.pPreviewChnSub1->StopRtsp(); + } +#endif + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); +} + +AX_BOOL CAXNVRPreviewCtrl::GetResolution(AX_NVR_DEV_ID nDeviceID, AX_U32 &nWidth, AX_U32 &nHeight) { + AX_BOOL bRet = AX_FALSE; + + std::lock_guard lock(mutex_); + + do { + auto it = m_mapDevice.find(nDeviceID); + if (it == m_mapDevice.end()) break; + const auto& stDevice = it->second; + if (stDevice.stDevInfo.nChannelId == -1) break; + if (stDevice.stDevInfo.nChannelId != nDeviceID) break; + + if (AX_NVR_CHN_IDX_TYPE::MAIN == stDevice.stDevInfo.enPreviewIndex) { + const AX_NVR_CHN_RES_T chnres = it->second.pPreviewChnMain->GetResolution(); + nWidth = chnres.w; + nHeight = chnres.h; + } + else if (AX_NVR_CHN_IDX_TYPE::SUB1 == stDevice.stDevInfo.enPreviewIndex) { + const AX_NVR_CHN_RES_T chnres = it->second.pPreviewChnSub1->GetResolution(); + nWidth = chnres.w; + nHeight = chnres.h; + } + + bRet = AX_TRUE; + } while(0); + + LOG_M_D(TAG, "[%s][%d] --- ", __func__, __LINE__); + return bRet; +} + +CAXNVRChannel *CAXNVRPreviewCtrl::createRPatrolChannel(AX_NVR_DEV_ID nDevID) { + AX_NVR_CHN_ATTR_T stAttr; + stAttr.nDevID = nDevID; + stAttr.enView = AX_NVR_CHN_VIEW_TYPE::PATROL; + stAttr.enStreamSrcType = AX_NVR_CHN_SRC_TYPE::RTSP; + + stAttr.enDetectSrcType = m_stAttr.enDetectSrc; + stAttr.pDetector = m_stAttr.pDetect; + stAttr.pDetectObs = m_stAttr.pDetectObs; + + stAttr.bRecord = AX_FALSE; + stAttr.pDisplay = m_stAttr.pSecond; + stAttr.nFrmBufNum = 3; + return CAXNVRChannel::CreateInstance(stAttr); +} + +CAXNVRChannel *CAXNVRPreviewCtrl::createPreviewChannel(AX_NVR_DEV_ID nDevID, AX_NVR_CHN_IDX_TYPE enIdx){ + AX_NVR_CHN_ATTR_T stAttr; + stAttr.nDevID = nDevID; + stAttr.enIndex = enIdx; + stAttr.enView = AX_NVR_CHN_VIEW_TYPE::PREVIEW; + stAttr.enStreamSrcType = AX_NVR_CHN_SRC_TYPE::RTSP; + + stAttr.enDetectSrcType = m_stAttr.enDetectSrc; + stAttr.pDetector = m_stAttr.pDetect; + stAttr.pDetectObs = m_stAttr.pDetectObs; + + stAttr.pRecord = m_stAttr.pRecord; + stAttr.pDisplay = m_stAttr.pPrimary; + return CAXNVRChannel::CreateInstance(stAttr); +} + +AX_BOOL CAXNVRPreviewCtrl::startRtsp(CAXNVRChannel *pChannel, const AX_NVR_DEV_CHN_INFO_T &stChannelInfo, AX_BOOL bForce, AX_S32 nCookie) { + if (!pChannel->StartRtsp(string(((const char*)stChannelInfo.szRtspUrl)), stChannelInfo.bRecord, bForce, nCookie)) { + return AX_FALSE; + } + return AX_TRUE; +} + +AX_S32 CAXNVRPreviewCtrl::GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE enView, AX_NVR_CHN_IDX_TYPE enChn, AX_NVR_DEV_ID devId, AX_BOOL bPip) { + /* + PREVIEW: + pip : 128 + main: 0, 2, 4, 6, ... 126 + sub1: 1, 3, 5, 7, ... 127 + PATROL: + 129, 130, ... 161 + */ + if (AX_NVR_CHN_VIEW_TYPE::PREVIEW == enView) { + if (bPip) { + return MAX_DEVICE_COUNT * 2; + } else { + if (AX_NVR_CHN_IDX_TYPE::MAIN == enChn) { + return devId * 2; + } else if (AX_NVR_CHN_IDX_TYPE::SUB1 == enChn) { + return devId * 2 + 1; + } else { + return -1; + } + } + } else if (AX_NVR_CHN_VIEW_TYPE::PATROL == enView) { + return MAX_DEVICE_COUNT * 2 + 1 + devId; + } else { + return -1; + } +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/frm/AXNVRPreviewCtrl.h b/app/demo/src/ppl/nvr/frm/AXNVRPreviewCtrl.h new file mode 100644 index 0000000..eb2324c --- /dev/null +++ b/app/demo/src/ppl/nvr/frm/AXNVRPreviewCtrl.h @@ -0,0 +1,111 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once +#include "AXNVRDisplayCtrl.h" +#include "AXNVRChannel.h" +#include "AXNVRFrameworkDefine.h" +#include "ax_base_type.h" +#include "detector.hpp" +#include "datastream_record.hpp" +#include "AXThread.hpp" + +#include +#include +#include +using namespace std; + + +typedef struct _AX_NVR_DEVICE_MGR_ATTR_T { + AX_U32 nMaxCount = MAX_DEVICE_COUNT; + CAXNVRDisplayCtrl *pPrimary = nullptr; + CAXNVRDisplayCtrl *pSecond = nullptr; + CDataStreamRecord *pRecord = nullptr; + CDetector *pDetect = nullptr; + CDetectObserver *pDetectObs = nullptr; + AX_NVR_DETECT_SRC_TYPE enDetectSrc = AX_NVR_DETECT_SRC_TYPE::NONE; +} AX_NVR_DEVICE_MGR_ATTR_T; + +typedef struct _AX_NVR_DEVICE_T { + CAXNVRChannel *pRPatrolChn; + CAXThread *pThreadRPatrol; + CAXThread *pThreadRPatrolUpdate; + CAXNVRChannel *pPreviewChnMain; + CAXNVRChannel *pPreviewChnSub1; + CAXThread *pThreadPreview; + AX_NVR_DEV_INFO_T stDevInfo; + AX_BOOL bRes = AX_TRUE; +} AX_NVR_DEVICE_T; + + +/** + * @brief for preivew and round-patrol + * + */ +class CAXNVRPreviewCtrl { +public: + CAXNVRPreviewCtrl(AX_VOID) = default; + virtual ~CAXNVRPreviewCtrl(AX_VOID) = default; + + // init-deinit + AX_VOID Init(const AX_NVR_DEVICE_MGR_ATTR_T &stAttr); + AX_VOID DeInit(); + + // device manager + AX_BOOL InsertDevice(const AX_NVR_DEV_INFO_T &stDevice); + AX_BOOL UpdateDevice(const AX_NVR_DEV_INFO_T &stDevice); + AX_BOOL DeleteDevice(const vector &vecDevID); + AX_NVR_DEV_INFO_T SelectDevice(AX_NVR_DEV_ID nDeviceID); + std::vector GetFreeDevices(); + std::vector GetDevices(); + + // preview action + AX_BOOL UpdatePreview(const ax_nvr_channel_vector &vecChn); + AX_BOOL StartPreview(const ax_nvr_channel_vector &vecChn); + AX_BOOL SwitchPreviewMainSub(const ax_nvr_channel_vector &vecChn); + // - stop all + AX_VOID StopPreview(AX_VOID); + // - single dev action + AX_BOOL ZoomAndMove(AX_NVR_DEV_ID nDeviceID, const AX_NVR_RECT_T &stCropRect, AX_BOOL bCrop); + + // round-patrol action + AX_BOOL StartRoundPatrol(const vector &vecDevID); + AX_BOOL StopRoundPatrol(const vector &vecDevID); + AX_BOOL UpdateRoundPatrolPreview(const vector &vecDevID); + + // pip action + AX_BOOL StartPip(AX_NVR_DEV_ID nDeviceID, AX_NVR_CHN_IDX_TYPE enIdx); + AX_BOOL StopPip(AX_VOID); + + // get attr-resolution + AX_BOOL GetResolution(AX_NVR_DEV_ID nDeviceID, AX_U32 &nWidth, AX_U32 &nHeight); + +private: + std::mutex mutex_; + + AX_BOOL m_bInit = AX_FALSE; + AX_NVR_DEVICE_MGR_ATTR_T m_stAttr; + CAXNVRChannel m_chnPip; + + std::map m_mapDevice; + +protected: + CAXNVRChannel *createRPatrolChannel(AX_NVR_DEV_ID nDevID); + CAXNVRChannel *createPreviewChannel(AX_NVR_DEV_ID nDevID, AX_NVR_CHN_IDX_TYPE enIdx); + AX_BOOL startRtsp(CAXNVRChannel *pChannel, const AX_NVR_DEV_CHN_INFO_T &stChannelInfo, AX_BOOL bForce, AX_S32 nCookie); + + AX_VOID StopPreviewThread(AX_VOID* pArg); + AX_VOID StartPreviewThread(AX_VOID* pArg); + + AX_VOID StopRPatrolThread(AX_VOID* pArg); + AX_VOID StartRPatrolThread(AX_VOID* pArg); + AX_VOID UpdateRPatrolThread(AX_VOID* pArg); + + AX_S32 GetRTSPCookie(AX_NVR_CHN_VIEW_TYPE enView, AX_NVR_CHN_IDX_TYPE enChn, AX_NVR_DEV_ID nChn, AX_BOOL bPip = AX_FALSE); +}; \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/res/1+7.png b/app/demo/src/ppl/nvr/gui/res/1+7.png new file mode 100644 index 0000000..e2f8b91 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/1+7.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/1x1.png b/app/demo/src/ppl/nvr/gui/res/1x1.png new file mode 100644 index 0000000..1818dae Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/1x1.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/2x2.png b/app/demo/src/ppl/nvr/gui/res/2x2.png new file mode 100644 index 0000000..99fee73 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/2x2.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/4x4.png b/app/demo/src/ppl/nvr/gui/res/4x4.png new file mode 100644 index 0000000..73e418d Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/4x4.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/8x8.png b/app/demo/src/ppl/nvr/gui/res/8x8.png new file mode 100644 index 0000000..a4c15cb Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/8x8.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/add.png b/app/demo/src/ppl/nvr/gui/res/add.png new file mode 100644 index 0000000..e7611ae Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/add.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/checked.png b/app/demo/src/ppl/nvr/gui/res/checked.png new file mode 100644 index 0000000..652db9f Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/checked.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/forward.png b/app/demo/src/ppl/nvr/gui/res/forward.png new file mode 100644 index 0000000..ddd4f67 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/forward.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/live.png b/app/demo/src/ppl/nvr/gui/res/live.png new file mode 100644 index 0000000..103c191 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/live.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/logo.png b/app/demo/src/ppl/nvr/gui/res/logo.png new file mode 100644 index 0000000..124c527 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/logo.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/next.png b/app/demo/src/ppl/nvr/gui/res/next.png new file mode 100644 index 0000000..82e213f Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/next.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/pip.png b/app/demo/src/ppl/nvr/gui/res/pip.png new file mode 100644 index 0000000..5e66058 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/pip.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/playback.png b/app/demo/src/ppl/nvr/gui/res/playback.png new file mode 100644 index 0000000..ee375f6 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/playback.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/playback_fast.png b/app/demo/src/ppl/nvr/gui/res/playback_fast.png new file mode 100644 index 0000000..535095d Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/playback_fast.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/playback_next.png b/app/demo/src/ppl/nvr/gui/res/playback_next.png new file mode 100644 index 0000000..3607ae4 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/playback_next.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/playback_pause.png b/app/demo/src/ppl/nvr/gui/res/playback_pause.png new file mode 100644 index 0000000..59db136 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/playback_pause.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/playback_prev.png b/app/demo/src/ppl/nvr/gui/res/playback_prev.png new file mode 100644 index 0000000..379302f Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/playback_prev.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/playback_rewind.png b/app/demo/src/ppl/nvr/gui/res/playback_rewind.png new file mode 100644 index 0000000..6b21085 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/playback_rewind.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/playback_slow.png b/app/demo/src/ppl/nvr/gui/res/playback_slow.png new file mode 100644 index 0000000..026bd01 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/playback_slow.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/playback_start.png b/app/demo/src/ppl/nvr/gui/res/playback_start.png new file mode 100644 index 0000000..cbd8f08 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/playback_start.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/playback_step_next.png b/app/demo/src/ppl/nvr/gui/res/playback_step_next.png new file mode 100644 index 0000000..422479c Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/playback_step_next.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/playback_step_prev.png b/app/demo/src/ppl/nvr/gui/res/playback_step_prev.png new file mode 100644 index 0000000..59b4c02 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/playback_step_prev.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/playback_stop.png b/app/demo/src/ppl/nvr/gui/res/playback_stop.png new file mode 100644 index 0000000..0643c63 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/playback_stop.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/poll.png b/app/demo/src/ppl/nvr/gui/res/poll.png new file mode 100644 index 0000000..55c282b Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/poll.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/previous.png b/app/demo/src/ppl/nvr/gui/res/previous.png new file mode 100644 index 0000000..4bb140a Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/previous.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/refresh.png b/app/demo/src/ppl/nvr/gui/res/refresh.png new file mode 100644 index 0000000..414d047 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/refresh.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/remove.png b/app/demo/src/ppl/nvr/gui/res/remove.png new file mode 100644 index 0000000..3a77e1a Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/remove.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/setting.png b/app/demo/src/ppl/nvr/gui/res/setting.png new file mode 100644 index 0000000..dce2b33 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/setting.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/shutdown.png b/app/demo/src/ppl/nvr/gui/res/shutdown.png new file mode 100644 index 0000000..9d9ca5f Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/shutdown.png differ diff --git a/app/demo/src/ppl/nvr/gui/res/src.qrc b/app/demo/src/ppl/nvr/gui/res/src.qrc new file mode 100644 index 0000000..9331133 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/res/src.qrc @@ -0,0 +1,33 @@ + + + pip.png + refresh.png + checked.png + unchecked.png + 1x1.png + playback_fast.png + playback_next.png + playback_pause.png + playback_prev.png + playback_rewind.png + playback_start.png + playback_slow.png + playback_step_next.png + playback_step_prev.png + playback_stop.png + 2x2.png + 1+7.png + 4x4.png + 8x8.png + forward.png + previous.png + poll.png + add.png + remove.png + live.png + playback.png + setting.png + shutdown.png + logo.png + + diff --git a/app/demo/src/ppl/nvr/gui/res/unchecked.png b/app/demo/src/ppl/nvr/gui/res/unchecked.png new file mode 100644 index 0000000..c07de17 Binary files /dev/null and b/app/demo/src/ppl/nvr/gui/res/unchecked.png differ diff --git a/app/demo/src/ppl/nvr/gui/ui/global/UiGlobalDef.h b/app/demo/src/ppl/nvr/gui/ui/global/UiGlobalDef.h new file mode 100644 index 0000000..b0f672a --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/global/UiGlobalDef.h @@ -0,0 +1,197 @@ +#pragma once + +enum class WINDOW_TYPE { + PREVIEW = 0, + PLAYBACK = 1, + SETTINGS = 2, + POLLING = 3 +}; + +typedef struct _NVR_RECT_T { + unsigned int x = 0; + unsigned int y = 0; + unsigned int w = 0; + unsigned int h = 0; +} NVR_RECT_T; + +enum class SPLIT_TYPE { + ONE = 1, // 1x1=1 + FOUR = 2, // 2x2=4 + EIGHT = 7, // 1+7=8 + SIXTEEN = 4, // 4x4=16 + THIRTYSIX = 6, // 6x6=32 + SIXTYFOUR = 8, // 8x8=64 + PIP = 98, + MAX = 99, + UNKNOW = -1 +}; + +enum class MAIN_ACTION_TYPE { + UNKNOWN = -1, + MAIN_SHOW = 0, + MAIN_SHOW_PREVIEW = 1, + MAIN_SHOW_PLAYBACK = 2, + MAIN_SHOW_SETTING = 3, +}; + +enum class PREVIEW_ACTION_TYPE { + UNKNOWN = -1, + PREVIEW_SHOW = 0, + PREVIEW_SPLIT = 1, + PREVIEW_PREVIOUS = 2, + PREVIEW_NEXT = 3, + PREVIEW_MAINSUB = 4, + PREVIEW_MIN_MAX = 5 +}; + +enum class PREV_NEXT_TYPE { + PREV = 0, // previous + NEXT = 1, + UNKNOW = -1 +}; + +enum class DISPLAY_TYPE { + SHOW = 0, + HIDE = 1, + UPDATE = 2 +}; + +enum class CONFIG_TYPE { + SYSTEM = 0, + DEVICE = 1, + RECORD = 2 +}; + +enum class PLAYBACK_ACTION_TYPE { + INIT = 0, + + PLAY = 1, + PAUSE = 2, + RESUME = 3, + STOP = 4, + REVERSE = 5, + PREV_FRAME = 6, + NEXT_FRAME = 7, + SLOW_SPEED = 8, + FAST_SPEED = 9, + PREV = 10, + NEXT = 11, + + UPDATE = 12, + MAINSUB1 = 13, +}; + +enum class PLAYBACK_ACTION_STATUS_TYPE { + INIT = 1, + PLAY = 1, + PAUSE = 2, + STOP = 3, + REWIND = 4, +}; + + +enum class AX_NVR_PREVIEW_RES_TYPE { + UNKNOWN = 0x00, + + PREVIEW_ERR = 0x10, + PREVIEW_OK = 0x11, + PREVIEW_UPDATE = 0x12, + + RPATROL_ERR = 0x20, + RPATROL_START = 0x21, + RPATROL_STOP = 0x22, + RPATROL_UPDATE = 0x23, +}; + +typedef struct _AX_NVR_ACTION_RES_T { + AX_NVR_PREVIEW_RES_TYPE enResult = AX_NVR_PREVIEW_RES_TYPE::UNKNOWN; + SPLIT_TYPE enSplitType = SPLIT_TYPE::UNKNOW; + MAIN_ACTION_TYPE enMainActionType = MAIN_ACTION_TYPE::UNKNOWN; + PREVIEW_ACTION_TYPE enPreviewActionType = PREVIEW_ACTION_TYPE::UNKNOWN; + PLAYBACK_ACTION_TYPE enPlaybackActionType = PLAYBACK_ACTION_TYPE::INIT; +} AX_NVR_ACTION_RES_T; + +#define ROUND_SPLIT_START "ROUND_SPLIT_I\n" +#define ROUND_SPLIT_ONE "ROUND_SPLIT_O\n" +#define ROUND_SPLIT_FOUR "ROUND_SPLIT_F\n" +#define ROUND_SPLIT_EIGHT "ROUND_SPLIT_E\n" +#define ROUND_SPLIT_SIXTEEN "ROUND_SPLIT_S\n" +#define ROUND_SPLIT_THIRTYSIX "ROUND_SPLIT_T\n" +#define ROUND_SPLIT_FINISH "ROUND_SPLIT_H\n" +#define ROUND_SPLIT_CLOSE "ROUND_SPLIT_C\n" + +#define ROUND_SPLIT_IP "127.0.0.1" +#define ROUND_SPLIT_PORT (12345) + +#define CSS_TABLE "\ +color:rgb(230,230,230); \ +gridline-color:rgb(95,95,95); \ +alternate-background-color:rgb(55,55,55); \ +background-color:rgb(44,44,44) \ +" + +#define CSS_SCROLLBAR "\ +QScrollBar:vertical{background-color:transparent;width:20px;height:255px;padding-top:20px;padding-bottom:20px;} \ +QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical{background-color:rgb(55,55,55);} \ +QScrollBar::handle:vertical{background:rgba(33,33,33,0.8);border:0px;} \ +" + +#define CSS_TABLE_HEAD "\ +QHeaderView::section {background-color:rgb(55,55,55);} \ +" + +#define CSS_PUSHBUTTON "\ +QPushButton:disabled{background-color: rgb(0, 0, 0);outline: none;} \ +QPushButton:enabled{background-color: rgb(44, 44, 44);outline: none;} \ +" + +#define CSS_WIDGET "\ +color: rgb(255, 255, 255); \ +background-color: rgb(44, 44, 44); \ +" + +#define CSS_WIDGET_1 "\ +color: rgb(255, 255, 255); \ +background-color: rgb(32, 32, 32); \ +" + +#define CSS_WIDGET_POPUP "\ +color: rgb(255, 255, 255); \ +background-color: rgb(68, 68, 68); \ +" + +#define CSS_TABWIDGET "\ +QTabBar::tab{ \ + background-color: #0B0E11; \ +} \ +QTabBar::tab:selected{ \ + background-color: rgba(108, 117, 125, 65); \ +} \ +QTabBar::tab:hover:!selected { \ + background-color: rgba(108, 117, 125, 45); \ +} \ +QTabWidget::pane { \ + border: 1px solid rgba(108, 117, 125, 65); \ +} \ +" + +#define CSS_CALENDAR " \ +#qt_calendar_calendarview { \ + background: rgb(44, 44, 44); \ + alternate-background-color: rgb(44, 44, 44); \ +} \ +#calendarWidget { \ + background: rgb(44, 44, 44); \ +} \ +QToolButton#qt_calendar_prevmonth { \ + background: rgb(44, 44, 44); \ +} \ +QToolButton#qt_calendar_nextmonth { \ + background: rgb(44, 44, 44); \ +} \ +QAbstractItemView { \ + color: white; \ + selection-color: white; \ + selection-background-color: rgb(180, 180, 180); \ +} \ +" diff --git a/app/demo/src/ppl/nvr/gui/ui/nvrmainwindow.cpp b/app/demo/src/ppl/nvr/gui/ui/nvrmainwindow.cpp new file mode 100644 index 0000000..3e45d59 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/nvrmainwindow.cpp @@ -0,0 +1,651 @@ +#include "nvrmainwindow.h" +#include "ui_nvrmainwindow.h" +#include +#include "AppLogApi.h" +#include "AXNVRFramework.h" +#include "ElapsedTimer.hpp" +#include "./utils/NoSignals.h" + +#define TAG "MAIN" + +#define MAX_TCP_CONNECT_TRY_COUNT (3) + +NVRMainWindow::NVRMainWindow(unsigned int type, unsigned int w, unsigned int h, QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::NVRMainWindow) + , m_pPreviewLeftToolbar(new PreviewLeftToolbar) + , m_pPreviewTopToolbar(new PreviewTopToolbar) + , m_pPreviewMain(new PreviewMain) + , m_pPlaybackLeftToolbar(new PlaybackLeftToolbar) + , m_pPlaybackTopToolbar(new PlaybackTopToolbar) + , m_pPlaybackMain(new PlaybackMain) + , m_pSettingsLeftToolbar(new SettingsLeftToolbar) + , m_pSettingsTopToolbar(new SettingsTopToolbar) + , m_pSettingsMain(new SettingsMain) +{ + const int START_PAGE = 0; + + ui->setupUi(this); + this->setGeometry(0, 0, w, h); + if (type == 1) { + m_pRoundPatrolMain = new(std::nothrow) RoundPatrolMain; + + ui->gridLayout->setRowStretch(0, 0); + ui->gridLayout->setColumnStretch(0, 0); + ui->widgetTop->hide(); + ui->widgetLogo->hide(); + ui->stackedWidgetLeftToolbar->hide(); + ui->verticalLayout_preview->addWidget(m_pRoundPatrolMain); + ui->stackedWidget->setCurrentIndex(0); + + QHostAddress addr(QString(ROUND_SPLIT_IP)); + m_pRoundPatrolMain->m_tcpServer->listen(addr, ROUND_SPLIT_PORT); + if (!m_pRoundPatrolMain->m_tcpServer->isListening()) { + printf("[%s]Failed to start server: %s\n", __func__, m_pRoundPatrolMain->m_tcpServer->errorString().toStdString().c_str()); + } + } else { + + ui->label_version->setText(NVR_VERSION_STR); + + ui->widgetTop->setStyleSheet(CSS_WIDGET); + ui->widgetLogo->setStyleSheet(CSS_WIDGET); + + ui->stackedWidgetLeftToolbar->setStyleSheet(CSS_WIDGET_1); + + ui->pushButtonPreview->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButtonPlayback->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButtonPolling->setStyleSheet(CSS_PUSHBUTTON); + + ui->pushButtonPreview->setCheckable(true); + ui->pushButtonPlayback->setCheckable(true); + + NoSignals::setChecked(ui->pushButtonPreview, true); + + // initialize ui + ui->verticalLayout_lt_preview->addWidget(m_pPreviewLeftToolbar); + ui->horizontalLayout_tt_preview->addWidget(m_pPreviewTopToolbar); + ui->verticalLayout_preview->addWidget(m_pPreviewMain); + m_pPreviewMain->m_pPreviewTopToolbar = m_pPreviewTopToolbar; + + ui->verticalLayout_lt_playback->addWidget(m_pPlaybackLeftToolbar); + ui->horizontalLayout_tt_playback->addWidget(m_pPlaybackTopToolbar); + ui->verticalLayout_playback->addWidget(m_pPlaybackMain); + + ui->verticalLayout_lt_settings->addWidget(m_pSettingsLeftToolbar); + ui->horizontalLayout_tt_settings->addWidget(m_pSettingsTopToolbar); + ui->verticalLayout_settings->addWidget(m_pSettingsMain); + + ui->stackedWidgetLeftToolbar->setCurrentIndex(START_PAGE); + ui->stackedWidgetTopToolbar->setCurrentIndex(START_PAGE); + ui->stackedWidget->setCurrentIndex(START_PAGE); + + AX_NVR_DISPVO_CONFIG_T tDipSecCfg = CNVRConfigParser::GetInstance()->GetSecondaryDispConfig(); + if (tDipSecCfg.nDevId != -1) { + m_pTimerPolling = new QTimer(this); + connect(m_pTimerPolling, SIGNAL(timeout()), this, SLOT(OnTimeOutPolling())); + + m_pTcpSocket = new QTcpSocket(this); + + connect(&m_watcherRPatrol, &QFutureWatcher::started, [=]{ + if (ui->pushButtonPolling) { + ui->pushButtonPolling->setEnabled(AX_FALSE); + } + }); + + connect(&m_watcherRPatrol, &QFutureWatcher::finished, [=]{ + + AX_NVR_ACTION_RES_T res = m_watcherRPatrol.resultAt(0); + AX_U32 nCurrentSplitCnt = CAXNVRFramework::GetInstance()->GetCurrentSplitCnt(); + + if (res.enResult != AX_NVR_PREVIEW_RES_TYPE::RPATROL_ERR) { + if (!m_pTcpSocket->isValid()) { + AX_U32 nTryCount = MAX_TCP_CONNECT_TRY_COUNT; + while (nTryCount-- > 0) { + m_pTcpSocket->connectToHost(ROUND_SPLIT_IP, ROUND_SPLIT_PORT); + if (m_pTcpSocket->waitForConnected()) { + LOG_M_W(TAG, "[%s][%d] connectToHost.", __func__, __LINE__); + break; + } else { + LOG_M_W(TAG, "[%s][%d] connectToHost failed", __func__, __LINE__); + CElapsedTimer::GetInstance()->mSleep(1000); + } + } + } + } + + if (res.enResult == AX_NVR_PREVIEW_RES_TYPE::RPATROL_UPDATE) { + + // LOG_M_W(TAG, "[%s][%d] **************** RPATROL_UPDATE.", __func__, __LINE__); + // if (!m_pTcpSocket->isValid()) { + // m_pTcpSocket->connectToHost(ROUND_SPLIT_IP, ROUND_SPLIT_PORT); + // if (m_pTcpSocket->waitForConnected(1000*300)) { + // LOG_M_W(TAG, "[%s][%d] connectToHost.", __func__, __LINE__); + // } else { + // LOG_M_W(TAG, "[%s][%d] connectToHost failed", __func__, __LINE__); + // } + // } + + if (m_pTcpSocket->isValid()) { + switch (nCurrentSplitCnt) + { + case 1: + m_pTcpSocket->write(ROUND_SPLIT_ONE); + break; + case 4: + m_pTcpSocket->write(ROUND_SPLIT_FOUR); + break; + case 8: + m_pTcpSocket->write(ROUND_SPLIT_EIGHT); + break; + case 16: + m_pTcpSocket->write(ROUND_SPLIT_SIXTEEN); + break; + case 36: + m_pTcpSocket->write(ROUND_SPLIT_THIRTYSIX); + break; + default: + break; + } + m_pTcpSocket->waitForBytesWritten(300); + } + else { + LOG_M_E(TAG, "[%s][%d] TcpSocket connect failed.", __func__, __LINE__); + } + } + else if (res.enResult == AX_NVR_PREVIEW_RES_TYPE::RPATROL_STOP) { + if (m_pTcpSocket->isValid()) { + // LOG_M_W(TAG, "[%s][%d] **************** RPATROL_STOP.", __func__, __LINE__); + m_pTcpSocket->write(ROUND_SPLIT_FINISH); + m_pTcpSocket->waitForBytesWritten(); + // m_pTcpSocket->disconnectFromHost(); + // m_pTcpSocket->close(); + } else { + LOG_M_E(TAG, "[%s][%d] TcpSocket connect failed.", __func__, __LINE__); + } + } + else if (res.enResult == AX_NVR_PREVIEW_RES_TYPE::RPATROL_START) { + if (m_pTcpSocket->isValid()) { + // LOG_M_W(TAG, "[%s][%d] **************** RPATROL_START.", __func__, __LINE__); + m_pTcpSocket->write(ROUND_SPLIT_START); + m_pTcpSocket->waitForBytesWritten(); + // m_pTcpSocket->disconnectFromHost(); + // m_pTcpSocket->close(); + } else { + LOG_M_E(TAG, "[%s][%d] TcpSocket connect failed.", __func__, __LINE__); + } + } + + if (ui->pushButtonPolling) { + ui->pushButtonPolling->setEnabled(AX_TRUE); + } + }); + + connect(ui->pushButtonPolling, &QPushButton::clicked, this, &NVRMainWindow::OnEnablePolling); + } + else { + ui->pushButtonPolling->setEnabled(false); + } + + // action + connect(ui->pushButtonPreview, &QPushButton::clicked, [&]() { + bool isChecked = ui->pushButtonPreview->isChecked(); + if (isChecked) { + NoSignals::setChecked(ui->pushButtonPlayback, false); + ui->stackedWidgetLeftToolbar->setCurrentIndex(0); + ui->stackedWidgetTopToolbar->setCurrentIndex(0); + ui->stackedWidget->setCurrentIndex(0); + } + else { + NoSignals::setChecked(ui->pushButtonPreview, true); + } + }); + + connect(ui->pushButtonPlayback, &QPushButton::clicked, [&]() { + bool isChecked = ui->pushButtonPlayback->isChecked(); + if (isChecked) { + NoSignals::setChecked(ui->pushButtonPreview, false); + ui->stackedWidgetLeftToolbar->setCurrentIndex(1); + ui->stackedWidgetTopToolbar->setCurrentIndex(1); + ui->stackedWidget->setCurrentIndex(1); + } + else { + NoSignals::setChecked(ui->pushButtonPlayback, true); + } + }); + + connect(ui->pushButtonSettings, &QPushButton::clicked, [&]() { + NoSignals::setChecked(ui->pushButtonPreview, false); + NoSignals::setChecked(ui->pushButtonPlayback, false); + ui->stackedWidgetLeftToolbar->setCurrentIndex(2); + ui->stackedWidgetTopToolbar->setCurrentIndex(2); + ui->stackedWidget->setCurrentIndex(2); + }); + + connect(ui->pushButtonPower, &QPushButton::clicked, [&]() { + this->close(); + }); + + // preview + connect(m_pPreviewTopToolbar, &PreviewTopToolbar::signal_change_split, m_pPreviewMain, &PreviewMain::OnChangeSplitVideo); + connect(m_pPreviewTopToolbar, &PreviewTopToolbar::signal_change_prev_next, m_pPreviewMain, &PreviewMain::OnChangePrevNext); + connect(m_pPreviewTopToolbar, &PreviewTopToolbar::signal_change_mainsub1, m_pPreviewMain, &PreviewMain::OnChangeMainSub1); + connect(m_pPreviewTopToolbar, &PreviewTopToolbar::signal_enable_pip, m_pPreviewMain, &PreviewMain::OnEnablePip); + + // playback + m_pPlaybackMain->SetCtrls(m_pPlaybackLeftToolbar); + connect(m_pPlaybackLeftToolbar, &PlaybackLeftToolbar::signal_change_split, m_pPlaybackMain, &PlaybackMain::OnChangeSplitVideo); + connect(m_pPlaybackLeftToolbar, &PlaybackLeftToolbar::signal_playback_action, m_pPlaybackMain, &PlaybackMain::OnDoPlaybackActionUpdate); + connect(m_pPlaybackTopToolbar, &PlaybackTopToolbar::signal_change_mainsub1, m_pPlaybackMain, &PlaybackMain::OnChangeMainSub1); + connect(m_pPlaybackMain, &PlaybackMain::signal_stop_status_changed, m_pPreviewMain, &PreviewMain::OnPlaybackStopStatusChanged); + + // settings + connect(m_pSettingsLeftToolbar, &SettingsLeftToolbar::signal_change_page, m_pSettingsMain, &SettingsMain::OnChangePage); + + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + m_tTestSuiteConfig = CTestSuiteConfigParser::GetInstance()->GetConfig(); + + connect(this, &NVRMainWindow::signal_exit, this, [&]() { + this->close(); + }); + + RegisterTSWidgets(); + StartTestSuiteThread(&m_tTestSuiteConfig); + } + } +} + +NVRMainWindow::~NVRMainWindow() { + delete ui; + + // preivew + DEL_PTR(m_pPreviewLeftToolbar); + DEL_PTR(m_pPreviewTopToolbar); + DEL_PTR(m_pPreviewMain); + + // playback + DEL_PTR(m_pPlaybackLeftToolbar); + DEL_PTR(m_pPlaybackTopToolbar); + DEL_PTR(m_pPlaybackMain); + + // settings + DEL_PTR(m_pSettingsLeftToolbar); + DEL_PTR(m_pSettingsTopToolbar); + DEL_PTR(m_pSettingsMain); + + // round + DEL_PTR(m_pRoundPatrolMain); + + DEL_PTR(m_pTimerPolling) + DEL_PTR(m_pTcpSocket) + + // Test suite modules + DEL_PTR(m_pTsMain) + DEL_PTR(m_pTsPreview) + DEL_PTR(m_pTsPlayback) +} + +void NVRMainWindow::__close(void) { + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + StopTestSuiteThread(&m_tTestSuiteConfig); + } + + if (m_pTimerPolling) { + if (!m_pTimerPolling->isActive()) { + m_pTimerPolling->stop(); + } + } + + if (m_bRoundPatrolMain && m_pTcpSocket) { + if (!m_pTcpSocket->isValid()) { + AX_U32 nTryCount = MAX_TCP_CONNECT_TRY_COUNT; + while (nTryCount-- > 0) { + m_pTcpSocket->connectToHost(ROUND_SPLIT_IP, ROUND_SPLIT_PORT); + if (m_pTcpSocket->waitForConnected()) { + LOG_M_W(TAG, "[%s][%d] connectToHost.", __func__, __LINE__); + break; + } else { + LOG_M_W(TAG, "[%s][%d] connectToHost failed", __func__, __LINE__); + CElapsedTimer::GetInstance()->mSleep(1000); + } + } + } + + if (m_pTcpSocket->isValid()) { + m_pTcpSocket->write(ROUND_SPLIT_CLOSE); + m_pTcpSocket->waitForBytesWritten(); + m_pTcpSocket->disconnectFromHost(); + } + + m_pTcpSocket->close(); + m_bRoundPatrolMain = AX_FALSE; + } + + if (m_threadTS.IsRunning()) { + m_threadTS.Stop(); + m_threadTS.Join(); + } +} + +void NVRMainWindow::paintEvent(QPaintEvent *event) { + Q_UNUSED(event) + + QPainter painter(this); + painter.setCompositionMode(QPainter::CompositionMode_Clear); + painter.fillRect(ui->stackedWidget->geometry(), Qt::SolidPattern); +} + +void NVRMainWindow::closeEvent(QCloseEvent *event) { + __close(); + return QWidget::closeEvent(event); +} + +void NVRMainWindow::OnEnablePolling(bool bPolling) { + do { + if (!m_watcherRPatrol.isFinished()) { + LOG_M_E(TAG, "[%s][%d] Still Active.", __func__, __LINE__); + break; + } + + if (!bPolling) { + if (m_pTimerPolling->isActive()) { + m_pTimerPolling->stop(); + } + } else { + const AX_NVR_RPATROL_CONFIG_T& info = CAXNVRFramework::GetInstance()->GetRoundPatrolInfo(); + m_pTimerPolling->start(info.uIntelval*1000); // sec + +// #if 1 +// #if 1 +// QProcess process; +// process.setProgram("/bin/sh"); +// process.setArguments(QStringList() << "./secondary.sh" << "-s" << "1" << "&"); +// process.startDetached(); +// process.close(); +// #else +// system("/bin/sh /opt/bin/NVRDemo/secondary.sh -s 1 &"); +// #endif +// #else +// QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); +// env.insert("LD_LIBRARY_PATH", "$LD_LIBRARY_PATH:/opt/lib/qt-5.15.7/lib"); +// env.insert("QT_QPA_PLATFORM_PLUGIN_PATH", "/opt/lib/qt-5.15.7/plugins"); +// env.insert("QT_QPA_FONTDIR", "/opt/lib/qt-5.15.7/fonts"); +// m_process.setProcessEnvironment(env); +// m_process.start("/opt/bin/NVRDemo/nvrdemo", QStringList() << "-s" << "1" << "&"); +// #endif +// const AX_NVR_RPATROL_CONFIG_T& info = CAXNVRFramework::GetInstance()->GetRoundPatrolInfo(); +// m_pTimerPolling->start(info.uIntelval*1000); // sec + } + + QFutureInterface interface; + interface.reportStarted(); + m_watcherRPatrol.setFuture(interface.future()); + + AX_NVR_ACTION_RES_T res; + std::thread thread([this, interface, bPolling, res]() mutable { + + if (bPolling) { + if (!m_bRoundPatrolMain) { + m_bRoundPatrolMain = AX_TRUE; + if (!CAXNVRFramework::GetInstance()->InitSecondaryDispCtrl()) { + LOG_M_E(TAG, "[%s][%d] Init secondary screen failed.", __func__, __LINE__); + } + QProcess process; + process.setProgram("/bin/sh"); + process.setArguments(QStringList() << "./secondary.sh" << "-s" << "1" << "&"); + process.startDetached(); + process.close(); + sleep(1); + } + + CAXNVRFramework::GetInstance()->StartRoundPatrol(); + res.enResult = AX_NVR_PREVIEW_RES_TYPE::RPATROL_START; + } + else { + CAXNVRFramework::GetInstance()->StopRoundPatrol(); + res.enResult = AX_NVR_PREVIEW_RES_TYPE::RPATROL_STOP; + } + + interface.reportResult(res, 0); + interface.reportFinished(); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + + } while(0); +} + +void NVRMainWindow::OnTimeOutPolling() { + + LOG_M_I(TAG, "[%s][%d] +++", __func__, __LINE__); + + do { + if (!m_watcherRPatrol.isFinished()) { + LOG_M_I(TAG, "[%s][%d] Still Active.", __func__, __LINE__); + break; + } + + QFutureInterface interface; + interface.reportStarted(); + m_watcherRPatrol.setFuture(interface.future()); + + AX_NVR_ACTION_RES_T res; + std::thread thread([this, interface, res]() mutable { + + CAXNVRFramework::GetInstance()->UpdateRoundPatrol(); + + res.enResult = AX_NVR_PREVIEW_RES_TYPE::RPATROL_UPDATE; + interface.reportResult(res, 0); + interface.reportFinished(); + + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + + } while(0); + + LOG_M_I(TAG, "[%s][%d] ---", __func__, __LINE__); +} + +void NVRMainWindow::StartTestSuiteThread(AX_NVR_TS_CONFIG_PTR pTsCfg) { + if (!m_threadTS.Start([this](AX_VOID* pArg) -> AX_VOID { TestSuiteThread(pArg); }, pTsCfg, "TestSuite")) { + LOG_MM_E(TAG, "Create test suite thread fail."); + } +} + +void NVRMainWindow::StopTestSuiteThread(AX_NVR_TS_CONFIG_PTR pTsCfg) { + if (m_threadTS.IsRunning()) { + if (pTsCfg) { + for (auto &m : pTsCfg->vecModuleInfo) { + if (m.bEnable) { + CTestSuiteBase* pTsInstance = FindTsInstance(m.strName); + if (nullptr == pTsInstance) { + LOG_M_W(TAG, "Configured test suite module<%s> is not implemented, ignore this case.", m.strName.c_str()); + continue; + } + + pTsInstance->Stop(); + } + } + } + + m_threadTS.Stop(); + m_threadTS.Join(); + } +} + +void NVRMainWindow::OnOperateWidget(const TS_OPERATION_INFO_T& tOprInfo) { + if (tOprInfo.target) { + switch (tOprInfo.type) { + case TS_OPERATION_TYPE::TS_OPR_BTN_CLICK: { + if (((QPushButton*)tOprInfo.target)->isEnabled()) { + ((QPushButton*)tOprInfo.target)->setChecked(tOprInfo.args.bBtnChecked); + ((QPushButton*)tOprInfo.target)->clicked(); + } else { + LOG_M_W(TAG, "Button %s is disabled, operation ignored.", tOprInfo.target->objectName().toStdString().c_str()); + } + break; + } + case TS_OPERATION_TYPE::TS_OPR_TOGGLE_BTN_CLICK: { + if (((QPushButton*)tOprInfo.target)->isEnabled()) { + bool bCurrState = ((QPushButton*)tOprInfo.target)->isChecked(); + ((QPushButton*)tOprInfo.target)->setChecked(!bCurrState); + ((QPushButton*)tOprInfo.target)->clicked(!bCurrState); + } else { + LOG_M_W(TAG, "Toggle button %s is disabled, operation ignored.", tOprInfo.target->objectName().toStdString().c_str()); + } + break; + } + case TS_OPERATION_TYPE::TS_OPR_TAB_SELECT: { + ((QTabWidget*)tOprInfo.target)->setCurrentIndex(tOprInfo.args.nTabSelIndex); + break; + } + case TS_OPERATION_TYPE::TS_OPR_CALENDAR_SELECT: { + ((QCalendarWidget*)tOprInfo.target)->setSelectedDate(tOprInfo.args.calendarSelDate); + break; + } + default: break; + } + } +} + +AX_VOID NVRMainWindow::TestSuiteThread(AX_VOID* pArg) { + if (nullptr == pArg) { + return; + } + + AX_NVR_TS_CONFIG_PTR pConfig = (AX_NVR_TS_CONFIG_PTR)pArg; + if (pConfig->bExportResultToFile) { + CDiskHelper::CreateDir(pConfig->strResultDir.c_str(), AX_FALSE); + } + + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + + do { + static AX_S32 nRound = 0; + LOG_MM_C(TAG, "Start %d round of test suite.", ++nRound); + for (auto &m : pConfig->vecModuleInfo) { + if (m.bEnable) { + if (!SetTsModuleConfig(m.strName, pConfig)) { + LOG_M_E(TAG, "Can not find configured case for module: %s", m.strName.c_str()); + continue; + } + + CTestSuiteBase* pTsInstance = FindTsInstance(m.strName); + if (nullptr == pTsInstance) { + LOG_M_W(TAG, "Configured test suite module<%s> is not implemented, ignore this case.", m.strName.c_str()); + continue; + } + + AX_CHAR szResultPath[256] = {0}; + if (pConfig->bExportResultToFile) { + sprintf(szResultPath, "%s/result_%s.txt", pConfig->strResultDir.c_str(), m.strName.c_str()); + pTsInstance->Start(); + } else { + if (m.nRoundCount == 0 || nRound <= m.nRoundCount) { + if (m.bThread) { + std::thread thread([pTsInstance]() mutable { + pTsInstance->Start(); + }); + thread.detach(); + } else { + pTsInstance->Start(); + } + } + } + } + + if (!m_threadTS.IsRunning()) { + break; + } + } + } while (m_threadTS.IsRunning() && pConfig->bRepeat && AX_NVR_TS_RUN_MODE::STABILITY == tTsCfg.eMode && pConfig->vecModuleInfo.size() > 0); + + if (pConfig->bCloseOnFinish) { + emit signal_exit(); + } +} + +AX_BOOL NVRMainWindow::SetTsModuleConfig(const string& strModuleName, const AX_NVR_TS_CONFIG_PTR pModuleConfig) { + if (nullptr == pModuleConfig) { + return AX_FALSE; + } + + for (auto& m: pModuleConfig->vecModuleInfo) { + if (m.strName == strModuleName) { + if (strModuleName == "main") { + m_pTsMain->SetModuleConfig(m); + } else if (strModuleName == "preview") { + m_pTsPreview->SetModuleConfig(m); + } else if (strModuleName == "playback") { + m_pTsPlayback->SetModuleConfig(m);; + } + + return AX_TRUE; + } + } + + return AX_FALSE; +} + +CTestSuiteBase* NVRMainWindow::FindTsInstance(const string& strModuleName) { + if (strModuleName == "main") { + return m_pTsMain; + } else if (strModuleName == "preview") { + return m_pTsPreview; + } else if (strModuleName == "playback") { + return m_pTsPlayback; + } + + return nullptr; +} + +void NVRMainWindow::RegisterTSWidgets() { + qRegisterMetaType("AX_NVR_ACTION_RES_T"); + qRegisterMetaType("TS_OPERATION_INFO_T"); + + m_pTsMain = new CTestMain(); + if (nullptr != m_pTsMain) { + m_pTsMain->RegisterWidget("BtnEntry", ui->pushButtonPreview); + + m_pTsMain->RegisterWidget("BtnPreview", ui->pushButtonPreview); + m_pTsMain->RegisterWidget("BtnPlayback", ui->pushButtonPlayback); + m_pTsMain->RegisterWidget("BtnSetting", ui->pushButtonSettings); + m_pTsMain->RegisterWidget("BtnPolling", ui->pushButtonPolling); + m_pTsMain->RegisterWidget("LabelVersion", ui->label_version); + m_pTsMain->RegisterWidget("Label", ui->label); + + connect(this, &NVRMainWindow::signal_result_feedback, m_pTsMain, &CTestMain::OnRecvResult); + connect(m_pTsMain, &CTestMain::signal_ts_widget_opr, this, &NVRMainWindow::OnOperateWidget); + } + + m_pTsPreview = new CTestPreview(); + if (nullptr != m_pTsPreview) { + m_pTsPreview->RegisterWidget("BtnEntry", ui->pushButtonPreview); + + m_pTsPreview->RegisterWidget("PreviewLeftToolbar", m_pPreviewLeftToolbar); + m_pTsPreview->RegisterWidget("PreviewTopToolbar", m_pPreviewTopToolbar); + m_pTsPreview->RegisterWidget("PreviewMain", m_pPreviewMain); + + connect(m_pPreviewMain, &PreviewMain::signal_result_feedback, m_pTsPreview, &CTestPreview::OnRecvResult); + connect(m_pTsPreview, &CTestPreview::signal_ts_widget_opr, this, &NVRMainWindow::OnOperateWidget); + } + + m_pTsPlayback = new CTestPlayback(); + if (nullptr != m_pTsPlayback) { + m_pTsPlayback->RegisterWidget("BtnEntry", ui->pushButtonPlayback); + + m_pTsPlayback->RegisterWidget("PlayLeftToolbar", m_pPlaybackLeftToolbar); + m_pTsPlayback->RegisterWidget("PlayTopToolbar", m_pPlaybackTopToolbar); + m_pTsPlayback->RegisterWidget("PlayMain", m_pPlaybackMain); + m_pTsPlayback->RegisterWidget("PlayCtrl", m_pPlaybackMain->findChild("widget_playbackctrl")); + + connect(m_pPlaybackMain, &PlaybackMain::signal_result_feedback, m_pTsPlayback, &CTestPlayback::OnRecvResult); + connect(m_pTsPlayback, &CTestPlayback::tableCellClicked, m_pPlaybackLeftToolbar, &PlaybackLeftToolbar::onTableCellClicked); + connect(m_pTsPlayback, &CTestPlayback::timeLocate, m_pPlaybackMain, &PlaybackMain::OnLocateTime); + connect(m_pTsPlayback, &CTestPlayback::signal_ts_widget_opr, this, &NVRMainWindow::OnOperateWidget); + } +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/nvrmainwindow.h b/app/demo/src/ppl/nvr/gui/ui/nvrmainwindow.h new file mode 100644 index 0000000..3fdc938 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/nvrmainwindow.h @@ -0,0 +1,108 @@ +#ifndef NVRMAINWINDOW_H +#define NVRMAINWINDOW_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include "preview/PreviewLeftToolbar.h" +#include "preview/PreviewTopToolbar.h" +#include "preview/PreviewMain.h" + +#include "playback/PlaybackLeftToolbar.h" +#include "playback/PlaybackTopToolbar.h" +#include "playback/PlaybackMain.h" + +#include "settings/SettingsLeftToolbar.h" +#include "settings/SettingsTopToolbar.h" +#include "settings/SettingsMain.h" + +#include "round/RoundPatrolMain.h" + +#include "TestSuiteConfigParser.h" +#include "test_suite/ts_main.hpp" +#include "test_suite/ts_preview.hpp" +#include "test_suite/ts_playback.hpp" + + +QT_BEGIN_NAMESPACE +namespace Ui { class NVRMainWindow; } +QT_END_NAMESPACE + +class NVRMainWindow : public QMainWindow +{ + Q_OBJECT + +public: + NVRMainWindow(unsigned int type, unsigned int w = 0, unsigned int h = 0, QWidget *parent = nullptr); + ~NVRMainWindow(); + +protected: + virtual void paintEvent(QPaintEvent *event) override; + virtual void closeEvent(QCloseEvent *event) override; + +private: + AX_VOID RegisterTSWidgets(); + AX_VOID TestSuiteThread(AX_VOID* pArg); + CTestSuiteBase* FindTsInstance(const string& strModuleName); + AX_BOOL SetTsModuleConfig(const string& strModuleName, const AX_NVR_TS_CONFIG_PTR pModuleConfig); + +signals: + void signal_result_feedback(const AX_NVR_ACTION_RES_T& enActionType); + void signal_exit(); + +private: + Ui::NVRMainWindow *ui; + CAXThread m_threadTS; + +public slots: + void OnEnablePolling(bool bPolling); + +private slots: + void OnTimeOutPolling(); + // void OnFinished(); + // void OnUpdate(int value); + void StartTestSuiteThread(AX_NVR_TS_CONFIG_PTR pTsCfg); + void StopTestSuiteThread(AX_NVR_TS_CONFIG_PTR pTsCfg); + void OnOperateWidget(const TS_OPERATION_INFO_T& tOprInfo); + +public: + // preivew + PreviewLeftToolbar *m_pPreviewLeftToolbar = nullptr; + PreviewTopToolbar *m_pPreviewTopToolbar = nullptr; + PreviewMain *m_pPreviewMain = nullptr; + + // playback + PlaybackLeftToolbar *m_pPlaybackLeftToolbar = nullptr; + PlaybackTopToolbar *m_pPlaybackTopToolbar = nullptr; + PlaybackMain *m_pPlaybackMain = nullptr; + + // settings + SettingsLeftToolbar *m_pSettingsLeftToolbar = nullptr; + SettingsTopToolbar *m_pSettingsTopToolbar = nullptr; + SettingsMain *m_pSettingsMain = nullptr; + + // round + RoundPatrolMain *m_pRoundPatrolMain = nullptr; + AX_BOOL m_bRoundPatrolMain = AX_FALSE; + + // test suite for main window + CTestMain *m_pTsMain = nullptr; + CTestPreview *m_pTsPreview = nullptr; + CTestPlayback *m_pTsPlayback = nullptr; + +private: + // QProcess m_process; + QFutureWatcher m_watcherRPatrol; + QTimer *m_pTimerPolling = nullptr; + QTcpSocket *m_pTcpSocket = nullptr; + + AX_NVR_TS_CONFIG_T m_tTestSuiteConfig; + + void __close(void); +}; +#endif // NVRMAINWINDOW_H diff --git a/app/demo/src/ppl/nvr/gui/ui/nvrmainwindow.ui b/app/demo/src/ppl/nvr/gui/ui/nvrmainwindow.ui new file mode 100644 index 0000000..d32402a --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/nvrmainwindow.ui @@ -0,0 +1,497 @@ + + + NVRMainWindow + + + + 0 + 0 + 928 + 594 + + + + NVRMainWindow + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + 4 + + + 4 + + + 4 + + + 4 + + + + + 1 + + + + + + + + 0 + + + + + 2 + + + 2 + + + 2 + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + Qt::NoFocus + + + + + + + :/img/poll.png:/img/poll.png + + + + 32 + 32 + + + + true + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + + + + + + + + :/img/live.png:/img/live.png + + + + 36 + 36 + + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + + + + + + + + :/img/playback.png:/img/playback.png + + + + 30 + 30 + + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + + + + + + + + :/img/setting.png:/img/setting.png + + + + 34 + 34 + + + + + + + + + + 1 + + + 60 + + + + + + 48 + 48 + + + + + 48 + 48 + + + + Power + + + + + + + :/img/shutdown.png:/img/shutdown.png + + + + 32 + 32 + + + + + + + + + + + + + + + + + + 2 + + + + + 4 + + + 4 + + + 4 + + + 4 + + + + + + + + + + 4 + + + 4 + + + 4 + + + 4 + + + + + + + + + + 4 + + + 4 + + + 4 + + + 4 + + + + + + + + + + + + 0 + + + + + 4 + + + 4 + + + 4 + + + 4 + + + + + 0 + + + + + + + + + 4 + + + 4 + + + 4 + + + 4 + + + + + + + + + + 4 + + + 4 + + + 4 + + + 4 + + + + + + + + + + + + + 4 + + + 4 + + + 4 + + + 4 + + + 4 + + + + + + Consolas + 18 + 75 + true + + + + + + + NVR Demo + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackCtrl.cpp b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackCtrl.cpp new file mode 100644 index 0000000..7bb541a --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackCtrl.cpp @@ -0,0 +1,72 @@ +#include "PlaybackCtrl.h" +#include "ui_PlaybackCtrl.h" +#include "AppLogApi.h" +#include "AXNVRFramework.h" +#include +#include +#include + +#define TAG "PLAYBACK" + + +PlaybackCtrl::PlaybackCtrl(QWidget *parent) + : QWidget(parent) + , ui(new Ui::PlaybackCtrl) +{ + + qRegisterMetaType("PLAYBACK_ACTION_TYPE"); + + ui->setupUi(this); + this->setStyleSheet(CSS_PUSHBUTTON); + + connect(ui->pushButtonPlay, SIGNAL(clicked()), this, SLOT(OnCtrlBtnClicked())); + connect(ui->pushButtonPause, SIGNAL(clicked()), this, SLOT(OnCtrlBtnClicked())); + connect(ui->pushButtonStop, SIGNAL(clicked()), this, SLOT(OnCtrlBtnClicked())); + connect(ui->pushButtonReverse, SIGNAL(clicked()), this, SLOT(OnCtrlBtnClicked())); + + connect(ui->pushButtonPreviousFrame, SIGNAL(clicked()), this, SLOT(OnCtrlBtnClicked())); + connect(ui->pushButtonNextFrame, SIGNAL(clicked()), this, SLOT(OnCtrlBtnClicked())); + + connect(ui->pushButtonSlow, SIGNAL(clicked()), this, SLOT(OnCtrlBtnClicked())); + connect(ui->pushButtonFast, SIGNAL(clicked()), this, SLOT(OnCtrlBtnClicked())); + + connect(ui->pushButtonPrevious, SIGNAL(clicked()), this, SLOT(OnCtrlBtnClicked())); + connect(ui->pushButtonNext, SIGNAL(clicked()), this, SLOT(OnCtrlBtnClicked())); +} + +PlaybackCtrl::~PlaybackCtrl(void) +{ + delete ui; +} + +void PlaybackCtrl::OnCtrlBtnClicked(void) { + QPushButton *pBtn = (QPushButton*)sender(); + + PLAYBACK_ACTION_TYPE enActionType = PLAYBACK_ACTION_TYPE::INIT; + + if (pBtn == ui->pushButtonPlay) enActionType = PLAYBACK_ACTION_TYPE::PLAY; + if (pBtn == ui->pushButtonPause) enActionType = PLAYBACK_ACTION_TYPE::PAUSE; + if (pBtn == ui->pushButtonStop) enActionType = PLAYBACK_ACTION_TYPE::STOP; + if (pBtn == ui->pushButtonReverse) enActionType = PLAYBACK_ACTION_TYPE::REVERSE; + + if (pBtn == ui->pushButtonPreviousFrame)enActionType = PLAYBACK_ACTION_TYPE::PREV_FRAME; + if (pBtn == ui->pushButtonNextFrame) enActionType = PLAYBACK_ACTION_TYPE::NEXT_FRAME; + + if (pBtn == ui->pushButtonSlow) enActionType = PLAYBACK_ACTION_TYPE::SLOW_SPEED; + if (pBtn == ui->pushButtonFast) enActionType = PLAYBACK_ACTION_TYPE::FAST_SPEED; + + if (pBtn == ui->pushButtonPrevious) enActionType = PLAYBACK_ACTION_TYPE::PREV; + if (pBtn == ui->pushButtonNext) enActionType = PLAYBACK_ACTION_TYPE::NEXT; + + emit signal_playback_action(enActionType); +} + +void PlaybackCtrl::EnableSingleLabelCtrl(bool bEnable) { + + ui->pushButtonPause->setEnabled(bEnable); + ui->pushButtonReverse->setEnabled(bEnable); + ui->pushButtonPreviousFrame->setEnabled(bEnable); + ui->pushButtonNextFrame->setEnabled(bEnable); + ui->pushButtonSlow->setEnabled(bEnable); + ui->pushButtonFast->setEnabled(bEnable); +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackCtrl.h b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackCtrl.h new file mode 100644 index 0000000..e046b9e --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackCtrl.h @@ -0,0 +1,38 @@ +#ifndef PLAYBACKCTRL_H +#define PLAYBACKCTRL_H + +#include +#include +#include +#include +#include + +#include "global/UiGlobalDef.h" +#include "PlaybackLeftToolbar.h" +#include "PlaybackTimeLine.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class PlaybackCtrl; } +QT_END_NAMESPACE + +class PlaybackCtrl : public QWidget +{ + Q_OBJECT + +public: + PlaybackCtrl(QWidget *parent = nullptr); + ~PlaybackCtrl(void); + +private: + Ui::PlaybackCtrl *ui; + +private slots: + void OnCtrlBtnClicked(void); + +signals: + void signal_playback_action(PLAYBACK_ACTION_TYPE enActionType); + +public: + void EnableSingleLabelCtrl(bool bEnable); +}; +#endif // PLAYBACKCTRL_H \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackCtrl.ui b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackCtrl.ui new file mode 100644 index 0000000..bea8ee3 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackCtrl.ui @@ -0,0 +1,261 @@ + + + PlaybackCtrl + + + + 0 + 0 + 869 + 38 + + + + Form + + + + 12 + + + 24 + + + 4 + + + 0 + + + 0 + + + + + 2 + + + + + + + + + :/img/playback_start.png:/img/playback_start.png + + + + 24 + 24 + + + + + + + + + + + + :/img/playback_pause.png:/img/playback_pause.png + + + + 24 + 24 + + + + + + + + + + + + :/img/playback_stop.png:/img/playback_stop.png + + + + 24 + 24 + + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + + + + + :/img/playback_rewind.png:/img/playback_rewind.png + + + + 24 + 24 + + + + + + + + + + 2 + + + + + + + + + :/img/playback_step_prev.png:/img/playback_step_prev.png + + + + 24 + 24 + + + + + + + + + + + + :/img/playback_step_next.png:/img/playback_step_next.png + + + + 24 + 24 + + + + + + + + + + 2 + + + + + + + + + :/img/playback_slow.png:/img/playback_slow.png + + + + 24 + 24 + + + + + + + + + + + + :/img/playback_fast.png:/img/playback_fast.png + + + + 24 + 24 + + + + + + + + + + 2 + + + + + + + + + :/img/playback_prev.png:/img/playback_prev.png + + + + 24 + 24 + + + + + + + + + + + + :/img/playback_next.png:/img/playback_next.png + + + + 24 + 24 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackLeftToolbar.cpp b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackLeftToolbar.cpp new file mode 100644 index 0000000..b10f985 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackLeftToolbar.cpp @@ -0,0 +1,270 @@ +#include "PlaybackLeftToolbar.h" +#include "ui_PlaybackLeftToolbar.h" +#include + +#include "global/UiGlobalDef.h" +#include "AXNVRFramework.h" + + +#include + + +PlaybackLeftToolbar::PlaybackLeftToolbar(QWidget *parent) + : QWidget(parent) + , ui(new Ui::PlaybackLeftToolbar) +{ + + m_iconChecked = QIcon(":/img/checked.png"); + m_iconUnchecked = QIcon(":/img/unchecked.png"); + + auto __INIT_TABLE_FUNC__ = [this](auto table) { + table->setAlternatingRowColors(true); + table->setStyleSheet(CSS_TABLE); + table->horizontalHeader()->setStyleSheet(CSS_TABLE_HEAD); + table->setSelectionBehavior(QTableWidget::SelectRows); + table->setSelectionMode(QAbstractItemView::SingleSelection); + table->setRowCount(1); + table->setColumnCount(2); + table->setColumnWidth(0, 30); + table->setColumnWidth(1, 100); + + }; + + ui->setupUi(this); + // this->dumpStructure(ui->calendarWidget, 0); + + this->setStyleSheet(CSS_WIDGET); + ui->tabWidget->setStyleSheet(CSS_TABWIDGET); + ui->calendarWidget->setStyleSheet(CSS_CALENDAR); + ui->tableWidget_1x1->verticalScrollBar()->setStyleSheet(CSS_SCROLLBAR); + ui->tableWidget_2x2->verticalScrollBar()->setStyleSheet(CSS_SCROLLBAR); + ui->tableWidget_1_7->verticalScrollBar()->setStyleSheet(CSS_SCROLLBAR); + ui->tableWidget_4x4->verticalScrollBar()->setStyleSheet(CSS_SCROLLBAR); + + QPixmap pic1(":/img/1x1.png"); + QPixmap pic2(":/img/2x2.png"); + QPixmap pic3(":/img/1+7.png"); + QPixmap pic4(":/img/4x4.png"); + + ui->tabWidget->setTabIcon(0, pic1); + ui->tabWidget->setTabIcon(1, pic2); + ui->tabWidget->setTabIcon(2, pic3); + ui->tabWidget->setTabIcon(3, pic4); + + connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(onTabCurrentChanged(int))); + + connect(ui->tableWidget_1x1, &QTableWidget::cellClicked, this, &PlaybackLeftToolbar::onTableCellClicked); + __INIT_TABLE_FUNC__(ui->tableWidget_1x1); + + connect(ui->tableWidget_2x2, &QTableWidget::cellClicked, this, &PlaybackLeftToolbar::onTableCellClicked); + __INIT_TABLE_FUNC__(ui->tableWidget_2x2); + + connect(ui->tableWidget_1_7, &QTableWidget::cellClicked, this, &PlaybackLeftToolbar::onTableCellClicked); + __INIT_TABLE_FUNC__(ui->tableWidget_1_7); + + connect(ui->tableWidget_4x4, &QTableWidget::cellClicked, this, &PlaybackLeftToolbar::onTableCellClicked); + __INIT_TABLE_FUNC__(ui->tableWidget_4x4); + + connect(ui->calendarWidget, &QCalendarWidget::selectionChanged, this, &PlaybackLeftToolbar::onCalendarChanged); + + ui->tabWidget->setCurrentIndex(0); + + connect(ui->pushButton, &QPushButton::clicked, this, &PlaybackLeftToolbar::onClickedRefresh); +} + +PlaybackLeftToolbar::~PlaybackLeftToolbar(void) +{ + delete ui; +} + +void PlaybackLeftToolbar::onTabCurrentChanged(int index) +{ + SPLIT_TYPE type = SPLIT_TYPE::ONE; + switch (index) + { + case 0: type = SPLIT_TYPE::ONE; break; + case 1: type = SPLIT_TYPE::FOUR; break; + case 2: type = SPLIT_TYPE::EIGHT; break; + case 3: type = SPLIT_TYPE::SIXTEEN; break; + default: + break; + } + emit signal_change_split(type); +} + +void PlaybackLeftToolbar::showEvent(QShowEvent *event) { + this->setTableData(); + return QWidget::showEvent(event); +} + +void PlaybackLeftToolbar::onCalendarChanged(void) { + emit signal_playback_action(PLAYBACK_ACTION_TYPE::UPDATE); +} + +void PlaybackLeftToolbar::onClickedRefresh(void) { + this->setTableData(); +} + +void PlaybackLeftToolbar::onTableCellClicked(int row, int col) { + auto __CHECK_FUNC__ = [this](auto table, auto row, auto col, auto *cnt, auto max, auto checked) { + /* Toggle check status or determined by value */ + QTableWidgetItem *item = table->item(row, col); + AX_S32 nChecked = (checked == -1 ? (item->data(Qt::UserRole).toInt() ? 0 : 1) : checked); + if (nChecked) { + if (*cnt >= max) { + return; + } + item->setIcon(this->m_iconChecked); + item->setData(Qt::UserRole, 1); + *cnt += 1; + } else { + item->setIcon(this->m_iconUnchecked); + item->setData(Qt::UserRole, 0); + *cnt -= 1; + } + }; + + if (col == 1) return; + + if (sender() == ui->tableWidget_1x1) { + __CHECK_FUNC__(ui->tableWidget_1x1, row, col, &m_nCnt1x1, 1, -1); + } else if (sender() == ui->tableWidget_2x2) { + __CHECK_FUNC__(ui->tableWidget_2x2, row, col, &m_nCnt2x2, 4, -1); + } else if (sender() == ui->tableWidget_1_7) { + __CHECK_FUNC__(ui->tableWidget_1_7, row, col, &m_nCnt1_7, 8, -1); + } else if (sender() == ui->tableWidget_4x4) { + __CHECK_FUNC__(ui->tableWidget_4x4, row, col, &m_nCnt4_4, 16, -1); + } else { + /* triggered from test suite */ + QTabWidget* pTab = this->findChild(QString("tabWidget")); + int index = pTab->currentIndex(); + switch (index) { + case 0: { + __CHECK_FUNC__(ui->tableWidget_1x1, row, col, &m_nCnt1x1, 1, 1); + break; + } + case 1: { + __CHECK_FUNC__(ui->tableWidget_2x2, row, col, &m_nCnt2x2, 4, 1); + break; + } + case 2: { + __CHECK_FUNC__(ui->tableWidget_1_7, row, col, &m_nCnt1_7, 8, 1); + break; + } + case 3: { + __CHECK_FUNC__(ui->tableWidget_4x4, row, col, &m_nCnt4_4, 16, 1); + break; + } + default: break; + } + } + + emit signal_playback_action(PLAYBACK_ACTION_TYPE::UPDATE); +} + +void PlaybackLeftToolbar::resizeEvent(QResizeEvent *event) { + + return QWidget::resizeEvent(event); +} + +ax_nvr_channel_vector PlaybackLeftToolbar::GetChannelsSelected(void) { + + auto __GETDEV_FUNC__ = [this](auto table, auto &list) { + QTableWidgetItem *check = nullptr; + QTableWidgetItem *channel = nullptr; + int index = 0; + for (int i = 0; i < table->rowCount(); i ++) { + check = table->item(i, 0); + channel = table->item(i, 1); + if (check->data(Qt::UserRole).toInt() == 1) { + list.emplace_back(make_tuple(index, channel->data(Qt::UserRole).toInt())); + index ++; + } + } + }; + + ax_nvr_channel_vector vecDevices; + // 1x1 + if (ui->tabWidget->currentIndex() == 0) { + __GETDEV_FUNC__(ui->tableWidget_1x1, vecDevices); + } + // 2x2 + else if (ui->tabWidget->currentIndex() == 1) { + __GETDEV_FUNC__(ui->tableWidget_2x2, vecDevices); + } + // 1+7 + else if (ui->tabWidget->currentIndex() == 2) { + __GETDEV_FUNC__(ui->tableWidget_1_7, vecDevices); + } + // 4x4 + else if (ui->tabWidget->currentIndex() == 3) { + __GETDEV_FUNC__(ui->tableWidget_4x4, vecDevices); + } + + return vecDevices; +} + +std::string PlaybackLeftToolbar::GetCurrentYMD(void) { + return ui->calendarWidget->selectedDate().toString("yyyy-MM-dd").toStdString(); +} + +AX_U32 PlaybackLeftToolbar::GetCurrentIntYMD(void) { + return ui->calendarWidget->selectedDate().toString("yyyyMMdd").toInt(); +} + +void PlaybackLeftToolbar::SetCurrentYMD(bool bNext) { + QDate date = ui->calendarWidget->selectedDate(); + ui->calendarWidget->setSelectedDate(date.addDays(bNext?1:-1)); +} + +void PlaybackLeftToolbar::dumpStructure(const QObject *obj, int spaceCount) { + qDebug() << QString("%1%2 : %3") + .arg("", spaceCount) + .arg(obj->metaObject()->className()) + .arg(obj->objectName()); + + QObjectList list = obj->children(); + + foreach (QObject * child, list) { + dumpStructure(child, spaceCount + 4); + } +} + +void PlaybackLeftToolbar::setTableData(void) { + + auto __INIT_TABLE_FUNC__ = [this](auto table) { + table->setRowCount(0); + // FixMe: thread? + CAXNVRPlaybakCtrl *pPlayback = CAXNVRFramework::GetInstance()->PlaybakCtrl(); + if (pPlayback == NULL) { + return; + } + std::vector vecDevInfo = pPlayback->GetDeviceFiles(); + m_vecDevInfo.swap(vecDevInfo); + for (auto device : m_vecDevInfo) { + int nRowIndex = table->rowCount(); + table->insertRow(nRowIndex); + + table->setItem(nRowIndex, 0, new QTableWidgetItem(this->m_iconUnchecked, "")); + QTableWidgetItem *item = table->item(nRowIndex, 0); + item->setFlags(item->flags() & (~Qt::ItemIsEditable)); + item->setData(Qt::UserRole, 0); + + table->setItem(nRowIndex, 1, new QTableWidgetItem(QString("device channel %1").arg(device + 1))); + item = table->item(nRowIndex, 1); + item->setFlags(item->flags() & (~Qt::ItemIsEditable)); + item->setData(Qt::UserRole, device); + } + }; + + // FixMe: Get the devid of the video recording through the VIDEO-RETRIEVAL-COMPONENT + m_nCnt1x1 = 0; + m_nCnt2x2 = 0; + m_nCnt1_7 = 0; + m_nCnt4_4 = 0; + + __INIT_TABLE_FUNC__(ui->tableWidget_1x1); + __INIT_TABLE_FUNC__(ui->tableWidget_2x2); + __INIT_TABLE_FUNC__(ui->tableWidget_1_7); + __INIT_TABLE_FUNC__(ui->tableWidget_4x4); +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackLeftToolbar.h b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackLeftToolbar.h new file mode 100644 index 0000000..1418995 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackLeftToolbar.h @@ -0,0 +1,67 @@ +#ifndef PLAYBACKLEFTTOOLBAR_H +#define PLAYBACKLEFTTOOLBAR_H + +#include +#include + +#include + +#include "utils/SplitWidgetMgr.h" +#include "PlaybackTimeLine.h" + +using namespace std; + +QT_BEGIN_NAMESPACE +namespace Ui { class PlaybackLeftToolbar; } +QT_END_NAMESPACE + +class PlaybackLeftToolbar : public QWidget +{ + Q_OBJECT + +public: + PlaybackLeftToolbar(QWidget *parent = nullptr); + ~PlaybackLeftToolbar(); + +protected: + virtual void showEvent(QShowEvent *event) override; + virtual void resizeEvent(QResizeEvent *event) override; + +private: + Ui::PlaybackLeftToolbar *ui; + QIcon m_iconChecked; + QIcon m_iconUnchecked; + +public slots: + void onTableCellClicked(int row, int col); + +protected slots: + void onTabCurrentChanged(int index); + void onCalendarChanged(void); + void onClickedRefresh(void); + +signals: + void signal_change_split(SPLIT_TYPE enSpliteType); + void signal_playback_action(PLAYBACK_ACTION_TYPE enActionType); + +public: + void SetTimeline(PlaybackTimeLine *pPlaybackTimeLine); + + std::string GetCurrentYMD(void); + AX_U32 GetCurrentIntYMD(void); + void SetCurrentYMD(bool bNext); + ax_nvr_channel_vector GetChannelsSelected(void); + +private: + std::vector m_vecDevInfo; + + int m_nCnt1x1 = 0; + int m_nCnt2x2 = 0; + int m_nCnt1_7 = 0; + int m_nCnt4_4 = 0; + + void setTableData(void); + void dumpStructure(const QObject *obj, int spaceCount); + +}; +#endif // PLAYBACKLEFTTOOLBAR_H diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackLeftToolbar.ui b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackLeftToolbar.ui new file mode 100644 index 0000000..3d54a4c --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackLeftToolbar.ui @@ -0,0 +1,249 @@ + + + PlaybackLeftToolbar + + + + 0 + 0 + 242 + 631 + + + + Form + + + + 0 + + + 0 + + + 0 + + + 0 + + + 2 + + + + + 12 + + + + + + + + + :/img/refresh.png:/img/refresh.png + + + + 20 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + + + + + + 9 + + + 2 + + + 9 + + + 2 + + + + + QFrame::Plain + + + 0 + + + false + + + true + + + false + + + + New Column + + + + + + + + + + + + + 9 + + + 2 + + + 9 + + + 2 + + + + + QFrame::Plain + + + false + + + true + + + false + + + + + + + + + + + + 9 + + + 2 + + + 9 + + + 2 + + + + + QFrame::Plain + + + false + + + true + + + false + + + + + + + + + + + + 2 + + + 2 + + + + + QFrame::Plain + + + false + + + true + + + false + + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + true + + + QCalendarWidget::ShortDayNames + + + QCalendarWidget::NoVerticalHeader + + + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackMain.cpp b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackMain.cpp new file mode 100644 index 0000000..b00a59e --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackMain.cpp @@ -0,0 +1,732 @@ +#include "PlaybackMain.h" +#include "ui_PlaybackMain.h" +#include "AppLogApi.h" +#include +#include +#include +#include +#include "AXNVRFramework.h" + +#define TAG "PLAYBACK" + +PlaybackMain::PlaybackMain(QWidget *parent) + : QWidget(parent) + , ui(new Ui::PlaybackMain) +{ + ui->setupUi(this); + ui->widget_playbackctrl->setStyleSheet(CSS_WIDGET_1); + // ui->tableDevList->setAlternatingRowColors(true); + // ui->tableDevList->setStyleSheet(CSS_TABLE); + // ui->tableDevList->horizontalHeader()->setStyleSheet(CSS_TABLE_HEAD); + + m_pSplitWidgetMgr = new SplitWidgetMgr(AX_NVR_VIEW_TYPE::PLAYBACK, ui->gridLayout, this); + m_pPlayBackTimeLine = new PlaybackTimeLine(this); + m_pPlayBackCtrl = new PlaybackCtrl(this); + ui->verticalLayout_3->addWidget(m_pPlayBackCtrl); + ui->verticalLayout_3->addWidget(m_pPlayBackTimeLine); + ui->verticalLayout_3->setStretch(1, 1); + + connect(&m_watcherPreview, &QFutureWatcher::finished, [=]{ + AX_NVR_ACTION_RES_T res = m_watcherPreview.result(); + if (res.enPlaybackActionType == PLAYBACK_ACTION_TYPE::STOP) { + SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + m_pSplitWidgetMgr->SetChannelsText(PLAYBACK_ACTION_TYPE::STOP, vecViewChn); + + emit signal_stop_status_changed(0); /* stop finished */ + } else if (res.enPlaybackActionType == PLAYBACK_ACTION_TYPE::FAST_SPEED) { + AX_NVR_ACTION_RES_T res = m_watcherPreview.result(); + if (AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK == res.enResult) { + SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + + if (m_fCurrentSpeed > 1.0) { + m_pSplitWidgetMgr->SetChannelsText(PLAYBACK_ACTION_TYPE::FAST_SPEED, vecViewChn, QString("(Speed X%1)").arg(m_nSpeedFactor[m_nCurrentIndex])); + } else { + m_pSplitWidgetMgr->SetChannelsText(PLAYBACK_ACTION_TYPE::FAST_SPEED, vecViewChn); + } + } + } else if (res.enPlaybackActionType == PLAYBACK_ACTION_TYPE::SLOW_SPEED) { + AX_NVR_ACTION_RES_T res = m_watcherPreview.result(); + if (AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK == res.enResult) { + SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + + if (m_fCurrentSpeed < 1.0) { + m_pSplitWidgetMgr->SetChannelsText(PLAYBACK_ACTION_TYPE::SLOW_SPEED, vecViewChn, QString("(Speed 1/%1)").arg(m_nSpeedFactor[m_nCurrentIndex])); + } else { + m_pSplitWidgetMgr->SetChannelsText(PLAYBACK_ACTION_TYPE::SLOW_SPEED, vecViewChn); + } + } + } + LOG_M_D(TAG, "[%s][%d] Preview Action Finished, res=0x%x.", __func__, __LINE__, res.enResult); + }); + + connect(&m_watcherPreview, &QFutureWatcher::started, [=]{ + LOG_M_D(TAG, "[%s][%d] Preview Action Started.", __func__, __LINE__); + }); + + connect(m_pPlayBackCtrl, &PlaybackCtrl::signal_playback_action, this, &PlaybackMain::OnDoPlaybackAction); +} + +PlaybackMain::~PlaybackMain() +{ + delete ui; + DEL_PTR(m_pSplitWidgetMgr) + DEL_PTR(m_pPlayBackCtrl) + DEL_PTR(m_pPlayBackTimeLine) +} + +void PlaybackMain::SetCtrls(PlaybackLeftToolbar *pPlaybackLeftToolbar) { + m_pPlaybackLeftToolbar = pPlaybackLeftToolbar; +} + +void PlaybackMain::resizeEvent(QResizeEvent *event) { + + auto __INIT_FUNC__ = [this]() { + QPoint pt = ui->widget_playback->mapToGlobal(QPoint(0, 0)); + m_nLeftMargin = pt.x()%2; + m_nTopMargin = pt.y()%2; + m_nRightMargin = 0; + m_nBottomMargin = 0; + m_nWidth = ui->widget_playback->geometry().width() - m_nLeftMargin - m_nRightMargin; + m_nHeight = ui->widget_playback->geometry().height() - m_nTopMargin - m_nBottomMargin; + }; + + __INIT_FUNC__(); + + m_pSplitWidgetMgr->ChangeSplitWidgets(m_pSplitWidgetMgr->GetCurrentSplitType()); + + return QWidget::resizeEvent(event); +} + +void PlaybackMain::showEvent(QShowEvent *event) { + + do { + m_pScaleLabelSeled = nullptr; + if (m_watcherPreview.isRunning()) { + LOG_MM_W(TAG, "Last operation still active."); + break; + } + + SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + + // change view split layout + m_pSplitWidgetMgr->ChangeSplitWidgets(enSplitType); + + // get current labels index list + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + if (vecViewChn.size() == 0) { + LOG_M_D(TAG, "[%s][%d] layout channel invalid", __func__, __LINE__); + break; + } + + // get current labels rect list + vector vecVoRect = m_pSplitWidgetMgr->CalcLayouts(enSplitType, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + if (vecVoRect.size() == 0) { + LOG_M_D(TAG, "[%s][%d] layout rect invalid", __func__, __LINE__); + break; + } + + // change type + AX_NVR_VIEW_CHANGE_TYPE enChangeType = AX_NVR_VIEW_CHANGE_TYPE::SHOW; + + this->update_display(vecViewChn, vecVoRect, enChangeType, enSplitType); + this->update_playctrl(enSplitType); + + m_pScaleLabelSeled = (ScaleLabel*)m_pSplitWidgetMgr->GetCurrentStartWidget(); + } while(0); + + return QWidget::showEvent(event); +} + +void PlaybackMain::hideEvent(QHideEvent *event) { + do { + + if (m_watcherPreview.isRunning()) { + LOG_MM_W(TAG, "Last operation still active."); + break; + } + + emit signal_stop_status_changed(1); /* stop started */ + + SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + + // get current labels index list + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + if (vecViewChn.size() == 0) { + LOG_M_D(TAG, "[%s][%d] layout channel invalid", __func__, __LINE__); + emit signal_stop_status_changed(0); /* stop finished */ + break; + } + + // get current labels rect list + vector vecVoRect = m_pSplitWidgetMgr->CalcLayouts(enSplitType, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + if (vecVoRect.size() == 0) { + LOG_M_D(TAG, "[%s][%d] layout rect invalid", __func__, __LINE__); + emit signal_stop_status_changed(0); /* stop finished */ + break; + } + + // change type + AX_NVR_VIEW_CHANGE_TYPE enChangeType = AX_NVR_VIEW_CHANGE_TYPE::HIDE; + this->update_display(vecViewChn, vecVoRect, enChangeType, enSplitType); + + } while(0); + return QWidget::hideEvent(event); +} + +bool PlaybackMain::eventFilter(QObject *watched, QEvent *event) { + AX_S32 nEventType = 0; /* Not concerned */ + do { + if (event->type() == QEvent::MouseButtonPress) { + QMouseEvent *ev = static_cast(event); + if (ev->button() == Qt::LeftButton) { + m_pScaleLabelSeled = (ScaleLabel*)watched; + break; + } + } + + if (event->type() != QEvent::MouseButtonDblClick) { + break; + } + + QMouseEvent *ev = static_cast(event); + if (ev->button() != Qt::LeftButton) { + break; + } + + nEventType = 1; /* Double click event */ + + const SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + if (enSplitType == SPLIT_TYPE::ONE) { + LOG_MM_W(TAG, "SPLIT_TYPE::ONE actived, ignore MAX/MIN operation."); + break; + } + + if (m_watcherPreview.isRunning()) { + LOG_MM_W(TAG, "Last operation still active."); + break; + } + + // get current selected label index + int nChnSeled = m_pSplitWidgetMgr->GetWidgetIndex((ScaleLabel*)watched); + if (nChnSeled == -1) { + LOG_MM_E(TAG, "No channel selected."); + break; + } + + // min max selected label + m_pSplitWidgetMgr->MinMaxSelected(nChnSeled); + + // get current labels index list + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + if (vecViewChn.size() == 0) { + LOG_M_D(TAG, "[%s][%d] layout channel invalid", __func__, __LINE__); + break; + } + + // get current labels rect list + vector vecVoRect; + AX_NVR_VIEW_CHANGE_TYPE enChangeType = AX_NVR_VIEW_CHANGE_TYPE::MIN; + SPLIT_TYPE enSplitTypeForPlayCtrl = enSplitType; + if (vecViewChn.size() == 1) { + enChangeType = AX_NVR_VIEW_CHANGE_TYPE::MAX; + enSplitTypeForPlayCtrl = SPLIT_TYPE::MAX; + vecVoRect = m_pSplitWidgetMgr->CalcLayouts(SPLIT_TYPE::MAX, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + } else { + vecVoRect = m_pSplitWidgetMgr->CalcLayouts(enSplitType, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + } + + if (vecVoRect.size() == 0) { + LOG_M_D(TAG, "[%s][%d] layout rect invalid", __func__, __LINE__); + break; + } + + this->update_display(vecViewChn, vecVoRect, enChangeType, enSplitType); + this->update_playctrl(enSplitTypeForPlayCtrl); + nEventType = 2; /* Double click actually processed */ + + } while(0); + + if (1 == nEventType) { /* Double clicked not processed should still give feedback to testsuite */ + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + AX_NVR_ACTION_RES_T res; + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK; + emit signal_result_feedback(res); + } + } + + return QWidget::eventFilter(watched, event); +} + +void PlaybackMain::OnChangeSplitVideo(SPLIT_TYPE enSplitType) { + do { + SPLIT_TYPE enCurrSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + if (enSplitType == enCurrSplitType) { + LOG_M_D(TAG, "[%s][%d] split_type=%d not changed", __func__, __LINE__, enSplitType); + break; + } + + if (m_watcherPreview.isRunning()) { + LOG_MM_W(TAG, "Last operation still active."); + break; + } + + // change view split layout + m_pSplitWidgetMgr->ChangeSplitWidgets(enSplitType); + + // get current labels index list + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + if (vecViewChn.size() == 0) { + LOG_M_D(TAG, "[%s][%d] layout channel invalid", __func__, __LINE__); + break; + } + + // get current labels rect list + vector vecVoRect = m_pSplitWidgetMgr->CalcLayouts(enSplitType, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + if (vecVoRect.size() == 0) { + LOG_M_D(TAG, "[%s][%d] layout rect invalid", __func__, __LINE__); + break; + } + + // change type + AX_NVR_VIEW_CHANGE_TYPE enChangeType = AX_NVR_VIEW_CHANGE_TYPE::UPDATE; + + // change split layout, 1<-->4<-->8<-->16 + this->update_display(vecViewChn, vecVoRect, enChangeType, enSplitType); + this->update_playctrl(enSplitType); + + m_pSplitWidgetMgr->SetChannelsText(PLAYBACK_ACTION_TYPE::STOP, vecViewChn); + + m_pScaleLabelSeled = (ScaleLabel*)m_pSplitWidgetMgr->GetCurrentStartWidget(); + + } while(0); +} + +void PlaybackMain::OnChangeMainSub1(void) { + do { + if (m_watcherPreview.isRunning()) { + LOG_MM_W(TAG, "Last operation still active."); + break; + } + + // get current label selected + int nIndexSeled = m_pSplitWidgetMgr->GetWidgetIndex(m_pScaleLabelSeled); + int nDevidSeled = m_pSplitWidgetMgr->GetWidgetDevid(m_pScaleLabelSeled); + ax_nvr_channel_vector vecViewChn; + vecViewChn.emplace_back(make_tuple(nIndexSeled, nDevidSeled)); + + const SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + + // get current labels rect list + vector vecVoRect = m_pSplitWidgetMgr->CalcLayouts(enSplitType, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + if (vecVoRect.size() == 0) { + LOG_M_D(TAG, "[%s][%d] layout rect invalid", __func__, __LINE__); + break; + } + + // Quit zoom mode + m_pScaleLabelSeled->Reset(); + + AX_U32 nYYYYMMDD = m_pPlaybackLeftToolbar->GetCurrentIntYMD(); + AX_U32 nHHMMSS = m_pPlayBackTimeLine->GetCurrentHMS(); + + PLAYBACK_ACTION_TYPE enActionType = PLAYBACK_ACTION_TYPE::MAINSUB1; + + AX_NVR_ACTION_RES_T res; + res.enSplitType = enSplitType; + QFutureInterface interface; + interface.reportStarted(); + m_watcherPreview.setFuture(interface.future()); + + std::thread thread([this, interface, vecViewChn, enActionType, nYYYYMMDD, nHHMMSS, res]() mutable { + LOG_MM_W(TAG, "Thread Action %d +++ ", enActionType); + pthread_setname_np(pthread_self(), "AppPBChangeMS"); + + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_ERR; + res.enPlaybackActionType = enActionType; + + do { + CAXNVRPlaybakCtrl *pPlaybak = CAXNVRFramework::GetInstance()->PlaybakCtrl(); + if (!pPlaybak) { + LOG_MM_E(TAG, "invalid point"); + break; + } + + if (!pPlaybak->SwitchMainSub1(vecViewChn, nYYYYMMDD, nHHMMSS)) { + LOG_MM_E(TAG, "Playback Action=%d failed.", enActionType); + break; + } + + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK; + } while (0); + + interface.reportResult(res, 0); + interface.reportFinished(); + + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + emit signal_result_feedback(res); + } + + LOG_MM_W(TAG, "Thread Action %d --- ", enActionType); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + + } while (0); +} + +void PlaybackMain::OnDoPlaybackActionUpdate(PLAYBACK_ACTION_TYPE enActionType) { + LOG_M_D(TAG, "[%s][%d] ActionType=%d +++", __func__, __LINE__, enActionType); + if (m_pPlayBackTimeLine != nullptr) { + ax_nvr_channel_vector vecViewChn = m_pPlaybackLeftToolbar->GetChannelsSelected(); + m_pPlayBackTimeLine->UpdateTimeline(vecViewChn, m_pPlaybackLeftToolbar->GetCurrentYMD()); + } + LOG_M_D(TAG, "[%s][%d] ActionType=%d ---", __func__, __LINE__, enActionType); +} + +void PlaybackMain::OnDoPlaybackAction(PLAYBACK_ACTION_TYPE enActionType) { + LOG_MM_I(TAG, "ActionType=%d +++", enActionType); + + AX_BOOL bCurrOprStarted = AX_FALSE; + AX_NVR_ACTION_RES_T res; + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_ERR; + res.enPlaybackActionType = enActionType; + QFutureInterface interface; + + do { + if (m_watcherPreview.isRunning()) { + LOG_MM_W(TAG, "Last operation still active."); + break; + } + + interface.reportStarted(); + m_watcherPreview.setFuture(interface.future()); + bCurrOprStarted = AX_TRUE; + + // set label dev-id after started + if (PLAYBACK_ACTION_TYPE::PLAY == enActionType || PLAYBACK_ACTION_TYPE::REVERSE == enActionType) { + SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + ax_nvr_channel_vector vecViewChnPlayed = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + ax_nvr_channel_vector vecViewChnSelected = m_pPlaybackLeftToolbar->GetChannelsSelected(); + if (m_vecViewChnSelected.size() > 0 && (vecViewChnSelected != m_vecViewChnSelected || m_bPlaying)) { + AX_BOOL bIgnoreOpr = AX_FALSE; + for (auto &m : vecViewChnPlayed) { + if (std::get<1>(m) != -1) { + LOG_MM_W(TAG, "Playback is running, please STOP first."); + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK; + bIgnoreOpr = AX_TRUE; + break; + } + } + + if (bIgnoreOpr) { + break; + } + } + + ax_nvr_channel_vector vecSelectedChn = m_pPlaybackLeftToolbar->GetChannelsSelected(); + m_pSplitWidgetMgr->SetChannelsText(PLAYBACK_ACTION_TYPE::PLAY, vecSelectedChn); + m_vecViewChnSelected = vecSelectedChn; + + /* Reset speed */ + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + m_nCurrentIndex = 0; + m_fCurrentSpeed = 1.0f; + CAXNVRPlaybakCtrl *pPlaybak = CAXNVRFramework::GetInstance()->PlaybakCtrl(); + pPlaybak->SetSpeed(vecViewChn, m_fCurrentSpeed); + } + else if (PLAYBACK_ACTION_TYPE::STOP == enActionType) { + m_pSplitWidgetMgr->Reset(); + } + else if (enActionType == PLAYBACK_ACTION_TYPE::NEXT) { + m_pPlaybackLeftToolbar->SetCurrentYMD(true); + } else if (enActionType == PLAYBACK_ACTION_TYPE::PREV) { + m_pPlaybackLeftToolbar->SetCurrentYMD(false); + } + + const SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + // get current labels index list + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + if (vecViewChn.size() == 0) { + LOG_M_C(TAG, "[%s][%d] layout channel invalid", __func__, __LINE__); + break; + } + + AX_U32 nYYYYMMDD = m_pPlaybackLeftToolbar->GetCurrentIntYMD(); + AX_U32 nHHMMSS = m_pPlayBackTimeLine->GetCurrentHMS(); + std::thread thread([this, interface, vecViewChn, enActionType, nYYYYMMDD, nHHMMSS, res]() mutable { + pthread_setname_np(pthread_self(), "AppPBAction"); + LOG_MM_W(TAG, "Thread Action %d +++ ", enActionType); + + do { + CAXNVRPlaybakCtrl *pPlaybak = CAXNVRFramework::GetInstance()->PlaybakCtrl(); + if (!pPlaybak) { + LOG_M_E(TAG, "invalid point"); + break; + } + + AX_BOOL bRet = AX_FALSE; + switch (enActionType) { + case PLAYBACK_ACTION_TYPE::PLAY: + bRet = pPlaybak->Start(vecViewChn, nYYYYMMDD, nHHMMSS, AX_FALSE); + m_bPlaying = AX_TRUE; + break; + case PLAYBACK_ACTION_TYPE::REVERSE: + bRet = pPlaybak->Start(vecViewChn, nYYYYMMDD, nHHMMSS, AX_TRUE); + m_bPlaying = AX_TRUE; + break; + case PLAYBACK_ACTION_TYPE::STOP: + bRet = pPlaybak->Stop(vecViewChn); + m_bPlaying = AX_FALSE; + break; + case PLAYBACK_ACTION_TYPE::PAUSE: + bRet = pPlaybak->PauseResume(vecViewChn); + break; + case PLAYBACK_ACTION_TYPE::SLOW_SPEED: { + int nDevidSeled = m_pSplitWidgetMgr->GetWidgetDevid(m_pScaleLabelSeled); + if (nDevidSeled == -1) { + LOG_MM_W(TAG, "Playback not started, please start first."); + bRet = AX_TRUE; + break; + } + + if (m_fCurrentSpeed > 1.0) { + m_nCurrentIndex = 0; + } else { + m_nCurrentIndex ++; + if (m_nCurrentIndex > m_nMaxIndex) { + m_nCurrentIndex = 0; + } + } + m_fCurrentSpeed = 1.0 / m_nSpeedFactor[m_nCurrentIndex]; + bRet = pPlaybak->SetSpeed(vecViewChn, m_fCurrentSpeed); + break; + } + case PLAYBACK_ACTION_TYPE::FAST_SPEED: { + int nDevidSeled = m_pSplitWidgetMgr->GetWidgetDevid(m_pScaleLabelSeled); + if (nDevidSeled == -1) { + LOG_MM_W(TAG, "Playback not started, please start first."); + bRet = AX_TRUE; + break; + } + + if (m_fCurrentSpeed < 1.0) { + m_nCurrentIndex = 0; + } else { + m_nCurrentIndex ++; + if (m_nCurrentIndex > m_nMaxIndex) { + m_nCurrentIndex = 0; + } + } + m_fCurrentSpeed = m_nSpeedFactor[m_nCurrentIndex] * 1.0; + bRet = pPlaybak->SetSpeed(vecViewChn, m_fCurrentSpeed); + break; + } + case PLAYBACK_ACTION_TYPE::PREV_FRAME: + bRet = pPlaybak->Step(vecViewChn, AX_TRUE); + break; + case PLAYBACK_ACTION_TYPE::NEXT_FRAME: + bRet = pPlaybak->Step(vecViewChn, AX_FALSE); + break; + case PLAYBACK_ACTION_TYPE::MAINSUB1: + bRet = pPlaybak->SwitchMainSub1(vecViewChn); + break; + default: + bRet = AX_TRUE; + break; + } + if (!bRet) { + LOG_MM_E(TAG, "Thread Action=%d failed.", enActionType); + break; + } + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK; + } while (0); + + interface.reportResult(res, 0); + interface.reportFinished(); + + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + if (PLAYBACK_ACTION_TYPE::PLAY == enActionType + || PLAYBACK_ACTION_TYPE::REVERSE == enActionType + || PLAYBACK_ACTION_TYPE::STOP == enActionType + || PLAYBACK_ACTION_TYPE::PAUSE == enActionType + || PLAYBACK_ACTION_TYPE::SLOW_SPEED == enActionType + || PLAYBACK_ACTION_TYPE::FAST_SPEED == enActionType + || PLAYBACK_ACTION_TYPE::PREV_FRAME == enActionType + || PLAYBACK_ACTION_TYPE::NEXT_FRAME == enActionType + || PLAYBACK_ACTION_TYPE::MAINSUB1 == enActionType) { + + emit signal_result_feedback(res); + } + } + + LOG_MM_W(TAG, "Thread Action %d ---", enActionType); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + + LOG_MM_I(TAG, "ActionType=%d ---", enActionType); + return; + } while (0); + + if (bCurrOprStarted) { + interface.reportResult(res, 0); + interface.reportFinished(); + } + + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + if (PLAYBACK_ACTION_TYPE::PLAY == enActionType + || PLAYBACK_ACTION_TYPE::REVERSE == enActionType + || PLAYBACK_ACTION_TYPE::STOP == enActionType + || PLAYBACK_ACTION_TYPE::PAUSE == enActionType + || PLAYBACK_ACTION_TYPE::SLOW_SPEED == enActionType + || PLAYBACK_ACTION_TYPE::FAST_SPEED == enActionType + || PLAYBACK_ACTION_TYPE::PREV_FRAME == enActionType + || PLAYBACK_ACTION_TYPE::NEXT_FRAME == enActionType + || PLAYBACK_ACTION_TYPE::MAINSUB1 == enActionType) { + emit signal_result_feedback(res); + } + } + + LOG_MM_I(TAG, "ActionType=%d ---", enActionType); +} + +void PlaybackMain::OnLocateTime(int nHHMM) { + if (m_pPlayBackTimeLine) { + m_pPlayBackTimeLine->Locate(nHHMM); + } +} + +void PlaybackMain::update_display(const ax_nvr_channel_vector &vecViewChn, + const vector &vecVoRect, + AX_NVR_VIEW_CHANGE_TYPE enChangeType, + SPLIT_TYPE enSplitType) { + // Create thead to update VO channels and stop-start PPL(if record, RTSP not stop) + AX_NVR_ACTION_RES_T res; + res.enSplitType = enSplitType; + + QFutureInterface interface; + interface.reportStarted(); + m_watcherPreview.setFuture(interface.future()); + + std::thread thread([this, interface, vecViewChn, vecVoRect, enChangeType, res]() mutable { + pthread_setname_np(pthread_self(), "AppPBUpdDisp"); + LOG_MM_W(TAG, "Thread Action %d +++ ", enChangeType); + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_ERR; + do { + AX_BOOL bRet = AX_FALSE; + CAXNVRDisplayCtrl *pPrimaryDispCtrl = CAXNVRFramework::GetInstance()->PrimaryDispCtrl(); + CAXNVRPlaybakCtrl *pPlaybak = CAXNVRFramework::GetInstance()->PlaybakCtrl(); + if (pPrimaryDispCtrl == nullptr || pPlaybak == nullptr) { + LOG_MM_E(TAG, "invalid point"); + break; + } + + // do stop + switch (enChangeType) + { + case AX_NVR_VIEW_CHANGE_TYPE::UPDATE: + case AX_NVR_VIEW_CHANGE_TYPE::HIDE: + res.enPlaybackActionType = PLAYBACK_ACTION_TYPE::STOP; + pPlaybak->StopAll(); + break; + case AX_NVR_VIEW_CHANGE_TYPE::MIN: + case AX_NVR_VIEW_CHANGE_TYPE::MAX: + case AX_NVR_VIEW_CHANGE_TYPE::SHOW: + default: + break; + } + + // Update VO attr + if (!pPrimaryDispCtrl->UpdateView(vecViewChn, vecVoRect, AX_NVR_VIEW_TYPE::PLAYBACK, enChangeType)) { + LOG_MM_E(TAG, "UpdateView changetype=%d", enChangeType); + break; + } + + // start PPL display + switch (enChangeType) + { + case AX_NVR_VIEW_CHANGE_TYPE::MAX: + bRet = pPlaybak->Update(vecViewChn); + break; + case AX_NVR_VIEW_CHANGE_TYPE::MIN: + if (!pPlaybak->PauseResume(vecViewChn, AX_TRUE)) { + bRet = AX_FALSE; + break; + } + m_nCurrentIndex = 0; + m_fCurrentSpeed = 1.0f; + if (!pPlaybak->SetSpeed(vecViewChn, m_fCurrentSpeed)) { + bRet = AX_FALSE; + break; + } + bRet = pPlaybak->Update(vecViewChn); + break; + case AX_NVR_VIEW_CHANGE_TYPE::HIDE: + /* Mark as STOP to enter SetChannelsText() when signal finished triggered */ + res.enPlaybackActionType = PLAYBACK_ACTION_TYPE::STOP; + bRet = AX_TRUE; + break; + case AX_NVR_VIEW_CHANGE_TYPE::SHOW: + case AX_NVR_VIEW_CHANGE_TYPE::UPDATE: + default: + bRet = AX_TRUE; + break; + } + + if (!bRet) { + LOG_MM_E(TAG, "Thread Action=%d failed.", enChangeType); + break; + } + + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK; + } while (0); + + interface.reportResult(res, 0); + interface.reportFinished(); + + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + emit signal_result_feedback(res); + } + + LOG_MM_W(TAG, "Thread Action %d ---", enChangeType); + }); + + // detach thread, Use Future to ensure exit + thread.detach(); +} + +void PlaybackMain::update_playctrl(SPLIT_TYPE enChange) { + if (SPLIT_TYPE::ONE == enChange || SPLIT_TYPE::MAX == enChange) { + m_pPlayBackCtrl->EnableSingleLabelCtrl(true); + } else { + m_pPlayBackCtrl->EnableSingleLabelCtrl(false); + } +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackMain.h b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackMain.h new file mode 100644 index 0000000..94591bc --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackMain.h @@ -0,0 +1,85 @@ +#ifndef PLAYBACKMAIN_H +#define PLAYBACKMAIN_H + +#include +#include +#include +#include + +#include "global/UiGlobalDef.h" +#include "utils/SplitWidgetMgr.h" +#include "PlaybackCtrl.h" +#include "PlaybackTimeLine.h" +#include "PlaybackLeftToolbar.h" + + +QT_BEGIN_NAMESPACE +namespace Ui { class PlaybackMain; } +QT_END_NAMESPACE + + +class PlaybackMain : public QWidget +{ + Q_OBJECT + +public: + PlaybackMain(QWidget *parent = nullptr); + ~PlaybackMain(); + +protected: + virtual void resizeEvent(QResizeEvent *event) override; + virtual void showEvent(QShowEvent *event) override; + virtual void hideEvent(QHideEvent *event) override; + virtual bool eventFilter(QObject *watched, QEvent *event) override; + +private: + Ui::PlaybackMain *ui; + +public slots: + void OnChangeSplitVideo(SPLIT_TYPE enSplitType); + void OnChangeMainSub1(void); + void OnDoPlaybackAction(PLAYBACK_ACTION_TYPE enActionType); + void OnDoPlaybackActionUpdate(PLAYBACK_ACTION_TYPE enActionType); + void OnLocateTime(int nHHMM); + +public: + void SetCtrls(PlaybackLeftToolbar *pPlaybackLeftToolbar); + +signals: + void signal_result_feedback(const AX_NVR_ACTION_RES_T& enActionType); + void signal_stop_status_changed(int nStatus); + +public: + SplitWidgetMgr *m_pSplitWidgetMgr = nullptr; + +private: + QFutureWatcher m_watcherPreview; + ScaleLabel* m_pScaleLabelSeled = nullptr; + + PlaybackCtrl *m_pPlayBackCtrl = nullptr; + PlaybackTimeLine *m_pPlayBackTimeLine = nullptr; + PlaybackLeftToolbar *m_pPlaybackLeftToolbar = nullptr; + + ax_nvr_channel_vector m_vecViewChnSelected; + AX_BOOL m_bPlaying {AX_FALSE}; + + int m_nLeftMargin = 0; + int m_nTopMargin = 0; + int m_nRightMargin = 0; + int m_nBottomMargin = 0; + int m_nWidth = 0; + int m_nHeight = 0; + int m_nXOffset = 0; + int m_nYOffset = 0; + + AX_U32 m_nMaxIndex = 4; + AX_U32 m_nSpeedFactor[5] = {1, 2, 4, 8, 16}; + AX_U32 m_nCurrentIndex = 0; + AX_F32 m_fCurrentSpeed = 1.0f; +private: + void update_display(const ax_nvr_channel_vector &vecViewChn, const vector &vecVoRect, + AX_NVR_VIEW_CHANGE_TYPE enChange, SPLIT_TYPE enSplitType); + + void update_playctrl(SPLIT_TYPE enSplitType); +}; +#endif // PLAYBACKMAIN_H diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackMain.ui b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackMain.ui new file mode 100644 index 0000000..d91f0dd --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackMain.ui @@ -0,0 +1,85 @@ + + + PlaybackMain + + + + 0 + 0 + 661 + 564 + + + + Form + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 2 + + + + + + + + + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTimeLine.cpp b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTimeLine.cpp new file mode 100644 index 0000000..a392e88 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTimeLine.cpp @@ -0,0 +1,222 @@ +#include "PlaybackTimeLine.h" +#include "ui_PlaybackTimeLine.h" +#include +#include +#include +#include +#include +#include + +#include "AXNVRPlaybackCtrl.h" +#include "AXNVRFramework.h" +#include "AXNVRFrameworkDefine.h" + +const int SECONDS_IN_DAY = 60 * 60 * 24; + + +PlaybackTimeLine::PlaybackTimeLine(QWidget *parent) + : QWidget(parent) + , ui(new Ui::PlaybackTimeLine) +{ + ui->setupUi(this); +} + +PlaybackTimeLine::~PlaybackTimeLine() +{ + delete ui; +} + +void PlaybackTimeLine::UpdateTimeline(const ax_nvr_channel_vector &vecViewChn, const string &strYYYYmmdd) { + + auto __GET_HSM__ = [](auto value) { + time_t timep = value; + struct tm *local_time = localtime(&timep); + return QTime(local_time->tm_hour, local_time->tm_min, local_time->tm_sec); + }; + + + QList> videoListSegment; + // FixMe: thread? + CAXNVRPlaybakCtrl *pPlayback = CAXNVRFramework::GetInstance()->PlaybakCtrl(); + if (pPlayback == nullptr) { + return; + } + for (auto chn: vecViewChn) { + AX_NVR_DEV_ID devid = get<1>(chn); + std::vector vecDevicInfo = pPlayback->GetDeviceFileInfo(devid, strYYYYmmdd); + for (auto& info: vecDevicInfo) { + AX_U64 start = info.tStart.uSec; + AX_U64 end = info.tEnd.uSec; + videoListSegment.append(qMakePair(__GET_HSM__(start), __GET_HSM__(end))); + } + } + + this->setVideoListTime(videoListSegment); + this->update(); +} + +void PlaybackTimeLine::resizeEvent(QResizeEvent *event) { + + return QWidget::resizeEvent(event); +} + +void PlaybackTimeLine::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event) + + int nTempWidth = this->width() - (m_LeftMargin + m_RightMargin); + int nHourWidth = nTempWidth / 24; + m_n24HoursWidth = nHourWidth * 24; + int Margin = m_LeftMargin; + int nY = 50; + int nLongH = 20; + + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing, true); + + // painter.begin(this); + // draw 24Hours ruler + painter.setPen(QPen(QColor(210, 210, 210), 0)); + painter.setBrush(QBrush(QColor(210, 210, 210))); + for(int i = 0; i < 25; i++) { + painter.drawLine(nHourWidth*i + Margin, nY, nHourWidth*i + Margin, nY - nLongH); + painter.drawText(nHourWidth*i + Margin - 15, nY - nLongH - 2, QString::number(i) + ":00"); + } + painter.drawLine(Margin, nY, Margin + m_n24HoursWidth, nY); + + // draw record background + painter.setPen(QPen(QColor(108, 108, 108, 80), 0)); + painter.setBrush(QColor(108, 108, 108, 80)); + painter.drawRect(Margin, nY + 5, m_n24HoursWidth, timeLineHeight); + + // draw record + QList timeRectList = convertTimeSegmentToRect(); + painter.setPen(QPen(QColor(102, 163, 52, 80), 0)); + painter.setBrush(QColor(102, 163, 52, 80)); + for (int i = 0; i < timeRectList.size(); i++) + { + QRectF rect = timeRectList.at(i); + painter.drawRect(rect); + } + + // draw time sliderbar-ctrl + painter.setPen(QPen(QColor(210, 0, 0, 200), 0)); + painter.setBrush(QBrush(QColor(210, 0, 0, 200))); + m_rectTimeLineCtrl = QRect(m_xline, 0, 10, 20); + painter.drawRect(m_rectTimeLineCtrl); + + // draw time sliderbar-ctrl-time + painter.drawText(m_xline , nY + 15, m_ShowCurrentTime); + + // draw time sliderbar-ctrl-line + m_Line = QLine(m_xline + 5, 10, m_xline + 5, 500); + painter.drawLine(m_Line); + + // painter.end(); + +} + +void PlaybackTimeLine::mousePressEvent(QMouseEvent *event) +{ + if (event->button() == Qt::LeftButton) { + if (m_rectTimeLineCtrl.contains(event->pos())) { + m_bTimeLineCtrlClicked = true; + } + } + this->update(); +} + +void PlaybackTimeLine::mouseMoveEvent(QMouseEvent * event) +{ + if (event->buttons() == Qt::LeftButton && m_bTimeLineCtrlClicked) { + int x = event->pos().x(); + if ( x >= m_LeftMargin - 5 && x <= m_n24HoursWidth + m_LeftMargin - 5) { + m_xline = x; + } + else if (x < m_LeftMargin - 5) { + m_xline = m_LeftMargin - 5; + } + else if (x > m_n24HoursWidth + m_LeftMargin - 5) { + + m_xline = m_n24HoursWidth + m_LeftMargin - 5; + + } + setTime(m_xline); + } + this->update(); +} + +void PlaybackTimeLine::mouseReleaseEvent(QMouseEvent *event) +{ + if (event->button() == Qt::LeftButton && m_bTimeLineCtrlClicked) { + m_bTimeLineCtrlClicked = false; + // qDebug() << "PlaybackTimeLine::mouseReleaseEvent"; + } + this->update(); +} + +void PlaybackTimeLine::setTime(int pos) +{ + TimePoint p; + int second = (pos - m_LeftMargin + 5) * 86400 / m_n24HoursWidth; + p.hour = second /3600; + p.minitue = (second % 3600) /60; + p.second = second % 60; + m_ShowCurrentTime = QString("%1").arg(p.hour, 2, 10, QLatin1Char('0')) + + ":" + QString("%1").arg(p.minitue, 2, 10, QLatin1Char('0')) + + ":" + QString("%1").arg(p.second, 2, 10, QLatin1Char('0')); + m_nCurrentTime = p.hour * 10000 + p.minitue *100 + p.second; + // qDebug() << "PlaybackTimeLine::setTime" << m_ShowCurrentTime; +} + +void PlaybackTimeLine::Locate(int nHHMM) { + int nHH = nHHMM / 100; + int nMM = nHHMM % 100; + + m_xline = (nHH + nMM / 60.0) / 24 * m_n24HoursWidth + m_LeftMargin - 5; + + m_ShowCurrentTime = QString("%1").arg(nHH, 2, 10, QLatin1Char('0')) + + ":" + QString("%1").arg(nMM, 2, 10, QLatin1Char('0')) + + ":" + QString("%1").arg(0, 2, 10, QLatin1Char('0')); + m_nCurrentTime = nHH * 10000 + nMM * 100 + 0; + + this->update(); +} + +void PlaybackTimeLine::setVideoListTime(QList> recordList) +{ + videoList.clear(); + for (int i = 0; i < recordList.size(); i++) { + if (recordList.at(i).first < recordList.at(i).second) { + videoList.append(recordList.at(i)); + } + } +} + +QList PlaybackTimeLine::convertTimeSegmentToRect() +{ + int beginY = 50 + 5; + int endY = beginY + timeLineHeight; + int width = m_n24HoursWidth; + + QList timeRectSegment; + for (int i=0; i< videoList.size(); i++) + { + double beginSec = videoList.at(i).first.msecsSinceStartOfDay() / 1000; + double beginX = beginSec / SECONDS_IN_DAY * width; + QPointF beginPoint = QPointF(m_LeftMargin + beginX, beginY); + + double endSec = videoList.at(i).second.msecsSinceStartOfDay() / 1000; + double endX = endSec / SECONDS_IN_DAY * width; + QPointF endPoint = QPointF(m_LeftMargin + endX, endY); + + timeRectSegment.append(QRectF(beginPoint, endPoint)); + } + + return timeRectSegment; +} + +AX_U32 PlaybackTimeLine::GetCurrentHMS() { + // qDebug() << "PlaybackTimeLine::GetCurrentHMS" << m_ShowCurrentTime; + return m_nCurrentTime; +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTimeLine.h b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTimeLine.h new file mode 100644 index 0000000..d50850d --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTimeLine.h @@ -0,0 +1,80 @@ +#ifndef PLAYBACKTIMELINE_H +#define PLAYBACKTIMELINE_H + +#include +#include +#include +// #include "utils/VideoListTimeLine.h" +#include +#include "AXNVRFrameworkDefine.h" + +using namespace std; + +QT_BEGIN_NAMESPACE +namespace Ui { class PlaybackTimeLine; } +QT_END_NAMESPACE + +struct st_playbackdate +{ + int type; // 进度条颜色类型 + int start; + int end; +}; + +struct TimePoint +{ + int hour; + int minitue; + int second; +}; + + +class PlaybackTimeLine : public QWidget +{ + Q_OBJECT + +public: + PlaybackTimeLine(QWidget *parent = nullptr); + ~PlaybackTimeLine(); + +private: + Ui::PlaybackTimeLine *ui; + +protected: + virtual void paintEvent(QPaintEvent *event) override; + virtual void mousePressEvent(QMouseEvent *) override; + virtual void mouseMoveEvent(QMouseEvent * event) override; + virtual void mouseReleaseEvent(QMouseEvent *e) override; + virtual void resizeEvent(QResizeEvent *event) override; + +public: + AX_U32 GetCurrentHMS(); + void Update(); // for test + void UpdateTimeline(const ax_nvr_channel_vector &vecViewChn, const string &strYYYYmmdd); + void Locate(int nHHMM); + +private: + QList convertTimeSegmentToRect(); + void setVideoListTime(QList > recordList); + void setTime(int); // ShowCurrentTime + + int m_n24HoursWidth = 0; + int m_LeftMargin = 30; + int m_RightMargin = 30; + int m_TopMargin = 5; + int m_BottomMargin = 5; + int timeLineHeight = 25; + + // Slider Bar Control + QRect m_rectTimeLineCtrl; + QLine m_Line; + int m_xline = m_LeftMargin - 5; + bool m_bTimeLineCtrlClicked {false}; + + QString m_ShowCurrentTime = "00:00:00"; + AX_U32 m_nCurrentTime = 0; + QList> videoList; + + bool m_bUpdateTest = true; +}; +#endif // PLAYBACKTIMELINE_H diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTimeLine.ui b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTimeLine.ui new file mode 100644 index 0000000..1ea712b --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTimeLine.ui @@ -0,0 +1,22 @@ + + + PlaybackTimeLine + + + + 0 + 0 + 873 + 68 + + + + Form + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTopToolbar.cpp b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTopToolbar.cpp new file mode 100644 index 0000000..14ec7b7 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTopToolbar.cpp @@ -0,0 +1,19 @@ +#include "PlaybackTopToolbar.h" +#include "ui_PlaybackTopToolbar.h" + +PlaybackTopToolbar::PlaybackTopToolbar(QWidget *parent) + : QWidget(parent) + , ui(new Ui::PlaybackTopToolbar) +{ + ui->setupUi(this); + connect(ui->pushButton_main_sub1, &QPushButton::clicked, this, &PlaybackTopToolbar::OnChangeMainSub1); +} + +PlaybackTopToolbar::~PlaybackTopToolbar() +{ + delete ui; +} + +void PlaybackTopToolbar::OnChangeMainSub1() { + emit signal_change_mainsub1(); +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTopToolbar.h b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTopToolbar.h new file mode 100644 index 0000000..df662e1 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTopToolbar.h @@ -0,0 +1,27 @@ +#ifndef PLAYBACKTOPTOOLBAR_H +#define PLAYBACKTOPTOOLBAR_H + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class PlaybackTopToolbar; } +QT_END_NAMESPACE + +class PlaybackTopToolbar : public QWidget +{ + Q_OBJECT + +public: + PlaybackTopToolbar(QWidget *parent = nullptr); + ~PlaybackTopToolbar(); + +private slots: + void OnChangeMainSub1(); + +private: + Ui::PlaybackTopToolbar *ui; + +signals: + void signal_change_mainsub1(void); +}; +#endif // PLAYBACKTOPTOOLBAR_H diff --git a/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTopToolbar.ui b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTopToolbar.ui new file mode 100644 index 0000000..20d5413 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/playback/PlaybackTopToolbar.ui @@ -0,0 +1,61 @@ + + + PlaybackTopToolbar + + + + 0 + 0 + 706 + 78 + + + + Form + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + M/S + + + + 32 + 32 + + + + + + + + Qt::Horizontal + + + + 631 + 20 + + + + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewLeftToolbar.cpp b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewLeftToolbar.cpp new file mode 100644 index 0000000..8e3fbca --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewLeftToolbar.cpp @@ -0,0 +1,33 @@ +#include "PreviewLeftToolbar.h" +#include "ui_PreviewLeftToolbar.h" +#include "AXNVRFramework.h" +#include "AXNVRFrameworkDefine.h" + +PreviewLeftToolbar::PreviewLeftToolbar(QWidget *parent) + : QWidget(parent) + , ui(new Ui::PreviewLeftToolbar) +{ + ui->setupUi(this); + m_ItemModel = new QStandardItemModel(this); +} + +PreviewLeftToolbar::~PreviewLeftToolbar() +{ + delete ui; + delete m_ItemModel; +} + +void PreviewLeftToolbar::showEvent(QShowEvent *event) { + + m_ItemModel->clear(); + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (pPreview) { + vector vecDeviceInfo = pPreview->GetDevices(); + for (auto &&info : vecDeviceInfo) { + QStandardItem *item = new QStandardItem(QString("%1:%2").arg(info.nChannelId + 1).arg(QString::fromUtf8((char*)info.szAlias))); + m_ItemModel->appendRow(item); + } + ui->listView->setModel(m_ItemModel); + } + return QWidget::showEvent(event); +} diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewLeftToolbar.h b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewLeftToolbar.h new file mode 100644 index 0000000..c44cc96 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewLeftToolbar.h @@ -0,0 +1,27 @@ +#ifndef PREVIEWLEFTTOOLBAR_H +#define PREVIEWLEFTTOOLBAR_H + +#include +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class PreviewLeftToolbar; } +QT_END_NAMESPACE + +class PreviewLeftToolbar : public QWidget +{ + Q_OBJECT + +public: + PreviewLeftToolbar(QWidget *parent = nullptr); + ~PreviewLeftToolbar(); + +protected: + virtual void showEvent(QShowEvent *event) override; + + +private: + Ui::PreviewLeftToolbar *ui; + QStandardItemModel *m_ItemModel; +}; +#endif // PREVIEWLEFTTOOLBAR_H diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewLeftToolbar.ui b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewLeftToolbar.ui new file mode 100644 index 0000000..7869480 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewLeftToolbar.ui @@ -0,0 +1,44 @@ + + + PreviewLeftToolbar + + + + 0 + 0 + 182 + 631 + + + + Form + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QListView::item {height: 30px;} +font: 12pt; + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewMain.cpp b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewMain.cpp new file mode 100644 index 0000000..8e0669a --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewMain.cpp @@ -0,0 +1,645 @@ +#include "PreviewMain.h" +#include "ui_PreviewMain.h" +#include +#include +#include +#include "AppLogApi.h" +#include "AXNVRFramework.h" + +#define TAG "PREVIEW" + +PreviewMain::PreviewMain(QWidget *parent) + : QWidget(parent) + , ui(new Ui::PreviewMain) { + + ui->setupUi(this); + m_pSplitWidgetMgr = new SplitWidgetMgr(AX_NVR_VIEW_TYPE::PREVIEW, ui->gridLayout, this); + m_pPreviewPip = new PreviewPip(); + m_hPlaybackStopEvent.SetEvent(); + + connect(&m_watcherPreview, &QFutureWatcher::finished, [=]{ + AX_NVR_ACTION_RES_T res = m_watcherPreview.result(); + if (m_pPreviewTopToolbar) { + /* Recover all grayed widgets */ + m_pPreviewTopToolbar->EnableWidgets(AX_TRUE); + /* Update Prev/Next widgets status */ + m_pPreviewTopToolbar->SetPrevEnabled(TestChangePrevNext(PREV_NEXT_TYPE::PREV)); + m_pPreviewTopToolbar->SetNextEnabled(TestChangePrevNext(PREV_NEXT_TYPE::NEXT)); + } + LOG_M_I(TAG, "[%s][%d] Preview Action Finished, res=0x%x.", __func__, __LINE__, res.enResult); + }); + + connect(&m_watcherPreview, &QFutureWatcher::started, [=]{ + if (m_pPreviewTopToolbar) { + /* Grayed all top toolbar widgets and recover when finished signal emitted */ + m_pPreviewTopToolbar->EnableWidgets(AX_FALSE); + } + LOG_M_I(TAG, "[%s][%d] Preview Action Started.", __func__, __LINE__); + }); +} + +PreviewMain::~PreviewMain() { + delete ui; + DEL_PTR(m_pSplitWidgetMgr) + DEL_PTR(m_pPreviewPip) +} + +void PreviewMain::resizeEvent(QResizeEvent *event) { + auto __INIT_FUNC__ = [this]() { + QPoint pt = this->mapToGlobal(QPoint(0, 0)); + m_nLeftMargin = pt.x()%2; + m_nTopMargin = pt.y()%2; + m_nRightMargin = 0; + m_nBottomMargin = 0; + m_nWidth = this->geometry().width() - m_nLeftMargin - m_nRightMargin; + m_nHeight = this->geometry().height() - m_nTopMargin - m_nBottomMargin; + }; + + __INIT_FUNC__(); + const SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + m_pSplitWidgetMgr->ChangeSplitWidgets(enSplitType); + + return QWidget::resizeEvent(event); +} + +void PreviewMain::showEvent(QShowEvent *event) { + do { + m_pScaleLabelSeled = nullptr; + + if (m_watcherPreview.isRunning()) { + LOG_M_I(TAG, "[%s][%d] Still Active.", __func__, __LINE__); + break; + } + + SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + if (m_pPreviewTopToolbar) { + m_pPreviewTopToolbar->SetCurSplit(enSplitType); + } + + // change view split layout + m_pSplitWidgetMgr->ChangeSplitWidgets(enSplitType); + + // get current labels index list + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + if (vecViewChn.size() == 0) { + LOG_M_E(TAG, "[%s][%d] layout channel invalid", __func__, __LINE__); + break; + } + + // get current labels rect list + vector vecVoRect = m_pSplitWidgetMgr->CalcLayouts(enSplitType, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + if (vecVoRect.size() == 0) { + LOG_M_E(TAG, "[%s][%d] layout rect invalid", __func__, __LINE__); + break; + } + + // change type + AX_NVR_VIEW_CHANGE_TYPE enChangeType = AX_NVR_VIEW_CHANGE_TYPE::SHOW; + this->update_display(vecViewChn, vecVoRect, enChangeType, enSplitType); + + m_pScaleLabelSeled = (ScaleLabel*)m_pSplitWidgetMgr->GetCurrentStartWidget(); + } while (0); + + return QWidget::showEvent(event); +} + +void PreviewMain::hideEvent(QHideEvent *event) { + do { + if (m_watcherPreview.isRunning()) { + /* Ensure that stop process will be processed */ + m_watcherPreview.waitForFinished(); + } + + SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + + // get current labels index list + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + if (vecViewChn.size() == 0) { + LOG_M_E(TAG, "[%s][%d] layout channel invalid", __func__, __LINE__); + break; + } + + // get current labels rect list + vector vecVoRect = m_pSplitWidgetMgr->CalcLayouts(enSplitType, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + if (vecVoRect.size() == 0) { + LOG_M_E(TAG, "[%s][%d] layout rect invalid", __func__, __LINE__); + break; + } + + // change type + AX_NVR_VIEW_CHANGE_TYPE enChangeType = AX_NVR_VIEW_CHANGE_TYPE::HIDE; + this->update_display(vecViewChn, vecVoRect, enChangeType, enSplitType); + + if (m_pPreviewPip && m_pPreviewPip->isActiveWindow()) { + + AX_NVR_ACTION_RES_T res; + res.enSplitType = SPLIT_TYPE::PIP; + QFutureInterface interface; + + m_watcherPreview.setFuture(interface.future()); + interface.reportStarted(); + + AX_BOOL bEnable = AX_FALSE; + + std::thread thread([this, interface, bEnable, res]() mutable { + pthread_setname_np(pthread_self(), "AppPreviewHide"); + LOG_MM_W(TAG, "HideEvent Action +++"); + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_ERR; + + do { + AX_BOOL bRet = AX_FALSE; + CAXNVRDisplayCtrl *pPrimaryDispCtrl = CAXNVRFramework::GetInstance()->PrimaryDispCtrl(); + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (pPrimaryDispCtrl == nullptr || pPreview == nullptr) { + LOG_M_E(TAG, "[%s][%d] invalid point", __func__, __LINE__); + break; + } + + if (!bEnable) { + + if (!pPreview->StopPip()) { + LOG_M_E(TAG, "[%s][%d] stop pip channel display failed.", __func__, __LINE__); + break; + } + + if (!pPrimaryDispCtrl->DisablePip()) { + LOG_M_E(TAG, "[%s][%d] disable pip channel failed.", __func__, __LINE__); + break; + } + } + + } while(0); + + interface.reportResult(res, 0); + interface.reportFinished(); + + LOG_MM_W(TAG, "HideEvent Action ---"); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + + m_pPreviewPip->close(); + } + } while(0); + + return QWidget::hideEvent(event); +} + +bool PreviewMain::eventFilter(QObject *watched, QEvent *event) { + do { + if (event->type() == QEvent::MouseButtonPress) { + QMouseEvent *ev = static_cast(event); + if (ev->button() == Qt::LeftButton) { + m_pScaleLabelSeled = (ScaleLabel*)watched; + break; + } + } + + if (event->type() != QEvent::MouseButtonDblClick) { + break; + } + + QMouseEvent *ev = static_cast(event); + if (ev->button() != Qt::LeftButton) { + break; + } + + if (m_watcherPreview.isRunning()) { + LOG_M_I(TAG, "[%s][%d] Still Active.", __func__, __LINE__); + break; + } + + const SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + if (enSplitType == SPLIT_TYPE::ONE) { + break; + } + + // get current selected label index + int nChnSeled = m_pSplitWidgetMgr->GetWidgetIndex((ScaleLabel*)watched); + LOG_M_D(TAG, "[%s][%d] channel %d selected.", __func__, __LINE__, nChnSeled); + if (nChnSeled == -1) { + LOG_M_E(TAG, "[%s][%d] no channel selected.", __func__, __LINE__); + break; + } + // min max selected label + m_pSplitWidgetMgr->MinMaxSelected(nChnSeled); + + // get current labels index list + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + if (vecViewChn.size() == 0) { + LOG_M_E(TAG, "[%s][%d] layout channel invalid", __func__, __LINE__); + break; + } + + // get current labels rect list + vector vecVoRect; + AX_NVR_VIEW_CHANGE_TYPE enChangeType = AX_NVR_VIEW_CHANGE_TYPE::MIN; + if (vecViewChn.size() == 1) { + enChangeType = AX_NVR_VIEW_CHANGE_TYPE::MAX; + vecVoRect = m_pSplitWidgetMgr->CalcLayouts(SPLIT_TYPE::MAX, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + } else { + vecVoRect = m_pSplitWidgetMgr->CalcLayouts(enSplitType, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + } + if (vecVoRect.size() == 0) { + LOG_M_E(TAG, "[%s][%d] layout rect invalid", __func__, __LINE__); + break; + } + + this->update_display(vecViewChn, vecVoRect, enChangeType, enSplitType); + } while(0); + + return QWidget::eventFilter(watched, event); +} + +void PreviewMain::OnChangeSplitVideo(SPLIT_TYPE enSplitType) { + do { + if (enSplitType == m_pSplitWidgetMgr->GetCurrentSplitType()) { + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + AX_NVR_ACTION_RES_T res; + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK; + emit signal_result_feedback(res); + } + + LOG_M_D(TAG, "[%s][%d] split_type=%d not changed", __func__, __LINE__, enSplitType); + break; + } + + if (m_watcherPreview.isRunning()) { + LOG_M_E(TAG, "[%s][%d] Still Active.", __func__, __LINE__); + break; + } + + // change view split layout + m_pSplitWidgetMgr->ChangeSplitWidgets(enSplitType); + + // get current labels index list + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + if (vecViewChn.size() == 0) { + LOG_M_E(TAG, "[%s][%d] layout channel invalid", __func__, __LINE__); + break; + } + + // get current labels rect list + vector vecVoRect = m_pSplitWidgetMgr->CalcLayouts(enSplitType, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + if (vecVoRect.size() == 0) { + LOG_M_E(TAG, "[%s][%d] layout rect invalid", __func__, __LINE__); + break; + } + + // change type + AX_NVR_VIEW_CHANGE_TYPE enChangeType = AX_NVR_VIEW_CHANGE_TYPE::UPDATE; + + // change split layout, 1<-->4<-->8<-->16<-->64 + this->update_display(vecViewChn, vecVoRect, enChangeType, enSplitType); + m_pScaleLabelSeled = (ScaleLabel*)m_pSplitWidgetMgr->GetCurrentStartWidget(); + } while (0); +} + +void PreviewMain::OnEnablePip(bool bEnable) { + + do { + if (m_watcherPreview.isRunning()) { + LOG_M_E(TAG, "[%s][%d] Still Active.", __func__, __LINE__); + break; + } + + if (m_pPreviewPip == nullptr) { + return; + } + + // for test + m_bEnablePip = false; + + AX_NVR_RECT_T rect; + if (bEnable) { + m_pPreviewPip->ShowPip(m_pPreviewTopToolbar); + rect = m_pPreviewPip->GetDispRect(); + } + + AX_NVR_ACTION_RES_T res; + res.enSplitType = SPLIT_TYPE::PIP; + QFutureInterface interface; + + m_watcherPreview.setFuture(interface.future()); + interface.reportStarted(); + + std::thread thread([this, interface, rect, bEnable, res]() mutable { + pthread_setname_np(pthread_self(), "AppPreviewPip"); + LOG_MM_W(TAG, "EnablePIP Action +++"); + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_ERR; + + do { + AX_BOOL bRet = AX_FALSE; + CAXNVRDisplayCtrl *pPrimaryDispCtrl = CAXNVRFramework::GetInstance()->PrimaryDispCtrl(); + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (pPrimaryDispCtrl == nullptr || pPreview == nullptr) { + LOG_M_E(TAG, "[%s][%d] invalid point", __func__, __LINE__); + break; + } + + if (bEnable) { + if (!pPrimaryDispCtrl->EnablePip(rect)) { + LOG_M_E(TAG, "[%s][%d] enable pip channel failed.", __func__, __LINE__); + break; + } + + if (!pPreview->StartPip(0, AX_NVR_CHN_IDX_TYPE::MAIN)) { + LOG_M_E(TAG, "[%s][%d] start pip channel display failed.", __func__, __LINE__); + break; + } + + pPrimaryDispCtrl->StartPipFBChannel(rect); + + } else { + pPrimaryDispCtrl->StopPipFBChannel(); + + if (!pPreview->StopPip()) { + LOG_M_E(TAG, "[%s][%d] stop pip channel display failed.", __func__, __LINE__); + break; + } + + if (!pPrimaryDispCtrl->DisablePip()) { + LOG_M_E(TAG, "[%s][%d] disable pip channel failed.", __func__, __LINE__); + break; + } + } + + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK; + } while(0); + + interface.reportResult(res, 0); + interface.reportFinished(); + + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + emit signal_result_feedback(res); + } + + LOG_MM_W(TAG, "EnablePIP Action ---"); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + + if (!bEnable) { + m_pPreviewPip->ClosePip(); + } + + } while(0); +} + +void PreviewMain::OnChangeMainSub1(void) { + do { + if (m_watcherPreview.isRunning()) { + LOG_M_D(TAG, "[%s][%d] Still Active.", __func__, __LINE__); + break; + } + + // get current label selected + int nIndexSeled = m_pSplitWidgetMgr->GetWidgetIndex(m_pScaleLabelSeled); + int nDevidSeled = m_pSplitWidgetMgr->GetWidgetDevid(m_pScaleLabelSeled); + ax_nvr_channel_vector vecViewChn; + vecViewChn.emplace_back(make_tuple(nIndexSeled, nDevidSeled)); + + const SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + + // get current labels rect list + vector vecVoRect = m_pSplitWidgetMgr->CalcLayouts(enSplitType, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + if (vecVoRect.size() == 0) { + LOG_M_E(TAG, "[%s][%d] layout rect invalid", __func__, __LINE__); + break; + } + + // Quit zoom mode + m_pScaleLabelSeled->Reset(); + + // change type + AX_NVR_VIEW_CHANGE_TYPE enChangeType = AX_NVR_VIEW_CHANGE_TYPE::MAINSUB; + + // change split layout, 1<-->4<-->8<-->16<-->64 + this->update_display(vecViewChn, vecVoRect, enChangeType, enSplitType); + + } while (0); +} + +void PreviewMain::OnChangePrevNext(PREV_NEXT_TYPE enPrevNextType) { + do { + if (m_watcherPreview.isRunning()) { + LOG_M_I(TAG, "[%s][%d] Still Active.", __func__, __LINE__); + break; + } + + if (!m_pSplitWidgetMgr->ChangePrevNextWidgets(enPrevNextType)) { + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + AX_NVR_ACTION_RES_T res; + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK; + emit signal_result_feedback(res); + } + + LOG_M_D(TAG, "[%s][%d] Change Prev/Next=%d failed. ", __func__, __LINE__, enPrevNextType); + break; + } + + SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); + + // get current labels index list + const ax_nvr_channel_vector vecViewChn = m_pSplitWidgetMgr->GetViewChannels(enSplitType); + if (vecViewChn.size() == 0) { + LOG_M_E(TAG, "[%s][%d] layout channel invalid", __func__, __LINE__); + break; + } + + // get current labels rect list + vector vecVoRect = m_pSplitWidgetMgr->CalcLayouts(enSplitType, + m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, + m_nRightMargin, m_nBottomMargin); + if (vecVoRect.size() == 0) { + LOG_M_E(TAG, "[%s][%d] layout rect invalid", __func__, __LINE__); + break; + } + + // change type + AX_NVR_VIEW_CHANGE_TYPE enChangeType = AX_NVR_VIEW_CHANGE_TYPE::UPDATE; + this->update_display(vecViewChn, vecVoRect, enChangeType, enSplitType); + m_pScaleLabelSeled = (ScaleLabel*)m_pSplitWidgetMgr->GetCurrentStartWidget(); + } while(0); +} + +void PreviewMain::OnPlaybackStopStatusChanged(int nStatus) { + if (1 == nStatus) { + m_hPlaybackStopEvent.ResetEvent(); + } else { + m_hPlaybackStopEvent.SetEvent(); + } +} + +void PreviewMain::update_display(const ax_nvr_channel_vector &vecViewChn, const vector &vecVoRect, + AX_NVR_VIEW_CHANGE_TYPE enChangeType, SPLIT_TYPE enSplitType) { + // Create thead to update VO channels and stop-start PPL(if record, RTSP not stop) + AX_NVR_ACTION_RES_T res; + res.enSplitType = enSplitType; + QFutureInterface interface; + + m_watcherPreview.setFuture(interface.future()); + interface.reportStarted(); + + std::thread thread([this, interface, vecViewChn, vecVoRect, enChangeType, res]() mutable { + pthread_setname_np(pthread_self(), "AppPreviewUpd"); + LOG_MM_W(TAG, "Thread Action %d +++ ", enChangeType); + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_ERR; + + do { + AX_BOOL bRet = AX_FALSE; + CAXNVRDisplayCtrl *pPrimaryDispCtrl = CAXNVRFramework::GetInstance()->PrimaryDispCtrl(); + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (pPrimaryDispCtrl == nullptr || pPreview == nullptr) { + LOG_MM_E(TAG, "invalid point"); + break; + } + + if (enChangeType == AX_NVR_VIEW_CHANGE_TYPE::MAINSUB) { + if (!pPreview->SwitchPreviewMainSub(vecViewChn)) { + LOG_MM_E(TAG, "Switch Preview Main/Sub failed"); + } + + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK; + res.enPreviewActionType = PREVIEW_ACTION_TYPE::PREVIEW_MAINSUB; + break; + } else if (AX_NVR_VIEW_CHANGE_TYPE::UPDATE == enChangeType) { + res.enPreviewActionType = PREVIEW_ACTION_TYPE::PREVIEW_SPLIT; + } else if (AX_NVR_VIEW_CHANGE_TYPE::MIN == enChangeType || AX_NVR_VIEW_CHANGE_TYPE::MAX == enChangeType) { + res.enPreviewActionType = PREVIEW_ACTION_TYPE::PREVIEW_MIN_MAX; + } else if (AX_NVR_VIEW_CHANGE_TYPE::SHOW == enChangeType) { + res.enPreviewActionType = PREVIEW_ACTION_TYPE::PREVIEW_SHOW; + } + + /* Wait for playback stop process finished */ + m_hPlaybackStopEvent.WaitEvent(); + + switch (enChangeType) + { + case AX_NVR_VIEW_CHANGE_TYPE::MIN: + case AX_NVR_VIEW_CHANGE_TYPE::MAX: + case AX_NVR_VIEW_CHANGE_TYPE::SHOW: + break; + case AX_NVR_VIEW_CHANGE_TYPE::UPDATE: + case AX_NVR_VIEW_CHANGE_TYPE::HIDE: + if (m_bEnablePip) { + pPrimaryDispCtrl->StopPipFBChannel(); + + if (!pPreview->StopPip()) { + LOG_MM_E(TAG, "stop pip channel display failed."); + break; + } + + if (!pPrimaryDispCtrl->DisablePip()) { + LOG_MM_E(TAG, "disable pip channel failed."); + break; + } + } + + pPreview->StopPreview(); + break; + default: + break; + } + + // Update VO attr + if (!pPrimaryDispCtrl->UpdateView(vecViewChn, vecVoRect, AX_NVR_VIEW_TYPE::PREVIEW, enChangeType)) { + LOG_MM_E(TAG, "UpdateView changetype=%d", enChangeType); + break; + } + + // start PPL display + switch (enChangeType) + { + case AX_NVR_VIEW_CHANGE_TYPE::MIN: + case AX_NVR_VIEW_CHANGE_TYPE::MAX: + bRet = pPreview->UpdatePreview(vecViewChn); + break; + case AX_NVR_VIEW_CHANGE_TYPE::UPDATE: + case AX_NVR_VIEW_CHANGE_TYPE::SHOW: + bRet = pPreview->StartPreview(vecViewChn); + break; + case AX_NVR_VIEW_CHANGE_TYPE::HIDE: + default: + bRet = AX_TRUE; + break; + } + + if (!bRet) { + LOG_MM_E(TAG, "Preview Action=%d failed.", enChangeType); + break; + } + + if (AX_NVR_VIEW_CHANGE_TYPE::SHOW == enChangeType + || AX_NVR_VIEW_CHANGE_TYPE::UPDATE == enChangeType + || AX_NVR_VIEW_CHANGE_TYPE::MAX == enChangeType) { + for (auto m : vecViewChn) { + AX_NVR_DEV_ID nDeviceID = std::get<1>(m); + AX_U32 nWidth = 0; + AX_U32 nHeight = 0; + if (pPreview->GetResolution(nDeviceID, nWidth, nHeight) && nWidth > 0 && nHeight > 0) { + pPrimaryDispCtrl->UpdateChnResolution(std::get<0>(m), nWidth, nHeight); + } + } + } + + res.enResult = AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK; + } while (0); + + interface.reportResult(res, 0); + interface.reportFinished(); + + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::DISABLE != tTsCfg.eMode) { + if (AX_NVR_VIEW_CHANGE_TYPE::MAINSUB == enChangeType + || AX_NVR_VIEW_CHANGE_TYPE::UPDATE == enChangeType + || AX_NVR_VIEW_CHANGE_TYPE::MIN == enChangeType + || AX_NVR_VIEW_CHANGE_TYPE::MAX == enChangeType + || AX_NVR_VIEW_CHANGE_TYPE::SHOW == enChangeType) { + + emit signal_result_feedback(res); + } + } + + LOG_MM_W(TAG, "Thread Action %d ---", enChangeType); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + + if (m_bEnablePip) { + m_pPreviewPip->ClosePip(); + m_bEnablePip = false; + } +} + +bool PreviewMain::TestChangePrevNext(PREV_NEXT_TYPE enPrevNextType) { + if (m_pSplitWidgetMgr) { + return m_pSplitWidgetMgr->ChangePrevNextWidgets(enPrevNextType, true); + } + return false; +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewMain.h b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewMain.h new file mode 100644 index 0000000..797ef48 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewMain.h @@ -0,0 +1,74 @@ +#ifndef PREVIEWMAIN_H +#define PREVIEWMAIN_H + +#include +#include +#include +#include +#include + +#include "ax_base_type.h" +#include "global/UiGlobalDef.h" +#include "utils/SplitWidgetMgr.h" +#include "PreviewPip.h" +#include "PreviewTopToolbar.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class PreviewMain; } +QT_END_NAMESPACE + + +class PreviewMain : public QWidget +{ + Q_OBJECT + +public: + PreviewMain(QWidget *parent = nullptr); + ~PreviewMain(); + bool TestChangePrevNext(PREV_NEXT_TYPE enPrevNextType); + + PreviewTopToolbar *m_pPreviewTopToolbar = nullptr; + SplitWidgetMgr *m_pSplitWidgetMgr = nullptr; + +protected: + virtual bool eventFilter(QObject *watched, QEvent *event) override; + virtual void showEvent(QShowEvent *event) override; + virtual void hideEvent(QHideEvent *event) override; + virtual void resizeEvent(QResizeEvent *event) override; + +private: + Ui::PreviewMain *ui; + ScaleLabel* m_pScaleLabelSeled = nullptr; + +public slots: + void OnChangeSplitVideo(SPLIT_TYPE enSplitType); + void OnChangePrevNext(PREV_NEXT_TYPE enPrevNextType); + void OnChangeMainSub1(void); + void OnEnablePip(bool bEnable); + void OnPlaybackStopStatusChanged(int nStatus); /* 0: stopped; 1: stopping */ + +signals: + void signal_result_feedback(const AX_NVR_ACTION_RES_T& enActionType); + +private: + PreviewPip *m_pPreviewPip = nullptr; + QFutureWatcher m_watcherPreview; + CAXEvent m_hPlaybackStopEvent; + + int m_nLeftMargin = 0; + int m_nTopMargin = 0; + int m_nRightMargin = 0; + int m_nBottomMargin = 0; + int m_nWidth = 0; + int m_nHeight = 0; + int m_nXOffset = 0; + int m_nYOffset = 0; + + bool m_bEnablePip = false; + +private: + void update_display(const ax_nvr_channel_vector &vecViewChn, const vector &vecVoRect, + AX_NVR_VIEW_CHANGE_TYPE enChange, SPLIT_TYPE enSplitType); + +}; +#endif // NVRMAINWINDOW_H \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewMain.ui b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewMain.ui new file mode 100644 index 0000000..491c1c6 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewMain.ui @@ -0,0 +1,43 @@ + + + PreviewMain + + + + 0 + 0 + 706 + 513 + + + + Form + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 4 + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewPip.cpp b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewPip.cpp new file mode 100644 index 0000000..d9f6c83 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewPip.cpp @@ -0,0 +1,96 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "PreviewPip.h" +#include "ui_PreviewPip.h" +#include "AXNVRFramework.h" +#include "global/UiGlobalDef.h" +#include +#include + + +PreviewPip::PreviewPip(QWidget *parent) + : QDialog(parent) + , ui(new Ui::PreviewPip) { + + ui->setupUi(this); + // this->setStyleSheet("QDialog{border:10px solid rgb(44, 44, 44);}"); + this->setStyleSheet("QDialog{background-color:rgb(44, 44, 44)}"); + m_pSplitWidgetMgr = new SplitWidgetMgr(AX_NVR_VIEW_TYPE::PIP, ui->gridLayout, this); +} + +PreviewPip::~PreviewPip() { + DEL_PTR(m_pSplitWidgetMgr) + delete ui; +} + +// void PreviewPip::resizeEvent(QResizeEvent *event) { +// auto __INIT_FUNC__ = [this]() { +// // QPoint pt = this->mapToGlobal(QPoint(0, 0)); +// // m_nLeftMargin = 0;//pt.x()%2; +// // m_nTopMargin = 0;//pt.y()%2; +// // m_nRightMargin = 0; +// // m_nBottomMargin = 0; +// m_nWidth = this->geometry().width() - m_nLeftMargin - m_nRightMargin; +// m_nHeight = this->geometry().height() - m_nTopMargin - m_nBottomMargin; +// }; + +// __INIT_FUNC__(); +// const SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); +// m_pSplitWidgetMgr->ChangeSplitWidgets(enSplitType); + +// return QWidget::resizeEvent(event); +// } + +// void PreviewPip::showEvent(QShowEvent *event) { +// do { + +// SPLIT_TYPE enSplitType = m_pSplitWidgetMgr->GetCurrentSplitType(); +// // change view split layout +// m_pSplitWidgetMgr->ChangeSplitWidgets(enSplitType); + +// } while (0); + +// return QWidget::showEvent(event); +// } + +void PreviewPip::ShowPip(PreviewTopToolbar *pPreviewTopToolbar) { + // QPoint pt = ui->stackedWidget->mapToGlobal(QPoint(0, 0)); + // this->setGeometry(pt.x(), pt.y(), 792, 488); + m_pPreviewTopToolbar = pPreviewTopToolbar; + this->show(); +} + +void PreviewPip::ClosePip() { + // QPoint pt = ui->stackedWidget->mapToGlobal(QPoint(0, 0)); + // this->setGeometry(pt.x(), pt.y(), 792, 488); + if (m_pPreviewTopToolbar) { + m_pPreviewTopToolbar->CheckPip(false); + } + this->close(); +} + +AX_NVR_RECT_T &PreviewPip::GetDispRect() { + QPoint pt = ui->stackedWidget->mapToGlobal(QPoint(0, 0)); + QRect rect = ui->stackedWidget->geometry(); + + m_rect.bShow = AX_TRUE; + m_rect.x = pt.x(); + m_rect.y = pt.y(); + m_rect.w = rect.width(); + m_rect.h = rect.height(); + return m_rect; +} + +void PreviewPip::paintEvent(QPaintEvent *event) { + Q_UNUSED(event) + QPainter painter(this); + painter.setCompositionMode(QPainter::CompositionMode_Clear); + painter.fillRect(ui->stackedWidget->geometry(), Qt::SolidPattern); +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewPip.h b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewPip.h new file mode 100644 index 0000000..4ebf8f5 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewPip.h @@ -0,0 +1,58 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#ifndef DLGDEVINFO_H +#define DLGDEVINFO_H + +#include +#include "AXNVRFrameworkDefine.h" +#include "PreviewTopToolbar.h" +#include "global/UiGlobalDef.h" +#include "utils/SplitWidgetMgr.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class PreviewPip; } +QT_END_NAMESPACE + + +class PreviewPip : public QDialog +{ + Q_OBJECT + +public: + PreviewPip(QWidget *parent = nullptr); + ~PreviewPip(); + + void ShowPip(PreviewTopToolbar *pPreviewTopToolbar); + void ClosePip(); + AX_NVR_RECT_T &GetDispRect(); + +protected: + virtual void paintEvent(QPaintEvent *event) override; + // virtual void resizeEvent(QResizeEvent *event) override; + // virtual void showEvent(QShowEvent *event) override; + +private: + Ui::PreviewPip *ui; + AX_NVR_RECT_T m_rect; + SplitWidgetMgr *m_pSplitWidgetMgr = nullptr; + + PreviewTopToolbar *m_pPreviewTopToolbar = nullptr; + + // int m_nLeftMargin = 9; + // int m_nTopMargin = 9; + // int m_nRightMargin = 9; + // int m_nBottomMargin = 9; + // int m_nWidth = 0; + // int m_nHeight = 0; + // int m_nXOffset = 0; + // int m_nYOffset = 0; + +}; +#endif // DLGDEVINFO_H diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewPip.ui b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewPip.ui new file mode 100644 index 0000000..1a91cf2 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewPip.ui @@ -0,0 +1,75 @@ + + + PreviewPip + + + Qt::WindowModal + + + + 0 + 0 + 788 + 490 + + + + PIP + + + + + + true + + + + 9 + + + 10 + + + 9 + + + 8 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 768 + 470 + + + + + 768 + 470 + + + + + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewTopToolbar.cpp b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewTopToolbar.cpp new file mode 100644 index 0000000..ed49370 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewTopToolbar.cpp @@ -0,0 +1,224 @@ +#include "PreviewTopToolbar.h" +#include "ui_PreviewTopToolbar.h" +#include "AppLogApi.h" +#include "../utils/NoSignals.h" +#include + +#define TAG "PREVIEW" + + +PreviewTopToolbar::PreviewTopToolbar(QWidget *parent) + : QWidget(parent) + , ui(new Ui::PreviewTopToolbar) +{ + ui->setupUi(this); + ui->pushButton_polling->setVisible(false); + ui->pushButton_6x6->setVisible(false); + + ui->pushButton_1x1->setCheckable(true); + ui->pushButton_2x2->setCheckable(true); + ui->pushButton_1x8->setCheckable(true); + ui->pushButton_4x4->setCheckable(true); + ui->pushButton_6x6->setCheckable(true); + ui->pushButton_8x8->setCheckable(true); + ui->pushButton_1x1->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButton_2x2->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButton_1x8->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButton_4x4->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButton_6x6->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButton_8x8->setStyleSheet(CSS_PUSHBUTTON); + + ui->pushButton_previous->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButton_next->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButton_main_sub1->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButton_pip->setStyleSheet(CSS_PUSHBUTTON); + + NoSignals::setChecked(ui->pushButton_2x2, true); + + connect(ui->pushButton_1x1, &QPushButton::clicked, this, &PreviewTopToolbar::OnChangeSplit); + connect(ui->pushButton_2x2, &QPushButton::clicked, this, &PreviewTopToolbar::OnChangeSplit); + connect(ui->pushButton_1x8, &QPushButton::clicked, this, &PreviewTopToolbar::OnChangeSplit); + connect(ui->pushButton_4x4, &QPushButton::clicked, this, &PreviewTopToolbar::OnChangeSplit); + // connect(ui->pushButton_6x6, &QPushButton::clicked, this, &PreviewTopToolbar::OnChangeSplit); + connect(ui->pushButton_8x8, &QPushButton::clicked, this, &PreviewTopToolbar::OnChangeSplit); + + connect(ui->pushButton_main_sub1, &QPushButton::clicked, this, &PreviewTopToolbar::OnChangeMainSub1); + + connect(ui->pushButton_previous,&QPushButton::clicked, this, &PreviewTopToolbar::OnChangePrevNext); + connect(ui->pushButton_next, &QPushButton::clicked, this, &PreviewTopToolbar::OnChangePrevNext); + // connect(ui->pushButton_polling, &QPushButton::clicked, this, &PreviewTopToolbar::OnStartPolling); + connect(ui->pushButton_pip, &QPushButton::clicked, this, &PreviewTopToolbar::OnEnablePip); + +} + +PreviewTopToolbar::~PreviewTopToolbar() +{ + delete ui; +} + +// void PreviewTopToolbar::OnStartPolling() { +// QPushButton *pBtn = (QPushButton*)sender(); +// if (pBtn == ui->pushButton_polling) { +// emit signal_enable_polling(ui->pushButton_polling->isChecked()); +// } +// } + +void PreviewTopToolbar::OnEnablePip() { + QPushButton *pBtn = (QPushButton*)sender(); + if (pBtn == ui->pushButton_pip) { + emit signal_enable_pip(ui->pushButton_pip->isChecked()); + } +} + +void PreviewTopToolbar::OnChangePrevNext() { + QPushButton *pBtn = (QPushButton*)sender(); + PREV_NEXT_TYPE type = PREV_NEXT_TYPE::NEXT; + if (pBtn == ui->pushButton_previous) { + type = PREV_NEXT_TYPE::PREV; + } + else if (pBtn == ui->pushButton_next) { + type = PREV_NEXT_TYPE::NEXT; + if (!ui->pushButton_previous->isEnabled()) { + ui->pushButton_previous->setEnabled(true); + } + } + emit signal_change_prev_next(type); +} + +void PreviewTopToolbar::OnChangeSplit() { + QPushButton *pBtn = (QPushButton*)sender(); + SPLIT_TYPE type = SPLIT_TYPE::MAX; + bool isChecked = pBtn->isChecked(); + if (pBtn == ui->pushButton_1x1) { + type = SPLIT_TYPE::ONE; + NoSignals::setChecked(ui->pushButton_1x1, true); + NoSignals::setChecked(ui->pushButton_2x2, false); + NoSignals::setChecked(ui->pushButton_1x8, false); + NoSignals::setChecked(ui->pushButton_4x4, false); + NoSignals::setChecked(ui->pushButton_6x6, false); + NoSignals::setChecked(ui->pushButton_8x8, false); + ui->pushButton_previous->setEnabled(false); + ui->pushButton_next->setEnabled(true); + } + else if (pBtn == ui->pushButton_2x2) { + type = SPLIT_TYPE::FOUR; + NoSignals::setChecked(ui->pushButton_1x1, false); + NoSignals::setChecked(ui->pushButton_2x2, true); + NoSignals::setChecked(ui->pushButton_1x8, false); + NoSignals::setChecked(ui->pushButton_4x4, false); + NoSignals::setChecked(ui->pushButton_6x6, false); + NoSignals::setChecked(ui->pushButton_8x8, false); + ui->pushButton_previous->setEnabled(false); + ui->pushButton_next->setEnabled(true); + } + else if (pBtn == ui->pushButton_1x8) { + type = SPLIT_TYPE::EIGHT; + NoSignals::setChecked(ui->pushButton_1x1, false); + NoSignals::setChecked(ui->pushButton_2x2, false); + NoSignals::setChecked(ui->pushButton_1x8, true); + NoSignals::setChecked(ui->pushButton_4x4, false); + NoSignals::setChecked(ui->pushButton_6x6, false); + NoSignals::setChecked(ui->pushButton_8x8, false); + ui->pushButton_previous->setEnabled(false); + ui->pushButton_next->setEnabled(true); + } + else if (pBtn == ui->pushButton_4x4) { + type = SPLIT_TYPE::SIXTEEN; + NoSignals::setChecked(ui->pushButton_1x1, false); + NoSignals::setChecked(ui->pushButton_2x2, false); + NoSignals::setChecked(ui->pushButton_1x8, false); + NoSignals::setChecked(ui->pushButton_4x4, true); + NoSignals::setChecked(ui->pushButton_6x6, false); + NoSignals::setChecked(ui->pushButton_8x8, false); + ui->pushButton_previous->setEnabled(false); + ui->pushButton_next->setEnabled(true); + } + else if (pBtn == ui->pushButton_6x6) { + type = SPLIT_TYPE::THIRTYSIX; + NoSignals::setChecked(ui->pushButton_1x1, false); + NoSignals::setChecked(ui->pushButton_2x2, false); + NoSignals::setChecked(ui->pushButton_1x8, false); + NoSignals::setChecked(ui->pushButton_4x4, false); + NoSignals::setChecked(ui->pushButton_6x6, true); + NoSignals::setChecked(ui->pushButton_8x8, false); + ui->pushButton_previous->setEnabled(false); + ui->pushButton_next->setEnabled(true); + } + else if (pBtn == ui->pushButton_8x8) { + type = SPLIT_TYPE::SIXTYFOUR; + NoSignals::setChecked(ui->pushButton_1x1, false); + NoSignals::setChecked(ui->pushButton_2x2, false); + NoSignals::setChecked(ui->pushButton_1x8, false); + NoSignals::setChecked(ui->pushButton_4x4, false); + NoSignals::setChecked(ui->pushButton_6x6, false); + NoSignals::setChecked(ui->pushButton_8x8, true); + ui->pushButton_previous->setEnabled(false); + ui->pushButton_next->setEnabled(false); + } + + if (isChecked){ + emit signal_change_split(type); + } +} + +void PreviewTopToolbar::OnChangeMainSub1() { + emit signal_change_mainsub1(); +} + +void PreviewTopToolbar::hideEvent(QHideEvent *event) { + ui->pushButton_pip->setChecked(false); + return QWidget::hideEvent(event); +} + +void PreviewTopToolbar::CheckPip(bool bChecked) { + ui->pushButton_pip->setChecked(bChecked); +} + +void PreviewTopToolbar::SetCurSplit(SPLIT_TYPE type) { + switch (type) + { + case SPLIT_TYPE::ONE: + ui->pushButton_1x1->clicked(); + break; + case SPLIT_TYPE::FOUR: + ui->pushButton_2x2->clicked(); + break; + case SPLIT_TYPE::EIGHT: + ui->pushButton_1x8->clicked(); + break; + case SPLIT_TYPE::SIXTEEN: + ui->pushButton_4x4->clicked(); + break; + case SPLIT_TYPE::THIRTYSIX: + ui->pushButton_6x6->clicked(); + break; + case SPLIT_TYPE::SIXTYFOUR: + ui->pushButton_8x8->clicked(); + break; + default: + break; + } +} + +void PreviewTopToolbar::SetPrevEnabled(bool bEnabled) +{ + ui->pushButton_previous->setEnabled(bEnabled); +} + +void PreviewTopToolbar::SetNextEnabled(bool bEnabled) +{ + ui->pushButton_next->setEnabled(bEnabled); +} + +void PreviewTopToolbar::EnableWidgets(bool bEnabled) { + ui->pushButton_1x1->setEnabled(bEnabled); + ui->pushButton_2x2->setEnabled(bEnabled); + ui->pushButton_1x8->setEnabled(bEnabled); + ui->pushButton_4x4->setEnabled(bEnabled); + ui->pushButton_6x6->setEnabled(bEnabled); + ui->pushButton_8x8->setEnabled(bEnabled); + ui->pushButton_previous->setEnabled(bEnabled); + ui->pushButton_next->setEnabled(bEnabled); + ui->pushButton_main_sub1->setEnabled(bEnabled); + ui->pushButton_pip->setEnabled(bEnabled); +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewTopToolbar.h b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewTopToolbar.h new file mode 100644 index 0000000..929fdfe --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewTopToolbar.h @@ -0,0 +1,54 @@ +#ifndef PREVIEWTOPTOOLBAR_H +#define PREVIEWTOPTOOLBAR_H + +#include +#include +#include +#include +#include + +#include "ax_base_type.h" + +#include "global/UiGlobalDef.h" + + +QT_BEGIN_NAMESPACE +namespace Ui { class PreviewTopToolbar; } +QT_END_NAMESPACE + +class PreviewTopToolbar : public QWidget +{ + Q_OBJECT + +public: + PreviewTopToolbar(QWidget *parent = nullptr); + ~PreviewTopToolbar(); + void CheckPip(bool bChecked); + void SetCurSplit(SPLIT_TYPE type); + void SetPrevEnabled(bool bEnabled); + void SetNextEnabled(bool bEnabled); + void EnableWidgets(bool bEnabled); + +protected: + virtual void hideEvent(QHideEvent *event) override; + +private slots: + void OnChangeSplit(); + void OnChangePrevNext(); + void OnChangeMainSub1(); + void OnEnablePip(); + // void OnStartPolling(); + +public: + Ui::PreviewTopToolbar *ui; + +signals: + void signal_change_split(SPLIT_TYPE enSpliteType); + void signal_change_mainsub1(void); + void signal_change_prev_next(PREV_NEXT_TYPE enPrevNextType); + void signal_enable_pip(bool bPip); + + // void signal_enable_polling(bool bPolling); + +}; +#endif // PREVIEWTOPTOOLBAR_H diff --git a/app/demo/src/ppl/nvr/gui/ui/preview/PreviewTopToolbar.ui b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewTopToolbar.ui new file mode 100644 index 0000000..7d2e182 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/preview/PreviewTopToolbar.ui @@ -0,0 +1,381 @@ + + + PreviewTopToolbar + + + + 0 + 0 + 870 + 66 + + + + Form + + + + 1 + + + + + + 48 + 48 + + + + + 48 + 48 + + + + Qt::NoFocus + + + + + + + :/img/1x1.png:/img/1x1.png + + + + 28 + 28 + + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + Qt::NoFocus + + + + + + + :/img/2x2.png:/img/2x2.png + + + + 28 + 28 + + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + Qt::NoFocus + + + + + + + :/img/1+7.png:/img/1+7.png + + + + 28 + 28 + + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + Qt::NoFocus + + + + + + + :/img/4x4.png:/img/4x4.png + + + + 28 + 28 + + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + Qt::NoFocus + + + + + + + :/img/4x4.png:/img/4x4.png + + + + 28 + 28 + + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + Qt::NoFocus + + + + + + + :/img/8x8.png:/img/8x8.png + + + + 28 + 28 + + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + Qt::NoFocus + + + + + + + :/img/previous.png:/img/previous.png + + + + 32 + 32 + + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + Qt::NoFocus + + + + + + + :/img/forward.png:/img/forward.png + + + + 32 + 32 + + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + Qt::NoFocus + + + + + + + :/img/poll.png:/img/poll.png + + + + 32 + 32 + + + + true + + + + + + + + 48 + 48 + + + + + 48 + 48 + + + + M/S + + + + 32 + 32 + + + + + + + + + 48 + 48 + + + + + + + + :/img/pip.png:/img/pip.png + + + + 32 + 32 + + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/round/RoundPatrolMain.cpp b/app/demo/src/ppl/nvr/gui/ui/round/RoundPatrolMain.cpp new file mode 100644 index 0000000..d6a69b1 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/round/RoundPatrolMain.cpp @@ -0,0 +1,180 @@ +#include "RoundPatrolMain.h" +#include "ui_RoundPatrolMain.h" +#include +#include +#include +#include + +#include "AppLogApi.h" + +#define UI_TAG "ROUND" + +RoundPatrolMain::RoundPatrolMain(QWidget *parent) + : QWidget(parent) + , ui(new Ui::RoundPatrolMain) +{ + // printf("[%s]***************RoundPatrolMain ++\n", __func__); + ui->setupUi(this); + m_pSplitWidgetMgr = new SplitWidgetMgr(AX_NVR_VIEW_TYPE::POLLING, ui->gridLayout, this); + + m_tcpServer = new QTcpServer(this); + connect(m_tcpServer, SIGNAL(newConnection()), this, SLOT(onNewConnection())); + + this->hide(); + // printf("[%s]***************RoundPatrolMain--\n", __func__); +} + +RoundPatrolMain::~RoundPatrolMain() +{ + if (m_tcpServer->isListening()) { + m_tcpServer->close(); + delete m_tcpServer; + m_tcpServer = nullptr; + } + + delete ui; + delete m_pSplitWidgetMgr; + m_pSplitWidgetMgr = nullptr; +} + +void RoundPatrolMain::onNewConnection() +{ + m_tcpSocket = m_tcpServer->nextPendingConnection(); + + connect(m_tcpSocket, SIGNAL(connected()), this, SLOT(onClientConnected())); + connect(m_tcpSocket, SIGNAL(disconnected()), this, SLOT(onClientDisconnected())); + connect(m_tcpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(onSocketStateChange(QAbstractSocket::SocketState))); + onSocketStateChange(m_tcpSocket->state()); + connect(m_tcpSocket, SIGNAL(readyRead()), this, SLOT(onSocketReadyRead())); +} + + +void RoundPatrolMain::onSocketReadyRead() +{ + auto compare_read = [this](QByteArray read, const char* cmp) { + return (read == QByteArray(cmp)); + }; + SPLIT_TYPE enSplitType = SPLIT_TYPE::ONE; + while (m_tcpSocket->canReadLine()) { + QByteArray strRead = m_tcpSocket->readLine(); + if (compare_read(strRead, ROUND_SPLIT_CLOSE)) { + printf("[SUCCESS] CLose\n"); + m_tcpSocket->deleteLater(); + QApplication::quit(); + } else if (compare_read(strRead, ROUND_SPLIT_FINISH)) { + this->hide(); + printf("[SUCCESS] Finish\n"); + } else if (compare_read(strRead, ROUND_SPLIT_START)) { + this->show(); + m_pSplitWidgetMgr->ChangeSplitWidgets(enSplitType); + m_pSplitWidgetMgr->CalcLayouts(enSplitType, m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, m_nRightMargin, m_nBottomMargin); + printf("[SUCCESS] Start\n"); + } else { + SPLIT_TYPE enSplitTypeTmp = m_pSplitWidgetMgr->GetCurrentSplitType(); + if (compare_read(strRead, ROUND_SPLIT_ONE)) enSplitType = SPLIT_TYPE::ONE; + if (compare_read(strRead, ROUND_SPLIT_FOUR)) enSplitType = SPLIT_TYPE::FOUR; + if (compare_read(strRead, ROUND_SPLIT_EIGHT)) enSplitType = SPLIT_TYPE::EIGHT; + if (compare_read(strRead, ROUND_SPLIT_SIXTEEN)) enSplitType = SPLIT_TYPE::SIXTEEN; + if (compare_read(strRead, ROUND_SPLIT_THIRTYSIX)) enSplitType = SPLIT_TYPE::THIRTYSIX; + m_pSplitWidgetMgr->ChangeSplitWidgets(enSplitType); + m_pSplitWidgetMgr->CalcLayouts(enSplitType, m_nWidth, m_nHeight, + m_nLeftMargin, m_nTopMargin, m_nRightMargin, m_nBottomMargin); + + printf("[SUCCESS] Change layout from %d to %d \n", (int)enSplitTypeTmp, (int)enSplitType); + } + } +} + +void RoundPatrolMain::onClientConnected() +{ + printf("[%s][%d] socket:connect %s %d\n", __func__, __LINE__, + m_tcpSocket->peerAddress().toString().toStdString().c_str(), + m_tcpSocket->peerPort()); + + // printf("[%s]socket:connect %s %d", __func__, + // m_tcpSocket->peerAddress().toString().toStdString().c_str(), + // m_tcpSocket->peerPort()); + + // qDebug() << m_tcpSocket->peerAddress().toString() << QString::number(m_tcpSocket->peerPort()); + +} + +void RoundPatrolMain::onClientDisconnected() +{ + // printf("[%s]socket:disconnect", __func__); + printf("[%s][%d] socket:disconnect\n", __func__, __LINE__); + m_tcpSocket->deleteLater(); +} + +void RoundPatrolMain::onSocketStateChange(QAbstractSocket::SocketState socketState) +{ + switch (socketState) { + case QAbstractSocket::UnconnectedState: + printf("[%s]socket:UnconnectedState\n", __func__); + break; + case QAbstractSocket::HostLookupState: + printf("[%s]socket:HostLookupState\n", __func__); + break; + case QAbstractSocket::ConnectingState: + printf("[%s]socket:ConnectingState\n", __func__); + break; + case QAbstractSocket::ConnectedState: + printf("[%s]socket:ConnectedState\n", __func__); + break; + case QAbstractSocket::BoundState: + printf("[%s]socket:BoundState\n", __func__); + break; + case QAbstractSocket::ClosingState: + printf("[%s]socket:ClosingState\n", __func__); + break; + case QAbstractSocket::ListeningState: + printf("[%s]socket:ListeningState\n", __func__); + break; + default: + printf("[%s]socket:others...\n", __func__); + break; + } +} + +void RoundPatrolMain::resizeEvent(QResizeEvent *event) { + + auto __INIT_FUNC__ = [this]() { + QPoint pt = this->mapToGlobal(QPoint(0, 0)); + m_nLeftMargin = pt.x()%2; + m_nTopMargin = pt.y()%2; + m_nRightMargin = 0; + m_nBottomMargin = 0; + m_nWidth = this->geometry().width() - m_nLeftMargin - m_nRightMargin; + m_nHeight = this->geometry().height() - m_nTopMargin - m_nBottomMargin; + }; + + // printf("[%s]***************resizeEvent\n", __func__); + __INIT_FUNC__(); + QApplication::setOverrideCursor(Qt::BlankCursor); + m_pSplitWidgetMgr->ChangeSplitWidgets(m_pSplitWidgetMgr->GetCurrentSplitType()); + return QWidget::resizeEvent(event); +} + +void RoundPatrolMain::showEvent(QShowEvent *event) { + // printf("[%s]***************showEvent\n", __func__); + return QWidget::showEvent(event); +} + +void RoundPatrolMain::hideEvent(QHideEvent *event) { + // printf("[%s]***************hideEvent\n", __func__); + return QWidget::hideEvent(event); +} + +bool RoundPatrolMain::eventFilter(QObject *watched, QEvent *pEvent) +{ + if (pEvent->type() == QEvent::KeyPress) { + return true; + } + else if (pEvent->type() == QEvent::MouseButtonPress) { + return true; + } + else { + return QObject::eventFilter(watched, pEvent); + } +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/round/RoundPatrolMain.h b/app/demo/src/ppl/nvr/gui/ui/round/RoundPatrolMain.h new file mode 100644 index 0000000..9e1a835 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/round/RoundPatrolMain.h @@ -0,0 +1,57 @@ +#ifndef ROUNDPATROLMAIN_H +#define ROUNDPATROLMAIN_H + +#include +#include +#include + +#include +#include +#include + +#include "ax_base_type.h" +#include "global/UiGlobalDef.h" +#include "utils/SplitWidgetMgr.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class RoundPatrolMain; } +QT_END_NAMESPACE + +class RoundPatrolMain : public QWidget +{ + Q_OBJECT + +public: + RoundPatrolMain(QWidget *parent = nullptr); + ~RoundPatrolMain(); + QTcpServer* m_tcpServer; + +private slots: + void onSocketReadyRead(); + void onClientConnected(); + void onClientDisconnected(); + void onNewConnection(); + void onSocketStateChange(QAbstractSocket::SocketState socketState); + +protected: + virtual bool eventFilter(QObject *watched, QEvent *event) override; + virtual void showEvent(QShowEvent *event) override; + virtual void hideEvent(QHideEvent *event) override; + virtual void resizeEvent(QResizeEvent *event) override; + +private: + Ui::RoundPatrolMain *ui; + SplitWidgetMgr *m_pSplitWidgetMgr = nullptr; + + int m_nLeftMargin = 0; + int m_nTopMargin = 0; + int m_nRightMargin = 0; + int m_nBottomMargin = 0; + int m_nWidth = 0; + int m_nHeight = 0; + int m_nXOffset = 0; + int m_nYOffset = 0; + + QTcpSocket* m_tcpSocket; +}; +#endif // ROUNDPATROLMAIN_H \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/round/RoundPatrolMain.ui b/app/demo/src/ppl/nvr/gui/ui/round/RoundPatrolMain.ui new file mode 100644 index 0000000..ac20e60 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/round/RoundPatrolMain.ui @@ -0,0 +1,43 @@ + + + RoundPatrolMain + + + + 0 + 0 + 706 + 513 + + + + Form + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 4 + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/DlgDevInfo.cpp b/app/demo/src/ppl/nvr/gui/ui/settings/DlgDevInfo.cpp new file mode 100644 index 0000000..18151c2 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/DlgDevInfo.cpp @@ -0,0 +1,123 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "DlgDevInfo.h" +#include "ui_DlgDevInfo.h" +#include "AXNVRFramework.h" +#include "global/UiGlobalDef.h" + +#include + + +DlgDevInfo::DlgDevInfo(bool bEdit, QWidget *parent) + : QDialog(parent) + , ui(new Ui::DlgDevInfo) + , m_bEdit(bEdit) { + ui->setupUi(this); + this->setStyleSheet(CSS_WIDGET_POPUP); +} + +DlgDevInfo::~DlgDevInfo() { + delete ui; +} + +void DlgDevInfo::SetDevInfo(const AX_NVR_DEV_INFO_T &stDevInfo) { + m_stDevInfo = stDevInfo; +} + +void DlgDevInfo::showEvent(QShowEvent *evt) { + // channel id + if (m_bEdit) { + ui->comboBoxChannels->addItem(QString::number(m_stDevInfo.nChannelId + 1)); + } + else { + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (pPreview) { + vector vecFreeIDs = pPreview->GetFreeDevices(); + for (auto id : vecFreeIDs) { + ui->comboBoxChannels->addItem(QString::number(id + 1)); + } + } + } + + ui->comboBoxChannels->setCurrentIndex(0); + // alias + ui->lineEditAlias->setText(QString::fromUtf8((char*)m_stDevInfo.szAlias)); + // type + ui->comboBoxType->setCurrentIndex((int)m_stDevInfo.enType); + // main or sub1 + int nIndex = 0; + if (AX_NVR_CHN_IDX_TYPE::MAIN == m_stDevInfo.enPreviewIndex) { + nIndex = 0; + } else if (AX_NVR_CHN_IDX_TYPE::SUB1 == m_stDevInfo.enPreviewIndex) { + nIndex = 1; + } + ui->comboBoxPreviewIndex->setCurrentIndex(nIndex); + + nIndex = 0; + if (AX_NVR_CHN_IDX_TYPE::MAIN == m_stDevInfo.enPatrolIndex) { + nIndex = 0; + } else if (AX_NVR_CHN_IDX_TYPE::SUB1 == m_stDevInfo.enPatrolIndex) { + nIndex = 1; + } + ui->comboBoxPatrolIndex->setCurrentIndex(nIndex); + + // main rtsp + ui->lineEditRtspUrlMain->setText(QString::fromUtf8((char*)m_stDevInfo.stChnMain.szRtspUrl)); + // ui->checkBoxRecordMain + // sub1 rtsp + ui->lineEditRtspUrlSub1->setText(QString::fromUtf8((char*)m_stDevInfo.stChnSub1.szRtspUrl)); + // ui->checkBoxSub1Record + + QDialog::showEvent(evt); +} + +void DlgDevInfo::accept() +{ + // channel id + m_stDevInfo.nChannelId = ui->comboBoxChannels->currentText().toInt() - 1; + // alias + QByteArray _ba = ui->lineEditAlias->text().toUtf8(); + strncpy((char*)m_stDevInfo.szAlias, _ba.data(), 64 - 1); + m_stDevInfo.szAlias[63] = '\0'; + // type + m_stDevInfo.enType = (AX_NVR_CHN_TYPE)ui->comboBoxType->currentIndex(); + + // main or sub1 + int nIndex = ui->comboBoxPreviewIndex->currentIndex(); + AX_NVR_CHN_IDX_TYPE enIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + if (0 == nIndex) { + enIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + } else if (1 == nIndex) { + enIndex = AX_NVR_CHN_IDX_TYPE::SUB1; + } + m_stDevInfo.enPreviewIndex = enIndex; + + nIndex = ui->comboBoxPatrolIndex->currentIndex(); + enIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + if (0 == nIndex) { + enIndex = AX_NVR_CHN_IDX_TYPE::MAIN; + } else if (1 == nIndex) { + enIndex = AX_NVR_CHN_IDX_TYPE::SUB1; + } + m_stDevInfo.enPatrolIndex = enIndex; + + // primary rtsp + _ba = ui->lineEditRtspUrlMain->text().toUtf8(); + strncpy((char*)m_stDevInfo.stChnMain.szRtspUrl, _ba.data(), 128 - 1); + m_stDevInfo.stChnMain.szRtspUrl[127] = '\0'; + // m_stDevInfo.stChnMain.bRecord + + // secondary rtsp + _ba = ui->lineEditRtspUrlSub1->text().toUtf8(); + strncpy((char*)m_stDevInfo.stChnSub1.szRtspUrl, _ba.data(), 128 - 1); + m_stDevInfo.stChnSub1.szRtspUrl[127] = '\0'; + + done(QDialog::Accepted); +} diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/DlgDevInfo.h b/app/demo/src/ppl/nvr/gui/ui/settings/DlgDevInfo.h new file mode 100644 index 0000000..7272ab3 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/DlgDevInfo.h @@ -0,0 +1,50 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#ifndef DLGDEVINFO_H +#define DLGDEVINFO_H + +#include +#include "AXNVRFrameworkDefine.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class DlgDevInfo; } +QT_END_NAMESPACE + + +class DlgDevInfo : public QDialog +{ + Q_OBJECT + +public: + DlgDevInfo(bool bEdit=false, QWidget *parent = nullptr); + ~DlgDevInfo(); + + const AX_NVR_DEV_INFO_T& GetDeviceInfo() const {return m_stDevInfo;} ; + +protected: + virtual void showEvent(QShowEvent *) override; + +public: + void SetDevInfo(const AX_NVR_DEV_INFO_T &stDevInfo); + +protected slots: + void accept() override; + +// private: +// void InitDlg(); + +private: + Ui::DlgDevInfo *ui; + +private: + AX_NVR_DEV_INFO_T m_stDevInfo; + bool m_bEdit; +}; +#endif // DLGDEVINFO_H diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/DlgDevInfo.ui b/app/demo/src/ppl/nvr/gui/ui/settings/DlgDevInfo.ui new file mode 100644 index 0000000..9c3a2f9 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/DlgDevInfo.ui @@ -0,0 +1,224 @@ + + + DlgDevInfo + + + Qt::WindowModal + + + + 0 + 0 + 400 + 407 + + + + device info + + + + + + true + + + + + + + + + + + + 128 + + + + + + + Type + + + + + + + Alias + + + + + + + Main + + + + + + + Record + + + + + + + + MAIN + + + + + SUB1 + + + + + + + + 128 + + + + + + + 64 + + + + + + + Channel + + + + + + + + + + + COMMON + + + + + FISHEYE + + + + + + + + Sub1 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Preview + + + + + + + Record + + + + + + + Patrol + + + + + + + + MAIN + + + + + SUB1 + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + DlgDevInfo + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + DlgDevInfo + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageBase.h b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageBase.h new file mode 100644 index 0000000..0791623 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageBase.h @@ -0,0 +1,11 @@ +#ifndef SETTINGPAGEBASE_H +#define SETTINGPAGEBASE_H + + +class SettingPageBase +{ +public: + virtual int OnLoad() = 0; + virtual int OnSave() = 0; +}; +#endif // SETTINGPAGEBASE_H diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageDevList.cpp b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageDevList.cpp new file mode 100644 index 0000000..013a637 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageDevList.cpp @@ -0,0 +1,249 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "SettingPageDevList.h" +#include "ui_SettingPageDevList.h" +#include "global/UiGlobalDef.h" + + +#include "AXNVRFramework.h" +#include "AXNVRFrameworkDefine.h" +#include "AppLogApi.h" + +#define TAG "UI_DEVSET" + +SettingPageDevList::SettingPageDevList(QWidget *parent) + : QWidget(parent) + , ui(new Ui::SettingPageDevList) +{ + ui->setupUi(this); + + this->setStyleSheet(CSS_WIDGET_1); + ui->pushButtonAdd->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButtonDel->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButtonEdit->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButtonImport->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButtonExport->setStyleSheet(CSS_PUSHBUTTON); + + ui->tableDevList->setAlternatingRowColors(true); + ui->tableDevList->setStyleSheet(CSS_TABLE); + ui->tableDevList->horizontalHeader()->setStyleSheet(CSS_TABLE_HEAD); + + // ToDo: + ui->pushButtonImport->setVisible(false); + ui->pushButtonExport->setVisible(false); + + ui->tableDevList->setColumnWidth(m_nColChn, 50); + ui->tableDevList->setColumnWidth(m_nColAli, 100); + ui->tableDevList->setColumnWidth(m_nColTyp, 100); + ui->tableDevList->setColumnWidth(m_nColPre, 100); + ui->tableDevList->setColumnWidth(m_nColPat, 100); + ui->tableDevList->setColumnWidth(m_nColMaU, 300); + ui->tableDevList->setColumnWidth(m_nColMaR, 80); + ui->tableDevList->setColumnWidth(m_nColS1U, 300); + ui->tableDevList->setColumnWidth(m_nColS1R, 80); + + ui->tableDevList->setSelectionBehavior(QTableWidget::SelectRows); + ui->tableDevList->setSelectionMode(QAbstractItemView::SingleSelection); + ui->tableDevList->setRowCount(1); + + connect(ui->pushButtonAdd, &QPushButton::clicked, this, &SettingPageDevList::OnAddDevInfo); + connect(ui->pushButtonEdit, &QPushButton::clicked, this, &SettingPageDevList::OnEditDevInfo); + connect(ui->pushButtonDel, &QPushButton::clicked, this, &SettingPageDevList::OnDeleteDevInfo); + connect(ui->tableDevList, &QTableWidget::itemClicked, this, [=](){ m_nCurTableRow = ui->tableDevList->currentRow();}); + connect(&m_watcher, &QFutureWatcher::finished, this, &SettingPageDevList::OnFinished); +} + +SettingPageDevList::~SettingPageDevList() { + delete ui; +} + +void SettingPageDevList::showEvent(QShowEvent *event) { + + ui->tableDevList->setRowCount(0); + m_nCurTableRow = -1; + m_vecDevInfo.clear(); + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (pPreview) { + m_vecDevInfo = pPreview->GetDevices(); + for (auto device : m_vecDevInfo) { + int nRowIndex = ui->tableDevList->rowCount(); + ui->tableDevList->insertRow(nRowIndex); + ui->tableDevList->setItem(nRowIndex, m_nColChn, new QTableWidgetItem(QString::number(device.nChannelId + 1))); + ui->tableDevList->setItem(nRowIndex, m_nColAli, new QTableWidgetItem(QString::fromUtf8((char*)device.szAlias))); + ui->tableDevList->setItem(nRowIndex, m_nColTyp, new QTableWidgetItem((AX_NVR_CHN_TYPE::COMMON == device.enType) ? "COMMON" : "FISHEYE")); + ui->tableDevList->setItem(nRowIndex, m_nColPre, new QTableWidgetItem((AX_NVR_CHN_IDX_TYPE::MAIN == device.enPreviewIndex) ? "MAIN" : "SUB1")); + ui->tableDevList->setItem(nRowIndex, m_nColPat, new QTableWidgetItem((AX_NVR_CHN_IDX_TYPE::MAIN == device.enPatrolIndex) ? "MAIN" : "SUB1")); + ui->tableDevList->setItem(nRowIndex, m_nColMaU, new QTableWidgetItem(QString::fromUtf8((char*)device.stChnMain.szRtspUrl))); + ui->tableDevList->setItem(nRowIndex, m_nColMaR, new QTableWidgetItem((1 == device.stChnMain.bRecord) ? "Enable" : "Disable")); + ui->tableDevList->setItem(nRowIndex, m_nColS1U, new QTableWidgetItem(QString::fromUtf8((char*)device.stChnSub1.szRtspUrl))); + ui->tableDevList->setItem(nRowIndex, m_nColS1R, new QTableWidgetItem((1 == device.stChnSub1.bRecord) ? "Enable" : "Disable")); + } + } + return QWidget::showEvent(event); +} + +void SettingPageDevList::OnFinished() { + + AX_NVR_CHNMGR_RES_T result = m_watcher.result(); + AX_NVR_CHNMGR_RES_TYPE enResultType = result.enResult; + if (enResultType == AX_NVR_CHNMGR_RES_TYPE::DEL_OK) { + int nRowIndex = result.nTableIndex; + // remove device item in table widget + ui->tableDevList->removeRow(nRowIndex); + // reset current row index + m_nCurTableRow = ui->tableDevList->currentRow(); + // remove device item in device info list + m_vecDevInfo.erase(m_vecDevInfo.begin() + nRowIndex); + } + else if (enResultType == AX_NVR_CHNMGR_RES_TYPE::UPD_OK) { + AX_NVR_DEV_INFO_T& stDevInfo = result.stDeviceInfo; + int nRowIndex = result.nTableIndex; + ui->tableDevList->setItem(nRowIndex, m_nColAli, new QTableWidgetItem(QString::fromUtf8((char*)stDevInfo.szAlias))); + ui->tableDevList->setItem(nRowIndex, m_nColTyp, new QTableWidgetItem((AX_NVR_CHN_TYPE::COMMON == stDevInfo.enType) ? "COMMON" : "FISHEYE")); + ui->tableDevList->setItem(nRowIndex, m_nColPre, new QTableWidgetItem((AX_NVR_CHN_IDX_TYPE::MAIN == stDevInfo.enPreviewIndex) ? "MAIN" : "SUB1")); + ui->tableDevList->setItem(nRowIndex, m_nColPat, new QTableWidgetItem((AX_NVR_CHN_IDX_TYPE::MAIN == stDevInfo.enPatrolIndex) ? "MAIN" : "SUB1")); + ui->tableDevList->setItem(nRowIndex, m_nColMaU, new QTableWidgetItem(QString::fromUtf8((char*)stDevInfo.stChnMain.szRtspUrl))); + ui->tableDevList->setItem(nRowIndex, m_nColMaR, new QTableWidgetItem((1 == stDevInfo.stChnMain.bRecord) ? "Enable" : "Disable")); + ui->tableDevList->setItem(nRowIndex, m_nColS1U, new QTableWidgetItem(QString::fromUtf8((char*)stDevInfo.stChnSub1.szRtspUrl))); + ui->tableDevList->setItem(nRowIndex, m_nColS1R, new QTableWidgetItem((1 == stDevInfo.stChnSub1.bRecord) ? "Enable" : "Disable")); + m_vecDevInfo[nRowIndex] = stDevInfo; + } + else if (enResultType == AX_NVR_CHNMGR_RES_TYPE::ADD_OK) { + AX_NVR_DEV_INFO_T& stDevInfo = result.stDeviceInfo; + int nRowIndex = ui->tableDevList->rowCount(); + ui->tableDevList->insertRow(nRowIndex); + ui->tableDevList->setItem(nRowIndex, m_nColChn, new QTableWidgetItem(QString::number(stDevInfo.nChannelId + 1))); + ui->tableDevList->setItem(nRowIndex, m_nColAli, new QTableWidgetItem(QString::fromUtf8((char*)stDevInfo.szAlias))); + ui->tableDevList->setItem(nRowIndex, m_nColTyp, new QTableWidgetItem((AX_NVR_CHN_TYPE::COMMON == stDevInfo.enType) ? "COMMON" : "FISHEYE")); + ui->tableDevList->setItem(nRowIndex, m_nColPre, new QTableWidgetItem((AX_NVR_CHN_IDX_TYPE::MAIN == stDevInfo.enPreviewIndex) ? "MAIN" : "SUB1")); + ui->tableDevList->setItem(nRowIndex, m_nColPat, new QTableWidgetItem((AX_NVR_CHN_IDX_TYPE::MAIN == stDevInfo.enPatrolIndex) ? "MAIN" : "SUB1")); + ui->tableDevList->setItem(nRowIndex, m_nColMaU, new QTableWidgetItem(QString::fromUtf8((char*)stDevInfo.stChnMain.szRtspUrl))); + ui->tableDevList->setItem(nRowIndex, m_nColMaR, new QTableWidgetItem((1 == stDevInfo.stChnMain.bRecord) ? "Enable" : "Disable")); + ui->tableDevList->setItem(nRowIndex, m_nColS1U, new QTableWidgetItem(QString::fromUtf8((char*)stDevInfo.stChnSub1.szRtspUrl))); + ui->tableDevList->setItem(nRowIndex, m_nColS1R, new QTableWidgetItem((1 == stDevInfo.stChnSub1.bRecord) ? "Enable" : "Disable")); + m_vecDevInfo.push_back(stDevInfo); + } +} + +void SettingPageDevList::OnAddDevInfo() { + do { + if (!m_watcher.isFinished()) { + LOG_M_D(TAG, "[%s][0x%x] Still Active.", __func__, QThread::currentThread()); + break; + } + + DlgDevInfo dlg; + if (QDialog::Accepted == dlg.exec()) { + AX_NVR_CHNMGR_RES_T stResult; + stResult.stDeviceInfo = dlg.GetDeviceInfo(); + + QFutureInterface interface; + interface.reportStarted(); + m_watcher.setFuture(interface.future()); + std::thread thread([this, interface, stResult]() mutable { + + stResult.enResult = AX_NVR_CHNMGR_RES_TYPE::ADD_ERR; + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (pPreview) { + if (pPreview->InsertDevice(stResult.stDeviceInfo)) { + stResult.enResult = AX_NVR_CHNMGR_RES_TYPE::ADD_OK; + } + } + + interface.reportResult(stResult); + interface.reportFinished(); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + } + } while(0); +} + +void SettingPageDevList::OnEditDevInfo() +{ + do { + if (m_nCurTableRow < 0) break; + + if (!m_watcher.isFinished()) { + LOG_M_D(TAG, "[%s][0x%x] Still Active.", __func__, QThread::currentThread()); + break; + } + + DlgDevInfo dlg(true); // modify mode, set true + AX_NVR_DEV_INFO_T& stDevInfo = m_vecDevInfo[m_nCurTableRow]; + dlg.SetDevInfo(stDevInfo); + if (QDialog::Accepted == dlg.exec()) { + AX_NVR_CHNMGR_RES_T stResult; + stResult.stDeviceInfo = dlg.GetDeviceInfo(); + stResult.nTableIndex = m_nCurTableRow; + + QFutureInterface interface; + interface.reportStarted(); + m_watcher.setFuture(interface.future()); + + std::thread thread([this, interface, stResult]() mutable { + + stResult.enResult = AX_NVR_CHNMGR_RES_TYPE::UPD_ERR; + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (pPreview) { + if (!pPreview->UpdateDevice(stResult.stDeviceInfo)) { + stResult.enResult = AX_NVR_CHNMGR_RES_TYPE::UPD_OK; + } + } + interface.reportResult(stResult); + interface.reportFinished(); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + } + + } while(0); +} + +void SettingPageDevList::OnDeleteDevInfo() +{ + do { + if (m_nCurTableRow < 0) break; + + if (!m_watcher.isFinished()) { + LOG_M_D(TAG, "[%s][0x%x] Still Active.", __func__, QThread::currentThread()); + break; + } + + AX_NVR_CHNMGR_RES_T stResult; + stResult.nTableIndex = m_nCurTableRow; + + vector vecDeviceIds; + vecDeviceIds.emplace_back(m_vecDevInfo[m_nCurTableRow].nChannelId); + + QFutureInterface interface; + interface.reportStarted(); + m_watcher.setFuture(interface.future()); + + std::thread thread([this, interface, stResult, vecDeviceIds]() mutable { + + stResult.enResult = AX_NVR_CHNMGR_RES_TYPE::DEL_ERR; + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (pPreview) { + if (!pPreview->DeleteDevice(vecDeviceIds)) { + stResult.enResult = AX_NVR_CHNMGR_RES_TYPE::DEL_OK; + } + } + interface.reportResult(stResult); + interface.reportFinished(); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + + } while(0); +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageDevList.h b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageDevList.h new file mode 100644 index 0000000..74a1d5a --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageDevList.h @@ -0,0 +1,97 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#ifndef SETTINGPAGEDEVLIST_H +#define SETTINGPAGEDEVLIST_H +#include +#include +#include +#include +#include + +#include "SettingPageBase.h" +#include "DlgDevInfo.h" + + +QT_BEGIN_NAMESPACE +namespace Ui { class SettingPageDevList; } +QT_END_NAMESPACE + +enum class AX_NVR_CHNMGR_TABLE_COL { + CHANNEL = 0, + ALIAS, + TYPE, + PREVIEW, + PATROL, + MAINURL, + MAINRECORD, + SUB1URL, + SUB1RECORD, +}; + +enum class AX_NVR_CHNMGR_RES_TYPE { + UNKONW = 0x00, + ADD_ERR = 0x10, + DEL_ERR = 0x20, + UPD_ERR = 0x30, + ADD_OK = 0x11, + DEL_OK = 0x21, + UPD_OK = 0x31, +}; + +typedef struct _AX_NVR_CHNMGR_RES_T { + AX_NVR_CHNMGR_RES_TYPE enResult; + int nTableIndex; + AX_NVR_DEV_INFO_T stDeviceInfo; + + _AX_NVR_CHNMGR_RES_T() { + enResult = AX_NVR_CHNMGR_RES_TYPE::UNKONW; + nTableIndex = -1; + //memset(&stDeviceInfo, 0x0, sizeof(AX_NVR_DEV_INFO_T)); + } +} AX_NVR_CHNMGR_RES_T; + +class SettingPageDevList : public QWidget, public SettingPageBase +{ + Q_OBJECT + +public: + SettingPageDevList(QWidget *parent = nullptr); + ~SettingPageDevList(); + +protected: + virtual void showEvent(QShowEvent *event) override; + + int m_nCurTableRow = -1; + std::vector m_vecDevInfo; + QFutureWatcher m_watcher; + +private slots: + void OnAddDevInfo(); + void OnEditDevInfo(); + void OnDeleteDevInfo(); + void OnFinished(); + +public: + virtual int OnLoad() override {return 0;}; + virtual int OnSave() override {return 0;}; + +private: + Ui::SettingPageDevList *ui; + int m_nColChn = (int)AX_NVR_CHNMGR_TABLE_COL::CHANNEL; + int m_nColAli = (int)AX_NVR_CHNMGR_TABLE_COL::ALIAS; + int m_nColTyp = (int)AX_NVR_CHNMGR_TABLE_COL::TYPE; + int m_nColPre = (int)AX_NVR_CHNMGR_TABLE_COL::PREVIEW; + int m_nColPat = (int)AX_NVR_CHNMGR_TABLE_COL::PATROL; + int m_nColMaU = (int)AX_NVR_CHNMGR_TABLE_COL::MAINURL; + int m_nColMaR = (int)AX_NVR_CHNMGR_TABLE_COL::MAINRECORD; + int m_nColS1U = (int)AX_NVR_CHNMGR_TABLE_COL::SUB1URL; + int m_nColS1R = (int)AX_NVR_CHNMGR_TABLE_COL::SUB1RECORD; +}; +#endif // SETTINGPAGEDEVLIST_H \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageDevList.ui b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageDevList.ui new file mode 100644 index 0000000..a6bf9fc --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageDevList.ui @@ -0,0 +1,156 @@ + + + SettingPageDevList + + + + 0 + 0 + 899 + 630 + + + + device list + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + Add + + + + + + + Edit + + + + + + + Delete + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Import + + + + + + + Export + + + + + + + + + QFrame::Plain + + + QAbstractItemView::NoEditTriggers + + + QAbstractItemView::SingleSelection + + + true + + + false + + + + Chn + + + + + Alias + + + + + Type + + + + + Preview + + + + + Patrol + + + + + Main Rtsp + + + + + Record + + + + + Sub1 Rtsp + + + + + Record + + + + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageNetwork.cpp b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageNetwork.cpp new file mode 100644 index 0000000..da624f9 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageNetwork.cpp @@ -0,0 +1,24 @@ +#include "SettingPageNetwork.h" +#include "ui_SettingPageNetwork.h" + +SettingPageNetwork::SettingPageNetwork(QWidget *parent) + : QWidget(parent) + , ui(new Ui::SettingPageNetwork) +{ + ui->setupUi(this); +} + +SettingPageNetwork::~SettingPageNetwork() +{ + delete ui; +} + +int SettingPageNetwork::OnLoad() +{ + return 0; +} + +int SettingPageNetwork::OnSave() +{ + return 0; +} diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageNetwork.h b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageNetwork.h new file mode 100644 index 0000000..0e1243f --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageNetwork.h @@ -0,0 +1,28 @@ +#ifndef SETTINGPAGENETWORK_H +#define SETTINGPAGENETWORK_H + +#include + +#include "SettingPageBase.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class SettingPageNetwork; } +QT_END_NAMESPACE + +class SettingPageNetwork : public QWidget, public SettingPageBase +{ + Q_OBJECT + +public: + SettingPageNetwork(QWidget *parent = nullptr); + ~SettingPageNetwork(); + +public: + virtual int OnLoad(); + virtual int OnSave(); + +private: + Ui::SettingPageNetwork *ui; + +}; +#endif // SETTINGPAGENETWORK_H diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageNetwork.ui b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageNetwork.ui new file mode 100644 index 0000000..8d17b8b --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageNetwork.ui @@ -0,0 +1,19 @@ + + + SettingPageNetwork + + + + 0 + 0 + 1255 + 815 + + + + Form + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageRoundPatrol.cpp b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageRoundPatrol.cpp new file mode 100644 index 0000000..6c5715f --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageRoundPatrol.cpp @@ -0,0 +1,14 @@ +#include "SettingPageRoundPatrol.h" +#include "ui_SettingPageRoundPatrol.h" + +SettingPageRoundPatrol::SettingPageRoundPatrol(QWidget *parent) + : QWidget(parent) + , ui(new Ui::SettingPageRoundPatrol) +{ + ui->setupUi(this); +} + +SettingPageRoundPatrol::~SettingPageRoundPatrol() +{ + delete ui; +} diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageRoundPatrol.h b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageRoundPatrol.h new file mode 100644 index 0000000..8872371 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageRoundPatrol.h @@ -0,0 +1,28 @@ +#ifndef SETTINGPAGEROUNDPATROL_H +#define SETTINGPAGEROUNDPATROL_H + +#include + +#include "SettingPageBase.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class SettingPageRoundPatrol; } +QT_END_NAMESPACE + +class SettingPageRoundPatrol : public QWidget, public SettingPageBase +{ + Q_OBJECT + +public: + SettingPageRoundPatrol(QWidget *parent = nullptr); + ~SettingPageRoundPatrol(); + +public: + virtual int OnLoad() override {return 0;}; + virtual int OnSave() override {return 0;}; + +private: + Ui::SettingPageRoundPatrol *ui; + +}; +#endif // SETTINGPAGEROUNDPATROL_H diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageRoundPatrol.ui b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageRoundPatrol.ui new file mode 100644 index 0000000..672f6df --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageRoundPatrol.ui @@ -0,0 +1,20 @@ + + + SettingPageRoundPatrol + + + + 0 + 0 + 897 + 531 + + + + Form + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageStorage.cpp b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageStorage.cpp new file mode 100644 index 0000000..689457e --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageStorage.cpp @@ -0,0 +1,24 @@ +#include "SettingPageStorage.h" +#include "ui_SettingPageStorage.h" + +SettingPageStorage::SettingPageStorage(QWidget *parent) + : QWidget(parent) + , ui(new Ui::SettingPageStorage) +{ + ui->setupUi(this); +} + +SettingPageStorage::~SettingPageStorage() +{ + delete ui; +} + +int SettingPageStorage::OnLoad() +{ + return 0; +} + +int SettingPageStorage::OnSave() +{ + return 0; +} diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageStorage.h b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageStorage.h new file mode 100644 index 0000000..4c21617 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageStorage.h @@ -0,0 +1,28 @@ +#ifndef SETTINGPAGESTORAGE_H +#define SETTINGPAGESTORAGE_H + +#include + +#include "SettingPageBase.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class SettingPageStorage; } +QT_END_NAMESPACE + +class SettingPageStorage : public QWidget, public SettingPageBase +{ + Q_OBJECT + +public: + SettingPageStorage(QWidget *parent = nullptr); + ~SettingPageStorage(); + +public: + virtual int OnLoad(); + virtual int OnSave(); + +private: + Ui::SettingPageStorage *ui; + +}; +#endif // SETTINGPAGESTORAGE_H diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageStorage.ui b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageStorage.ui new file mode 100644 index 0000000..a6df004 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageStorage.ui @@ -0,0 +1,19 @@ + + + SettingPageStorage + + + + 0 + 0 + 1255 + 815 + + + + Form + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageSystem.cpp b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageSystem.cpp new file mode 100644 index 0000000..1cefbcb --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageSystem.cpp @@ -0,0 +1,28 @@ +#include "SettingPageSystem.h" +#include "ui_SettingPageSystem.h" +#include "global/UiGlobalDef.h" + + +SettingPageSystem::SettingPageSystem(QWidget *parent) + : QWidget(parent) + , ui(new Ui::SettingPageSystem) +{ + ui->setupUi(this); + this->setStyleSheet(CSS_WIDGET); + ui->tabWidget->setStyleSheet(CSS_TABWIDGET); +} + +SettingPageSystem::~SettingPageSystem() +{ + delete ui; +} + +int SettingPageSystem::OnLoad() +{ + return 0; +} + +int SettingPageSystem::OnSave() +{ + return 0; +} diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageSystem.h b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageSystem.h new file mode 100644 index 0000000..542e0e3 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageSystem.h @@ -0,0 +1,28 @@ +#ifndef SETTINGPAGESYSTEM_H +#define SETTINGPAGESYSTEM_H + +#include + +#include "SettingPageBase.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class SettingPageSystem; } +QT_END_NAMESPACE + +class SettingPageSystem : public QWidget, public SettingPageBase +{ + Q_OBJECT + +public: + SettingPageSystem(QWidget *parent = nullptr); + ~SettingPageSystem(); + +public: + virtual int OnLoad(); + virtual int OnSave(); + +private: + Ui::SettingPageSystem *ui; + +}; +#endif // SETTINGPAGESYSTEM_H diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageSystem.ui b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageSystem.ui new file mode 100644 index 0000000..395aa2c --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingPageSystem.ui @@ -0,0 +1,225 @@ + + + SettingPageSystem + + + + 0 + 0 + 675 + 360 + + + + Form + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + 0 + + + + RoundPatrol + + + + + + + + Enable + + + + + + + + SPLIT + + + + + CHANNELS + + + + + BOTH + + + + + + + + Type + + + + + + + Interval + + + + + + + 5 + + + 120 + + + + + + + + + + + + + + Grid + + + + + + + + 1x1 + + + + :/img/1x1.png:/img/1x1.png + + + + + 2x2 + + + + :/img/2x2.png:/img/2x2.png + + + + + 1+7 + + + + :/img/1+7.png:/img/1+7.png + + + + + 4x4 + + + + :/img/4x4.png:/img/4x4.png + + + + + + + + + + Qt::Vertical + + + + 20 + 241 + + + + + + + + + + + + Detect + + + + + + + + + + + + + + + Enable + + + + + + + + + Qt::Vertical + + + + 20 + 293 + + + + + + + + + + + + System + + + + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingsLeftToolbar.cpp b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsLeftToolbar.cpp new file mode 100644 index 0000000..e659807 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsLeftToolbar.cpp @@ -0,0 +1,49 @@ +#include "SettingsLeftToolbar.h" +#include "ui_SettingsLeftToolbar.h" +#include "global/UiGlobalDef.h" + +SettingsLeftToolbar::SettingsLeftToolbar(QWidget *parent) + : QWidget(parent) + , ui(new Ui::SettingsLeftToolbar) +{ + ui->setupUi(this); + ui->pushButtonSystem->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButtonDevice->setStyleSheet(CSS_PUSHBUTTON); + ui->pushButtonRecord->setStyleSheet(CSS_PUSHBUTTON); + + connect(ui->pushButtonSystem, &QPushButton::clicked, [=](){ emit signal_change_page((int)CONFIG_TYPE::SYSTEM); }); + connect(ui->pushButtonDevice, &QPushButton::clicked, [=](){ emit signal_change_page((int)CONFIG_TYPE::DEVICE); }); + connect(ui->pushButtonRecord, &QPushButton::clicked, [=](){ emit signal_change_page((int)CONFIG_TYPE::RECORD); }); +} + +SettingsLeftToolbar::~SettingsLeftToolbar() +{ + delete ui; + // delete m_ItemModel; +} + +// void SettingsLeftToolbar::InitPageList() +// { +// m_ItemModel = new QStandardItemModel(this); +// QStringList strList; +// strList.append("系统配置"); +// strList.append("网络配置"); +// strList.append("通道管理"); +// strList.append("录像管理"); + +// int nCount = strList.size(); +// for(int i = 0; i < nCount; i++) +// { +// QString string = static_cast(strList.at(i)); +// QStandardItem *item = new QStandardItem(string); +// m_ItemModel->appendRow(item); +// } + +// ui->listView->setModel(m_ItemModel); +// connect(ui->listView, SIGNAL(clicked(QModelIndex)), this, SLOT(OnPageIndexChange(QModelIndex))); +// } + +// void SettingsLeftToolbar::OnPageIndexChange(int index) +// { +// emit signal_change_page(index); +// } diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingsLeftToolbar.h b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsLeftToolbar.h new file mode 100644 index 0000000..7cf5e49 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsLeftToolbar.h @@ -0,0 +1,35 @@ +#ifndef SETTINGSLEFTTOOLBAR_H +#define SETTINGSLEFTTOOLBAR_H + +#include +#include +#include +#include + + +QT_BEGIN_NAMESPACE +namespace Ui { class SettingsLeftToolbar; } +QT_END_NAMESPACE + +class SettingsLeftToolbar : public QWidget +{ + Q_OBJECT + +public: + SettingsLeftToolbar(QWidget *parent = nullptr); + ~SettingsLeftToolbar(); + + // void InitPageList(); + +private: + Ui::SettingsLeftToolbar *ui; + // QStandardItemModel *m_ItemModel; + + +// private slots: +// void OnPageIndexChange(int index); + +signals: + void signal_change_page(int page_index); +}; +#endif // SETTINGSLEFTTOOLBAR_H diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingsLeftToolbar.ui b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsLeftToolbar.ui new file mode 100644 index 0000000..6f37edf --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsLeftToolbar.ui @@ -0,0 +1,73 @@ + + + SettingsLeftToolbar + + + + 0 + 0 + 182 + 631 + + + + Form + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 2 + + + + + System Config + + + + + + + Device Config + + + + + + + Record Config + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingsMain.cpp b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsMain.cpp new file mode 100644 index 0000000..f93bce8 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsMain.cpp @@ -0,0 +1,62 @@ +#include "SettingsMain.h" +#include "ui_SettingsMain.h" +#include "global/UiGlobalDef.h" + +SettingsMain::SettingsMain(QWidget *parent) + : QWidget(parent) + , ui(new Ui::SettingsMain) + , m_pSettingPageSystem(new SettingPageSystem) + , m_pSettingPageDevList(new SettingPageDevList) + , m_pSettingPageStorage(new SettingPageStorage) +{ + ui->setupUi(this); + this->setStyleSheet(CSS_WIDGET); + ui->pushButtonSave->setStyleSheet(CSS_PUSHBUTTON); + + ui->verticalLayout_system->addWidget(m_pSettingPageSystem); + ui->verticalLayout_dev_list->addWidget(m_pSettingPageDevList); + ui->verticalLayout_storage->addWidget(m_pSettingPageStorage); + + connect(ui->pushButtonSave, &QPushButton::clicked, [&]() { + if (m_nCurPageIndex < (int)m_vecPage.size()) { + int ret = m_vecPage[m_nCurPageIndex]->OnSave(); + if (0 != ret) { + // TODO: error message + } + } + }); + + m_vecPage.clear(); + m_vecPage.push_back(m_pSettingPageSystem); + m_vecPage.push_back(m_pSettingPageDevList); + m_vecPage.push_back(m_pSettingPageStorage); +} + +SettingsMain::~SettingsMain() +{ + delete ui; + DEL_PTR(m_pSettingPageSystem); + DEL_PTR(m_pSettingPageDevList); + DEL_PTR(m_pSettingPageStorage); +} + +void SettingsMain::OnChangePage(int page_index) +{ + m_nCurPageIndex = page_index; + ui->stackedWidget->setCurrentIndex(m_nCurPageIndex); + + if (m_nCurPageIndex < (int)m_vecPage.size()) { + int ret = m_vecPage[m_nCurPageIndex]->OnLoad(); + if (0 != ret) { + // TODO: error message + } + } +} + +void SettingsMain::showEvent(QShowEvent *evt) +{ + Q_UNUSED(evt) + if (-1 == m_nCurPageIndex) { + OnChangePage(0); + } +} diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingsMain.h b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsMain.h new file mode 100644 index 0000000..211b3dd --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsMain.h @@ -0,0 +1,40 @@ +#ifndef SETTINGSMAIN_H +#define SETTINGSMAIN_H + +#include +#include + +#include "SettingPageSystem.h" +#include "SettingPageNetwork.h" +#include "SettingPageDevList.h" +#include "SettingPageStorage.h" + + +QT_BEGIN_NAMESPACE +namespace Ui { class SettingsMain; } +QT_END_NAMESPACE + +class SettingsMain : public QWidget +{ + Q_OBJECT + +public: + SettingsMain(QWidget *parent = nullptr); + ~SettingsMain(); + + virtual void showEvent(QShowEvent *) override; + +public slots: + void OnChangePage(int page_index); + +private: + Ui::SettingsMain *ui; + + int m_nCurPageIndex{-1}; + QVector m_vecPage; + + SettingPageSystem *m_pSettingPageSystem; + SettingPageDevList *m_pSettingPageDevList; + SettingPageStorage *m_pSettingPageStorage; +}; +#endif // SETTINGSMAIN_H diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingsMain.ui b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsMain.ui new file mode 100644 index 0000000..ae98001 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsMain.ui @@ -0,0 +1,116 @@ + + + SettingsMain + + + + 0 + 0 + 703 + 480 + + + + Form + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + 150 + 30 + + + + Save + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 4 + + + + + + + + + + + + + + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingsTopToolbar.cpp b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsTopToolbar.cpp new file mode 100644 index 0000000..6792f9a --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsTopToolbar.cpp @@ -0,0 +1,15 @@ +#include "SettingsTopToolbar.h" +#include "ui_SettingsTopToolbar.h" + +SettingsTopToolbar::SettingsTopToolbar(QWidget *parent) + : QWidget(parent) + , ui(new Ui::SettingsTopToolbar) +{ + ui->setupUi(this); +} + +SettingsTopToolbar::~SettingsTopToolbar() +{ + delete ui; +} + diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingsTopToolbar.h b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsTopToolbar.h new file mode 100644 index 0000000..130a6cc --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsTopToolbar.h @@ -0,0 +1,21 @@ +#ifndef SETTINGSTOPTOOLBAR_H +#define SETTINGSTOPTOOLBAR_H + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class SettingsTopToolbar; } +QT_END_NAMESPACE + +class SettingsTopToolbar : public QWidget +{ + Q_OBJECT + +public: + SettingsTopToolbar(QWidget *parent = nullptr); + ~SettingsTopToolbar(); + +private: + Ui::SettingsTopToolbar *ui; +}; +#endif // SETTINGSTOPTOOLBAR_H diff --git a/app/demo/src/ppl/nvr/gui/ui/settings/SettingsTopToolbar.ui b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsTopToolbar.ui new file mode 100644 index 0000000..8e5cc49 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/settings/SettingsTopToolbar.ui @@ -0,0 +1,20 @@ + + + SettingsTopToolbar + + + + 0 + 0 + 706 + 69 + + + + Form + + + + + + diff --git a/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_base.cpp b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_base.cpp new file mode 100644 index 0000000..e5bb98f --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_base.cpp @@ -0,0 +1,168 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "ts_base.hpp" +#include "ElapsedTimer.hpp" + +#define TAG "TS_BASE" + + +AX_VOID CTestSuiteBase::RegisterWidget(const AX_CHAR* strName, QWidget* pWidget) { + m_mapWidgets[strName] = pWidget; +}; + +QWidget* CTestSuiteBase::GetWidget(const AX_CHAR* strName) { + std::map::iterator itFinder = m_mapWidgets.find(strName); + if (itFinder != m_mapWidgets.end()) { + return itFinder->second; + } + + return nullptr; +}; + +AX_BOOL CTestSuiteBase::Enter() { + QPushButton* pWidget = (QPushButton*)GetWidget("BtnEntry"); + if (pWidget) { + LOG_M_C(TAG, "Enter through button <%s>.", pWidget->objectName().toStdString().c_str()); + + ResetAction(pWidget->objectName().toStdString().c_str()); + + TS_OPERATION_INFO_T tOprInfo; + tOprInfo.target = pWidget; + tOprInfo.type = TS_OPERATION_TYPE::TS_OPR_BTN_CLICK; + tOprInfo.args.bBtnChecked = true; + EmitUIOprSignal(tOprInfo); + + CElapsedTimer::GetInstance()->mSleep(1000); + return AX_TRUE; + } + + return AX_FALSE; +} + +AX_BOOL CTestSuiteBase::CheckEntry() { + AX_BOOL bRet = AX_TRUE; + QPushButton* pWidget = (QPushButton*)GetWidget("BtnEntry"); + if (pWidget) { + bRet = pWidget->isChecked() ? AX_TRUE : AX_FALSE; + if (!bRet) { + LOG_MM_E(m_strModuleName.c_str(), "BtnEntry(%s) is not checked, ignore current case."); + } + return bRet; + } else { + LOG_MM_E(m_strModuleName.c_str(), "Can not find BtnEntry(%s), ignore current case."); + } + + return AX_FALSE; +} + +AX_VOID CTestSuiteBase::SetModuleConfig(const AX_NVR_TS_MODULE_INFO_T& tConfig) { + m_tModuleConfig = tConfig; +} + +AX_NVR_TS_MODULE_INFO_PTR CTestSuiteBase::GetModuleConfig() { + return &m_tModuleConfig; +} + +AX_VOID CTestSuiteBase::ActionToggleBtnClick(QPushButton* pBtn, AX_S32 nWaitTick /*= 1000*/, const string& strActionName /*= ""*/, AX_BOOL bFeedbackRequired /*= AX_FALSE*/) { + if (nullptr == pBtn) { + return; + } + + LOG_M_C(m_strModuleName.c_str(), "Action<%s> triggered", strActionName.empty() ? pBtn->objectName().toStdString().c_str() : strActionName.c_str()); + + ResetAction(strActionName.empty() ? pBtn->objectName().toStdString() : strActionName, bFeedbackRequired); + + TS_OPERATION_INFO_T tOprInfo; + tOprInfo.target = pBtn; + tOprInfo.type = TS_OPERATION_TYPE::TS_OPR_TOGGLE_BTN_CLICK; + EmitUIOprSignal(tOprInfo); + + CElapsedTimer::GetInstance()->mSleep(nWaitTick); +} + +AX_VOID CTestSuiteBase::ActionBtnClick(QPushButton* pBtn, AX_S32 nWaitTick /*= 1000*/, const string& strActionName /*= ""*/, AX_BOOL bFeedbackRequired /*= AX_FALSE*/) { + if (nullptr == pBtn) { + return; + } + + LOG_M_C(m_strModuleName.c_str(), "Action<%s> triggered", strActionName.empty() ? pBtn->objectName().toStdString().c_str() : strActionName.c_str()); + + ResetAction(strActionName.empty() ? pBtn->objectName().toStdString() : strActionName, bFeedbackRequired); + + TS_OPERATION_INFO_T tOprInfo; + tOprInfo.target = pBtn; + tOprInfo.type = TS_OPERATION_TYPE::TS_OPR_BTN_CLICK; + tOprInfo.args.bBtnChecked = true; + EmitUIOprSignal(tOprInfo); + + CElapsedTimer::GetInstance()->mSleep(nWaitTick); +} + +AX_VOID CTestSuiteBase::ActionTabClick(QTabWidget* pTab, AX_U32 nIndex, AX_S32 nWaitTick /*= 0*/, const string& strActionName /*= ""*/, AX_BOOL bFeedbackRequired /*= AX_FALSE*/) { + if (nullptr == pTab) { + return; + } + + AX_U32 nTabCount = pTab->count(); + if (nIndex >= nTabCount) { + LOG_M_E(m_strModuleName.c_str(), "Tab index %d out of range (0 ~ %d)", nIndex, nTabCount); + return; + } + + LOG_M_C(m_strModuleName.c_str(), "Action<%s> triggered", strActionName.empty() ? pTab->tabText(nIndex).toStdString().c_str() : strActionName.c_str()); + + ResetAction(strActionName.empty() ? pTab->tabText(nIndex).toStdString().c_str() : strActionName, bFeedbackRequired); + + TS_OPERATION_INFO_T tOprInfo; + tOprInfo.target = pTab; + tOprInfo.type = TS_OPERATION_TYPE::TS_OPR_TAB_SELECT; + tOprInfo.args.nTabSelIndex = nIndex; + EmitUIOprSignal(tOprInfo); + + CElapsedTimer::GetInstance()->mSleep(nWaitTick); +} + +AX_VOID CTestSuiteBase::ActionScaleLabelDbClicked(ScaleLabel* pLabel, AX_S32 nWaitTick /*= 0*/, const string& strActionName /*= ""*/, AX_BOOL bFeedbackRequired /*= AX_FALSE*/) { + if (nullptr == pLabel) { + return; + } + + LOG_M_C(m_strModuleName.c_str(), "Action<%s> triggered", strActionName.empty() ? pLabel->text().toStdString().c_str() : strActionName.c_str()); + + ResetAction(strActionName.empty() ? pLabel->text().toStdString().c_str() : strActionName, bFeedbackRequired); + + /* pDbClickEvent would be cleaned by QT itself */ + QMouseEvent* pDbClickEvent = new QMouseEvent(QEvent::MouseButtonDblClick, QPoint(0, 0), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); + QApplication::postEvent(pLabel, pDbClickEvent); + CElapsedTimer::GetInstance()->mSleep(nWaitTick); +} + +AX_VOID CTestSuiteBase::ActionCalendarDateSelected(QCalendarWidget* pCalendar, QDate& date, AX_S32 nWaitTick /*= 0*/, const string& strActionName /*= ""*/, AX_BOOL bFeedbackRequired /*= AX_FALSE*/) { + if (nullptr == pCalendar) { + return; + } + + AX_CHAR szAction[32] = {0}; + sprintf(szAction, "change date(%s)", date.toString().toStdString().c_str()); + + LOG_M_C(m_strModuleName.c_str(), "Action<%s> triggered", strActionName.empty() ? szAction : strActionName.c_str()); + ResetAction(strActionName.empty() ? szAction : strActionName, bFeedbackRequired); + + TS_OPERATION_INFO_T tOprInfo; + tOprInfo.target = pCalendar; + tOprInfo.type = TS_OPERATION_TYPE::TS_OPR_CALENDAR_SELECT; + tOprInfo.args.calendarSelDate = date; + EmitUIOprSignal(tOprInfo); + + pCalendar->selectionChanged(); + + CElapsedTimer::GetInstance()->mSleep(nWaitTick); +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_base.hpp b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_base.hpp new file mode 100644 index 0000000..8269bd2 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_base.hpp @@ -0,0 +1,115 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include +#include "TestSuiteConfigParser.h" +#include "NVRConfigParser.h" +#include "ax_base_type.h" +#include "AppLogApi.h" +#include +#include +#include +#include +#include +#include "utils/ScaleLabel.h" + +#define TS_DEFAULT_REPEAT_COUNT (1) +#define TS_DEFAULT_OPERATION_INTERFAL (5000) +#define TS_RECOVER_BTN_1 "RecoverBtn_1" +#define TS_RECOVER_BTN_2 "RecoverBtn_2" + +enum class TS_ACTION_TYPE { + TS_ACTION_TYPE_BUTTON = 0, + TS_ACTION_TYPE_TOGGLE_BUTTON, + TS_ACTION_TYPE_TAB, + TS_ACTION_TYPE_SCALE_LABEL, + TS_ACTION_TYPE_CALENDAR, +}; + +enum class TS_OPERATION_TYPE { + TS_OPR_BTN_CLICK = 0, + TS_OPR_TOGGLE_BTN_CLICK, + TS_OPR_TAB_SELECT, + TS_OPR_CALENDAR_SELECT, +}; + + +typedef struct TS_OPERATION_INFO { + TS_OPERATION_TYPE type; + QWidget* target {nullptr}; + + union _TS_OPERATION_ARGS { + bool bBtnChecked; + AX_U32 nTabSelIndex; + QDate calendarSelDate; + + _TS_OPERATION_ARGS() {}; + } args; +} TS_OPERATION_INFO_T; + +typedef std::tuple CTupleAction; + +class CTestSuiteBase +{ +public: + virtual AX_BOOL Start() = 0; + virtual AX_VOID Stop() { m_bRunning = AX_FALSE; }; + virtual AX_VOID ActionBtnClick(QPushButton* pBtn, AX_S32 nWaitTick = 1000, const string& strActionName = "", AX_BOOL bFeedbackRequired = AX_FALSE); + virtual AX_VOID ActionToggleBtnClick(QPushButton* pBtn, AX_S32 nWaitTick = 1000, const string& strActionName = "", AX_BOOL bFeedbackRequired = AX_FALSE); + virtual AX_VOID ActionTabClick(QTabWidget* pTab, AX_U32 nIndex, AX_S32 nWaitTick = 0, const string& strActionName = "", AX_BOOL bFeedbackRequired = AX_FALSE); + virtual AX_VOID ActionScaleLabelDbClicked(ScaleLabel* pLabel, AX_S32 nWaitTick = 0, const string& strActionName = "", AX_BOOL bFeedbackRequired = AX_FALSE); + virtual AX_VOID ActionCalendarDateSelected(QCalendarWidget* pCalendar, QDate& date, AX_S32 nWaitTick = 0, const string& strActionName = "", AX_BOOL bFeedbackRequired = AX_FALSE); + virtual AX_BOOL EmitUIOprSignal(const TS_OPERATION_INFO_T& tOprInfo) = 0; + + AX_VOID RegisterWidget(const AX_CHAR* strName, QWidget* pWidget); + QWidget* GetWidget(const AX_CHAR* strName); + virtual AX_BOOL Enter(); + virtual AX_BOOL CheckEntry(); + virtual AX_VOID SetModuleConfig(const AX_NVR_TS_MODULE_INFO_T& tConfig); + virtual AX_NVR_TS_MODULE_INFO_PTR GetModuleConfig(); + + AX_VOID ResetAction(const string& strActionName, AX_BOOL bFeedbackRequired = AX_FALSE) { + if (bFeedbackRequired) { + m_bCaseResult = AX_FALSE; + } + + m_strActionName = strActionName; + } + + AX_BOOL IsFinished() { + return m_bCaseResult; + } + + AX_BOOL TryRecover() { + QPushButton* pBtn = (QPushButton*)GetWidget("RecoverBtn_1"); + if (pBtn) { + pBtn->clicked(); + } + + pBtn = (QPushButton*)GetWidget("RecoverBtn_2"); + if (pBtn) { + pBtn->clicked(); + } + + return AX_TRUE; + } + +protected: + AX_BOOL m_bRunning {AX_FALSE}; + AX_BOOL m_bCaseResult {AX_TRUE}; + string m_strModuleName {""}; + string m_strActionName {""}; + +private: + std::map m_mapWidgets; + AX_NVR_TS_MODULE_INFO_T m_tModuleConfig; +}; \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_main.cpp b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_main.cpp new file mode 100644 index 0000000..f0e4955 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_main.cpp @@ -0,0 +1,103 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "ts_main.hpp" +#include "AXNVRFrameworkDefine.h" +#include +#include +#include + +#define TAG "TS_MAIN" + + +CTestMain::CTestMain() { + m_strModuleName = TAG; +} + +AX_BOOL CTestMain::Start() { + m_bRunning = AX_TRUE; + testOpenPatrol(); + m_bRunning = AX_FALSE; + + return AX_TRUE; +} + +AX_BOOL CTestMain::EmitUIOprSignal(const TS_OPERATION_INFO_T& tOprInfo) { + if (tOprInfo.target) { + emit signal_ts_widget_opr(tOprInfo); + return AX_TRUE; + } + + return AX_FALSE; +} + +void CTestMain::testVersion() { + QLabel* pLabelVersion = (QLabel*)GetWidget("LabelVersion"); + if (nullptr == pLabelVersion) { + LOG_M_E(TAG, "Can not find label version"); + return; + } + + if (pLabelVersion->text().toStdString() == NVR_VERSION_STR) { + LOG_MM_C(TAG, "Action<%s> successed." , "CheckVersion"); + } else { + LOG_MM_E(TAG, "Action<%s> failed." , "CheckVersion"); + } +} + +void CTestMain::testOpenPatrol() { + QPushButton* pBtnPolling = (QPushButton*)GetWidget("BtnPolling"); + if (nullptr == pBtnPolling) { + LOG_M_E(TAG, "Can not find button polling"); + return; + } + + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + AX_NVR_TS_CASE_INFO_T tCaseInfo = {"polling", TS_DEFAULT_REPEAT_COUNT, TS_DEFAULT_OPERATION_INTERFAL}; + GetCaseInfo("polling", pModuleCfg->vecCaseInfo, tCaseInfo); + + AX_S32 nRepeatCount = tCaseInfo.nRepeatCount; + + while (nRepeatCount-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + ActionToggleBtnClick(pBtnPolling, tCaseInfo.nOprInterval, "polling"); + } +} + +AX_BOOL CTestMain::GetCaseInfo(const string& strCaseName, vector& vecCaseInfo, AX_NVR_TS_CASE_INFO_T& tOutInfo) { + for (auto &m : vecCaseInfo) { + if (m.strName == strCaseName) { + tOutInfo = m; + return AX_TRUE; + } + } + + return AX_FALSE; +} + +string CTestMain::GetActionDesc(MAIN_ACTION_TYPE eType) { + switch (eType) { + case MAIN_ACTION_TYPE::UNKNOWN: return "Unknown"; + case MAIN_ACTION_TYPE::MAIN_SHOW: return "Show"; + case MAIN_ACTION_TYPE::MAIN_SHOW_PREVIEW: return "ShowPreview"; + case MAIN_ACTION_TYPE::MAIN_SHOW_PLAYBACK: return "ShowPlayback"; + case MAIN_ACTION_TYPE::MAIN_SHOW_SETTING: return "ShowSetting"; + default: return "Unknown"; + } + + return "Unknown"; +} + +void CTestMain::OnRecvResult(const AX_NVR_ACTION_RES_T& tActionResult) { + LOG_MM_C(TAG, "Action<%s> successed.", GetActionDesc(tActionResult.enMainActionType).c_str()); +} diff --git a/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_main.hpp b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_main.hpp new file mode 100644 index 0000000..9daf83c --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_main.hpp @@ -0,0 +1,42 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "ts_base.hpp" +#include "global/UiGlobalDef.h" +#include "AXEvent.hpp" + + +class CTestMain: public QObject, public CTestSuiteBase +{ + Q_OBJECT + +public: + CTestMain(); + virtual ~CTestMain() = default; + virtual AX_BOOL Start() override; + virtual AX_BOOL EmitUIOprSignal(const TS_OPERATION_INFO_T& tOprInfo) override; + +public slots: + void OnRecvResult(const AX_NVR_ACTION_RES_T& tActionResult); + +public slots: + void testVersion(); + void testOpenPatrol(); + +signals: + void signal_ts_widget_opr(const TS_OPERATION_INFO_T& tOprInfo); + +private: + string GetActionDesc(MAIN_ACTION_TYPE eType); + AX_BOOL GetCaseInfo(const string& strCaseName, vector& vecCaseInfo, AX_NVR_TS_CASE_INFO_T& tOutInfo); + +}; \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_playback.cpp b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_playback.cpp new file mode 100644 index 0000000..368b982 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_playback.cpp @@ -0,0 +1,531 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "ts_playback.hpp" +#include "AXNVRFrameworkDefine.h" +#include "ElapsedTimer.hpp" +#include "playback/PlaybackMain.h" +#include +#include +#include +#include +#include +#include +#include + +#define TAG "TS_PLAYBACK" + +CTestPlayback::CTestPlayback() { + m_strModuleName = TAG; +} + +AX_BOOL CTestPlayback::EmitUIOprSignal(const TS_OPERATION_INFO_T& tOprInfo) { + if (tOprInfo.target) { + emit signal_ts_widget_opr(tOprInfo); + return AX_TRUE; + } + + return AX_FALSE; +} + +AX_BOOL CTestPlayback::Start() { + if (!initTestCase()) { + return AX_FALSE; + } + + m_bRunning = AX_TRUE; + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::STABILITY == tTsCfg.eMode) { + testRandom(); + } else if (AX_NVR_TS_RUN_MODE::UT == tTsCfg.eMode) { + if (init()) { + testSingleStreamPlayProcess(); + } + + if (init()) { + testMultiStreamPlayProcess(); + } + } else { + LOG_MM_E(TAG, "Unknown test suite run mode: %d.", tTsCfg.eMode); + return AX_FALSE; + } + + m_bRunning = AX_FALSE; + + cleanupTestCase(); + + return AX_TRUE; +} + +AX_BOOL CTestPlayback::initTestCase() { + if (Enter()) { + LOG_M_C(TAG, "<===== Start test for module PLAYBACK =====>"); + SaveCtrlButtons(); + + return AX_TRUE; + } + + return AX_FALSE; +} + +void CTestPlayback::cleanupTestCase() { + LOG_M_C(TAG, "<===== End test for module PLAYBACK =====>"); +} + +AX_BOOL CTestPlayback::init() { + if (!m_bRunning) { + return AX_FALSE; + } + + if (!CheckEntry()) { + return AX_FALSE; + } + + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + if (pModuleCfg) { + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + } + + return AX_TRUE; +} + +void CTestPlayback::testRandom() { + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + AX_S32 nRepeatCount = pModuleCfg->nRepeatCount; + + QWidget* pParentWidget = (QWidget*)GetWidget("PlayCtrl"); + QPushButton* pStartBtn = pParentWidget->findChild(QString("pushButtonPlay")); + + AX_NVR_TS_CASE_INFO_T tCaseInfo = {"control", TS_DEFAULT_REPEAT_COUNT, TS_DEFAULT_OPERATION_INTERFAL}; + GetCaseInfo("control", pModuleCfg->vecCaseInfo, tCaseInfo); + + SelectDate(pModuleCfg->strDate); + + QTabWidget* pTab = ((QWidget*)GetWidget("PlayLeftToolbar"))->findChild(QString("tabWidget")); + AX_U32 nTabCount = pTab->count(); + /* steps of each round of random test: + step1: select tab_0, select first channel, push button PLAY, random action on controls(play, pause, stop, etc.) + step2: select tab_1, select all channels, push button PLAY, random action on controls(play, stop, etc.) + step3: select tab_2, select all channels, push button PLAY, random action on controls(play, stop, etc.) + step4: select tab_3, select all channels, push button PLAY, random action on controls(play, stop, etc.) + */ + while (nRepeatCount-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + AX_U32 nTabIndex = 0; + while (nTabIndex < nTabCount && m_bRunning) { + if (!CheckEntry()) { + break; + } + + if (!IsFinished()) { + LOG_MM_W(TAG, "Last case not finished, tab switch ignored"); + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + continue; + } + + AX_BOOL bSelectAll = nTabIndex == 0 ? AX_FALSE : AX_TRUE; + TabChangeAndSelect(nTabIndex, bSelectAll, tCaseInfo.nOprInterval); + ActionBtnClick(pStartBtn, tCaseInfo.nOprInterval, "pushButtonPlay"); + /* 1x1 layout support all button operations while other layouts only support some of them, + So, let 1x1 layout case get more chances to run. */ + RandomControl(nTabIndex, 0 == nTabIndex ? 5 : 2); + + nTabIndex++; + } + } +} + +void CTestPlayback::RandomControl(AX_U32 nTabIndex, AX_U32 nRoundCount) { + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + + auto __GetRandomDate__ = [this](QCalendarWidget* pCalendar, AX_BOOL bValid) { + QDate currDate = QDate::currentDate(); + QDate arrDate[2] = {QDate(currDate.year(), currDate.month(), currDate.day() == 1 ? 2 : currDate.day() - 1), QDate::currentDate()}; + return arrDate[bValid ? 1 : 0]; + }; + + static AX_BOOL s_bFastSpeed = AX_FALSE; + static AX_BOOL s_bSlowSpeed = AX_FALSE; + while (nRoundCount-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + for (AX_U32 i = 0; i < MAX_PLAYBACK_RANDOM_ACTION_COUNT; i++) { + if (!m_bRunning) { + break; + } + + if (!CheckEntry()) { + break; + } + + CTupleAction action = RandomAction(nTabIndex == 0 ? MAX_PLAYBACK_RANDOM_ACTION_COUNT : 4); + if (std::get<1>(action) == "pushButtonFast") { + if (s_bFastSpeed) { + /* TODO: Only support 2-times-speed now */ + LOG_MM_W(TAG, "Ignore fast speed operation twice."); + continue; + } else if (!s_bSlowSpeed) { + s_bFastSpeed = AX_TRUE; + } + + s_bSlowSpeed = AX_FALSE; + } else if (std::get<1>(action) == "pushButtonSlow") { + if (s_bSlowSpeed) { + /* TODO: Only support 1/2-times-speed now */ + LOG_MM_W(TAG, "Ignore slow speed operation twice."); + continue; + } else if (!s_bFastSpeed) { + s_bSlowSpeed = AX_TRUE; + } + + s_bFastSpeed = AX_FALSE; + } + + QWidget* pParentWidget = (QWidget*)GetWidget(std::get<0>(action).c_str()); + AX_NVR_TS_CASE_INFO_T tCaseInfo = {std::get<1>(action), TS_DEFAULT_REPEAT_COUNT, TS_DEFAULT_OPERATION_INTERFAL}; + GetCaseInfo(std::get<2>(action), pModuleCfg->vecCaseInfo, tCaseInfo); + + switch (std::get<3>(action)) { + case TS_ACTION_TYPE::TS_ACTION_TYPE_TAB: { + /* Would not come here now */ + if (nullptr == pParentWidget) { + continue; + } + + if (!IsFinished()) { + LOG_MM_W(TAG, "Last case not finished, operation <%s> ignored", std::get<1>(action).c_str()); + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + continue; + } + + QTabWidget* pTab = pParentWidget->findChild(QString(std::get<1>(action).c_str())); + if (pTab) { + AX_U32 nRandomIndex = rand() % pTab->count(); + TabChangeAndSelect(nRandomIndex, AX_TRUE, tCaseInfo.nOprInterval); + } + + break; + } + case TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON: { + if (nullptr == pParentWidget) { + continue; + } + + if (!IsFinished()) { + LOG_MM_W(TAG, "Last case not finished, operation <%s> ignored", std::get<1>(action).c_str()); + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + continue; + } + + QPushButton* pBtn = pParentWidget->findChild(QString(std::get<1>(action).c_str())); + if (pBtn) { + AX_U32 nTimes = std::get<4>(action); + while (nTimes-- > 0 && m_bRunning) { + ActionBtnClick(pBtn, tCaseInfo.nOprInterval, std::get<1>(action), AX_TRUE); + } + } + + break; + } + case TS_ACTION_TYPE::TS_ACTION_TYPE_CALENDAR: { + /* Would not come here now */ + if (nullptr == pParentWidget) { + continue; + } + + QCalendarWidget* pCalendar = pParentWidget->findChild(QString(std::get<1>(action).c_str())); + if (pCalendar) { + AX_BOOL bSelectValidDate = rand() % 2 ? AX_TRUE : AX_FALSE; + QDate date = __GetRandomDate__(pCalendar, bSelectValidDate); + LOG_MM_C(TAG, "Select date: %s", date.toString().toStdString().c_str()); + ActionCalendarDateSelected(pCalendar, date, tCaseInfo.nOprInterval, std::get<1>(action)); + } + break; + } + case TS_ACTION_TYPE::TS_ACTION_TYPE_SCALE_LABEL: { + ActionMinMaxLabel(tCaseInfo.nOprInterval); + break; + } + default : { + LOG_M_E(TAG, "Unsupported action type: %d", std::get<3>(action)); + break; + } + } + } + } +} + +void CTestPlayback::testSingleStreamPlayProcess() { + if (!IsFinished()) { + LOG_M_E(TAG, "Last case not finished, try recover and continue."); + TryRecover(); + } + + QTabWidget* pTab = nullptr; + AX_BOOL bActionRet = AX_FALSE; + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + AX_NVR_TS_CASE_INFO_T tCaseInfo = {"single stream", TS_DEFAULT_REPEAT_COUNT, TS_DEFAULT_OPERATION_INTERFAL}; + GetCaseInfo("single stream", pModuleCfg->vecCaseInfo, tCaseInfo); + + SelectDate(pModuleCfg->strDate); + + AX_S32 nRepeatCount = tCaseInfo.nRepeatCount; + + while (nRepeatCount-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + static AX_S32 nRound = 0; + LOG_M_C(TAG, "Start round %d of case UT-PLAYBACK-SINGLE", ++nRound); + + QWidget* pToolbar = (QWidget*)GetWidget("PlayLeftToolbar"); + pTab = pToolbar->findChild("tabWidget"); + if (pTab) { + TabChangeAndSelect(0, AX_FALSE, tCaseInfo.nOprInterval); + ActionBtnClick(FindActionBtn("Play"), tCaseInfo.nOprInterval, "Play"); + ActionBtnClick(FindActionBtn("MainSub"), tCaseInfo.nOprInterval, "MainSub"); + ActionBtnClick(FindActionBtn("MainSub"), tCaseInfo.nOprInterval, "MainSub"); + ActionBtnClick(FindActionBtn("Fast"), 5000, "Fast"); + ActionBtnClick(FindActionBtn("Slow"), 5000, "Slow"); + ActionBtnClick(FindActionBtn("Slow"), 5000, "Slow"); + ActionBtnClick(FindActionBtn("Fast"), 5000, "Fast"); + ActionBtnClick(FindActionBtn("Pause"), tCaseInfo.nOprInterval, "Pause"); + ActionBtnClick(FindActionBtn("Next"), tCaseInfo.nOprInterval, "Next"); + ActionBtnClick(FindActionBtn("Next"), tCaseInfo.nOprInterval, "Next"); + ActionBtnClick(FindActionBtn("Next"), tCaseInfo.nOprInterval, "Next"); + ActionBtnClick(FindActionBtn("Previous"), tCaseInfo.nOprInterval, "Previous"); + ActionBtnClick(FindActionBtn("Previous"), tCaseInfo.nOprInterval, "Previous"); + ActionBtnClick(FindActionBtn("Previous"), tCaseInfo.nOprInterval, "Previous"); + ActionBtnClick(FindActionBtn("Stop"), tCaseInfo.nOprInterval, "Stop"); + LocateTime(2359); + ActionBtnClick(FindActionBtn("Reverse"), 5000, "Reverse"); + ActionBtnClick(FindActionBtn("Slow"), 5000, "Slow"); + ActionBtnClick(FindActionBtn("Fast"), 5000, "Fast"); + ActionBtnClick(FindActionBtn("Fast"), 5000, "Fast"); + ActionBtnClick(FindActionBtn("Slow"), 5000, "Slow"); + ActionBtnClick(FindActionBtn("Stop"), tCaseInfo.nOprInterval, "Stop"); + LocateTime(0); + } else { + LOG_M_E(TAG, "Can not find widget <%s>", "tabWidget"); + break; + } + + bActionRet = AX_TRUE; + } +} + +void CTestPlayback::testMultiStreamPlayProcess() { + if (!IsFinished()) { + LOG_M_E(TAG, "Last case not finished, try recover and continue."); + TryRecover(); + } + + QTabWidget* pTab = nullptr; + AX_BOOL bActionRet = AX_FALSE; + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + AX_NVR_TS_CASE_INFO_T tCaseInfo = {"multiple stream", TS_DEFAULT_REPEAT_COUNT, TS_DEFAULT_OPERATION_INTERFAL}; + GetCaseInfo("multiple stream", pModuleCfg->vecCaseInfo, tCaseInfo); + + SelectDate(pModuleCfg->strDate); + + AX_S32 nRepeatCount = tCaseInfo.nRepeatCount; + + while (nRepeatCount-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + static AX_S32 nRound = 0; + LOG_M_C(TAG, "Start round %d of case UT-PLAYBACK-MULTIPLE", ++nRound); + + QWidget* pToolbar = (QWidget*)GetWidget("PlayLeftToolbar"); + pTab = pToolbar->findChild("tabWidget"); + if (pTab) { + TabChangeAndSelect(2, AX_TRUE, tCaseInfo.nOprInterval); + ActionBtnClick(FindActionBtn("Play"), tCaseInfo.nOprInterval, "Play"); + ActionBtnClick(FindActionBtn("MainSub"), tCaseInfo.nOprInterval, "MainSub"); + ActionBtnClick(FindActionBtn("MainSub"), tCaseInfo.nOprInterval, "MainSub"); + ActionMinMaxLabel(tCaseInfo.nOprInterval); + ActionBtnClick(FindActionBtn("Stop"), tCaseInfo.nOprInterval, "Stop"); + } else { + LOG_M_E(TAG, "Can not find widget <%s>", "tabWidget"); + break; + } + + bActionRet = AX_TRUE; + } +} + +void CTestPlayback::LocateTime(AX_U32 nTimeHHMM) { + QWidget* pControlWidget = (QWidget*)GetWidget("PlayCtrl"); + QWidget* pTimeline = pControlWidget->findChild(QString("PlaybackTimeLine")); + if (pTimeline) { + emit timeLocate(nTimeHHMM); + } +} + +void CTestPlayback::SelectDate(const string& strDate) { + QWidget* pParentWidget = (QWidget*)GetWidget("PlayLeftToolbar"); + if (nullptr == pParentWidget) { + return; + } + + QCalendarWidget* pCalendar = pParentWidget->findChild(QString("calendarWidget")); + if (pCalendar) { + QDate date = QDate::fromString(QString(strDate.c_str()), "yyyy-MM-dd"); + ActionCalendarDateSelected(pCalendar, date, 1000, "SelectDate"); + } +} + +void CTestPlayback::TabChangeAndSelect(AX_U32 nTabIndex, AX_BOOL bSelectAll, AX_S32 nWaitTick /*= 1000*/) { + QWidget* pParentWidget = (QWidget*)GetWidget("PlayLeftToolbar"); + if (nullptr == pParentWidget) { + return; + } + + QTabWidget* pTab = pParentWidget->findChild(QString("tabWidget")); + if (pTab) { + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + + ActionTabClick(pTab, nTabIndex, nWaitTick, "tabWidget"); + + QTableWidget* pTable = nullptr; + switch (nTabIndex) { + case 0: { + pTable = pTab->findChild(QString("tableWidget_1x1")); + break; + } + case 1: { + pTable = pTab->findChild(QString("tableWidget_2x2")); + break; + } + case 2: { + pTable = pTab->findChild(QString("tableWidget_1_7")); + break; + } + case 3: { + pTable = pTab->findChild(QString("tableWidget_4x4")); + break; + } + default: break; + } + + if (bSelectAll) { + int nChannelCnt = pTable->rowCount(); + for (int i = 0; i < nChannelCnt; i++) { + emit tableCellClicked(i, 0); + } + } else { + emit tableCellClicked(0, 0); + } + + CElapsedTimer::GetInstance()->mSleep(nWaitTick); + } +} + +void CTestPlayback::ActionMinMaxLabel(AX_S32 nWaitTick /*= 1000*/) { + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + + vector vecLabels; + PlaybackMain* pPlaybackMain = (PlaybackMain*)GetWidget("PlayMain"); + QList listView = pPlaybackMain->m_pSplitWidgetMgr->GetPreviewWidgetList(); + for (auto &m : listView) { + if (m.bDisp) { + vecLabels.emplace_back(m.pDispWidget); + } + } + + if (vecLabels.size() > 0) { + /* UT-PLAYBACK only prepare 2 sample videos now */ + AX_U32 nIndex = rand() % 2; + if (nIndex >= vecLabels.size()) { + nIndex = 0; + } + + ActionScaleLabelDbClicked(vecLabels[nIndex], nWaitTick, "LabelMax"); + ActionScaleLabelDbClicked(vecLabels[nIndex], nWaitTick, "LabelMin"); + } +} + +void CTestPlayback::OnRecvResult(const AX_NVR_ACTION_RES_T& tActionResult) { + if (AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK == tActionResult.enResult) { + LOG_MM_C(TAG, "Action<%s> successed." , m_strActionName.c_str()); + } else { + LOG_MM_E(TAG, "Action<%s> failed." , m_strActionName.c_str()); + } + + m_bCaseResult = AX_TRUE; +} + +AX_BOOL CTestPlayback::GetCaseInfo(const string& strCaseName, vector& vecCaseInfo, AX_NVR_TS_CASE_INFO_T& tOutInfo) { + for (auto &m : vecCaseInfo) { + if (m.strName == strCaseName) { + tOutInfo = m; + return AX_TRUE; + } + } + + return AX_FALSE; +} + +AX_VOID CTestPlayback::SaveCtrlButtons() { + QWidget* pControlWidget = (QWidget*)GetWidget("PlayCtrl"); + m_mapActionButtons["Play"] = pControlWidget->findChild(QString("pushButtonPlay")); + m_mapActionButtons["Pause"] = pControlWidget->findChild(QString("pushButtonPause")); + m_mapActionButtons["Stop"] = pControlWidget->findChild(QString("pushButtonStop")); + m_mapActionButtons["Reverse"] = pControlWidget->findChild(QString("pushButtonReverse")); + m_mapActionButtons["Previous"] = pControlWidget->findChild(QString("pushButtonPreviousFrame")); + m_mapActionButtons["Next"] = pControlWidget->findChild(QString("pushButtonNextFrame")); + m_mapActionButtons["Slow"] = pControlWidget->findChild(QString("pushButtonSlow")); + m_mapActionButtons["Fast"] = pControlWidget->findChild(QString("pushButtonFast")); + + QWidget* pTopWidget = (QWidget*)GetWidget("PlayTopToolbar"); + m_mapActionButtons["MainSub"] = pControlWidget->findChild(QString("pushButton_main_sub1")); +} + +QPushButton* CTestPlayback::FindActionBtn(const string& strBtnName) { + std::map::iterator itFinder = m_mapActionButtons.find(strBtnName); + if (itFinder != m_mapActionButtons.end()) { + return itFinder->second; + } + + return nullptr; +} + +CTupleAction CTestPlayback::RandomAction(AX_U32 nRangeMax /*= MAX_PLAYBACK_RANDOM_ACTION_COUNT*/) { + if (nRangeMax > MAX_PLAYBACK_RANDOM_ACTION_COUNT) { + nRangeMax = MAX_PLAYBACK_RANDOM_ACTION_COUNT; + } + + CTupleAction action[MAX_PLAYBACK_RANDOM_ACTION_COUNT] = { + // <- Valid for all tabs -> + make_tuple("PlayCtrl", "pushButtonPlay", "control", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PlayCtrl", "pushButtonStop", "control", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PlayTopToolbar", "pushButton_main_sub1", "main_sub", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 2), + make_tuple("", "", "min_max", TS_ACTION_TYPE::TS_ACTION_TYPE_SCALE_LABEL, 1), + + // <- Valid only for tab 1x1 -> + make_tuple("PlayCtrl", "pushButtonPause", "control", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PlayCtrl", "pushButtonReverse", "control", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PlayCtrl", "pushButtonPreviousFrame", "control", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 3), + make_tuple("PlayCtrl", "pushButtonNextFrame", "control", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 3), + make_tuple("PlayCtrl", "pushButtonSlow", "control", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PlayCtrl", "pushButtonFast", "control", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + }; + + AX_S32 nIndex = rand() % nRangeMax; + return action[nIndex]; +} diff --git a/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_playback.hpp b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_playback.hpp new file mode 100644 index 0000000..892a859 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_playback.hpp @@ -0,0 +1,62 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "ts_base.hpp" +#include "global/UiGlobalDef.h" +#include "AXEvent.hpp" + +#define MAX_PLAYBACK_RANDOM_ACTION_COUNT (10) + + +class CTestPlayback: public QObject, public CTestSuiteBase +{ + Q_OBJECT + +public: + CTestPlayback(); + virtual ~CTestPlayback() = default; + virtual AX_BOOL Start() override; + virtual AX_BOOL EmitUIOprSignal(const TS_OPERATION_INFO_T& tOprInfo) override; + +public slots: + void OnRecvResult(const AX_NVR_ACTION_RES_T& tActionResult); + +public slots: + AX_BOOL initTestCase(); + void cleanupTestCase(); + AX_BOOL init(); + void testSingleStreamPlayProcess(); + void testMultiStreamPlayProcess(); + + void testRandom(); + +signals: + void tableCellClicked(int nRow, int nCol); + void timeLocate(int nHHMM); + void signal_ts_widget_opr(const TS_OPERATION_INFO_T& tOprInfo); + +private: + string GetActionDesc(PLAYBACK_ACTION_TYPE eType); + AX_BOOL GetCaseInfo(const string& strCaseName, vector& vecCaseInfo, AX_NVR_TS_CASE_INFO_T& tOutInfo); + CTupleAction RandomAction(AX_U32 nRangeMax = MAX_PLAYBACK_RANDOM_ACTION_COUNT); + void SelectDate(const string& strDate); + void TabChangeAndSelect(AX_U32 nTabIndex, AX_BOOL bSelectAll, AX_S32 nWaitTick = 1000); + void ActionMinMaxLabel(AX_S32 nWaitTick = 1000); + void RandomControl(AX_U32 nTabIndex, AX_U32 nRoundCount); + void SaveCtrlButtons(); + QPushButton* FindActionBtn(const string& strBtnName); + void LocateTime(AX_U32 nTimeHHMM); + +private: + CAXEvent m_hActionvent; + std::map m_mapActionButtons; +}; \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_preview.cpp b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_preview.cpp new file mode 100644 index 0000000..411ec48 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_preview.cpp @@ -0,0 +1,492 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "ts_preview.hpp" +#include "AXNVRFrameworkDefine.h" +#include "preview/PreviewTopToolbar.h" +#include "preview/PreviewMain.h" +#include "ElapsedTimer.hpp" +#include +#include +#include +#include +#include + +#define TAG "TS_PREVIEW" +#define MAX_LAYOUT_STREAM_COUNT (64) +#define MAX_PREVIEW_RANDOM_ACTION_COUNT (10) + +CTestPreview::CTestPreview() { + m_strModuleName = TAG; +} + +AX_BOOL CTestPreview::EmitUIOprSignal(const TS_OPERATION_INFO_T& tOprInfo) { + if (tOprInfo.target) { + emit signal_ts_widget_opr(tOprInfo); + return AX_TRUE; + } + + return AX_FALSE; +} + +AX_BOOL CTestPreview::Start() { + if (!initTestCase()) { + return AX_FALSE; + } + + m_bRunning = AX_TRUE; + + AX_NVR_TEST_SUITE_CONFIG_T tTsCfg = CNVRConfigParser::GetInstance()->GetTestSuiteConfig(); + if (AX_NVR_TS_RUN_MODE::STABILITY == tTsCfg.eMode) { + testRandom(); + } else if (AX_NVR_TS_RUN_MODE::UT == tTsCfg.eMode) { + if (init()) { + testChangeMainSub(); + } + + if (init()) { + testMinMax(); + } + + if (init()) { + testChangeSplit(); + } + + if (init()) { + testChangePrevNext(); + } + + if (init()) { + testPIP(); + } + } else { + LOG_MM_E(TAG, "Unknown test suite run mode: %d.", tTsCfg.eMode); + return AX_FALSE; + } + + cleanupTestCase(); + m_bRunning = AX_FALSE; + + return AX_TRUE; +} + + +AX_BOOL CTestPreview::initTestCase() { + if (Enter()) { + LOG_M_C(TAG, "<===== Start test for module PREVIEW =====>"); + return AX_TRUE; + } + + return AX_FALSE; +} + +void CTestPreview::cleanupTestCase() { + LOG_M_C(TAG, "<===== End test for module PREVIEW =====>"); +} + +AX_BOOL CTestPreview::init() { + if (!m_bRunning) { + return AX_FALSE; + } + + if (!CheckEntry()) { + return AX_FALSE; + } + + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + if (pModuleCfg) { + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + } + + return AX_TRUE; +} + +void CTestPreview::testRandom() { + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + AX_S32 nRepeatCount = pModuleCfg->nRepeatCount; + + while (nRepeatCount-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + for (AX_U32 i = 0; i < MAX_PREVIEW_RANDOM_ACTION_COUNT; i++) { + if (!m_bRunning) { + break; + } + + if (!CheckEntry()) { + break; + } + + CTupleAction action = RandomAction(); + QWidget* pParentWidget = (QWidget*)GetWidget(std::get<0>(action).c_str()); + if (nullptr == pParentWidget) { + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + continue; + } + + AX_NVR_TS_CASE_INFO_T tCaseInfo = {std::get<1>(action), TS_DEFAULT_REPEAT_COUNT, TS_DEFAULT_OPERATION_INTERFAL}; + if (!GetCaseInfo(std::get<2>(action), pModuleCfg->vecCaseInfo, tCaseInfo)) { + LOG_MM_E(TAG, "Can not find <%s> configurations", std::get<2>(action).c_str()); + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + continue; + } + + switch (std::get<3>(action)) { + case TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON: { + QPushButton* pBtn = pParentWidget->findChild(QString(std::get<1>(action).c_str())); + if (pBtn) { + if (pBtn->isEnabled()) { + AX_U32 nTimes = std::get<4>(action); + while (nTimes-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + if (!IsFinished()) { + LOG_MM_W(TAG, "Last case not finished, operation <%s> ignored", pBtn->objectName().toStdString().c_str()); + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + continue; + } + + ActionBtnClick(pBtn, tCaseInfo.nOprInterval, std::get<1>(action), AX_TRUE); + } + } else { + LOG_MM_W(TAG, "Button <%s> is invalid, ignore this operation.", pBtn->objectName().toStdString().c_str()); + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + } + } + + break; + } + case TS_ACTION_TYPE::TS_ACTION_TYPE_TOGGLE_BUTTON: { + QPushButton* pBtn = pParentWidget->findChild(QString(std::get<1>(action).c_str())); + if (pBtn) { + if (pBtn->isEnabled()) { + AX_U32 nTimes = std::get<4>(action); + while (nTimes-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + if (!IsFinished()) { + LOG_MM_W(TAG, "Last case not finished, operation <%s> ignored", pBtn->objectName().toStdString().c_str()); + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + continue; + } + + ActionToggleBtnClick(pBtn, tCaseInfo.nOprInterval, std::get<1>(action), AX_TRUE); + } + } else { + LOG_MM_W(TAG, "Toggle Button <%s> is invalid, ignore this operation.", pBtn->objectName().toStdString().c_str()); + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + } + } + + break; + } + case TS_ACTION_TYPE::TS_ACTION_TYPE_SCALE_LABEL: { + vector vecLabels; + PreviewMain* pPreviewMain = (PreviewMain*)GetWidget("PreviewMain"); + QList listView = pPreviewMain->m_pSplitWidgetMgr->GetPreviewWidgetList(); + for (auto &m : listView) { + if (m.bDisp) { + vecLabels.emplace_back(m.pDispWidget); + } + } + + if (vecLabels.size() > 0) { + if (!IsFinished()) { + LOG_MM_W(TAG, "Last case not finished, operation ignored"); + break; + } + + AX_U32 nIndex = rand() % vecLabels.size(); + ActionScaleLabelDbClicked(vecLabels[nIndex], tCaseInfo.nOprInterval, "LabelMax", AX_TRUE); + + if (!IsFinished()) { + LOG_MM_W(TAG, "Case not finished, operation ignored"); + break; + } + + ActionScaleLabelDbClicked(vecLabels[nIndex], tCaseInfo.nOprInterval, "LabelMin", AX_TRUE); + } + break; + } + default: { + LOG_M_E(TAG, "Unsupported action type: %d", std::get<3>(action)); + break; + } + } + + CElapsedTimer::GetInstance()->mSleep(pModuleCfg->nCaseInterval); + } + } +} + +void CTestPreview::testChangeMainSub() { + if (!IsFinished()) { + LOG_M_E(TAG, "Last case not finished, try recover and continue."); + TryRecover(); + } + + QWidget* pToolbar = (QWidget*)GetWidget("PreviewTopToolbar"); + QPushButton* pBtn = nullptr; + + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + + AX_NVR_TS_CASE_INFO_T tCaseInfo = {"main_sub", TS_DEFAULT_REPEAT_COUNT, TS_DEFAULT_OPERATION_INTERFAL}; + GetCaseInfo("main_sub", pModuleCfg->vecCaseInfo, tCaseInfo); + + AX_S32 nRepeatCount = tCaseInfo.nRepeatCount; + + while (nRepeatCount-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + static AX_S32 nRound = 0; + LOG_M_C(TAG, "Start round %d of case PREVIEW-MAIN_SUB", ++nRound); + + pBtn = pToolbar->findChild("pushButton_main_sub1"); + if (pBtn) { + ActionBtnClick(pBtn, tCaseInfo.nOprInterval, "main_sub(sub)"); + + /* Recover */ + ActionBtnClick(pBtn, tCaseInfo.nOprInterval, "main_sub(main)"); + } else { + LOG_M_E(TAG, "Can not find button <%s>", "pushButton_main_sub1"); + } + } +} + +void CTestPreview::testMinMax() { + if (!IsFinished()) { + LOG_M_E(TAG, "Last case not finished, try recover and continue."); + TryRecover(); + } + + AX_NVR_TS_CASE_INFO_T tCaseInfo = {"min_max", TS_DEFAULT_REPEAT_COUNT, TS_DEFAULT_OPERATION_INTERFAL}; + GetCaseInfo("min_max", GetModuleConfig()->vecCaseInfo, tCaseInfo); + + vector vecLabels; + PreviewMain* pPreviewMain = (PreviewMain*)GetWidget("PreviewMain"); + QList listView = pPreviewMain->m_pSplitWidgetMgr->GetPreviewWidgetList(); + for (auto &m : listView) { + if (m.bDisp) { + vecLabels.emplace_back(m.pDispWidget); + } + } + + if (vecLabels.size() > 0) { + AX_U32 nIndex = rand() % vecLabels.size(); + ActionScaleLabelDbClicked(vecLabels[nIndex], tCaseInfo.nOprInterval, "LabelMax"); + ActionScaleLabelDbClicked(vecLabels[nIndex], tCaseInfo.nOprInterval, "LabelMin"); + } +} + +void CTestPreview::testChangeSplit() { + if (!IsFinished()) { + LOG_M_E(TAG, "Last case not finished, try recover and continue."); + TryRecover(); + } + + QPushButton* pBtn = nullptr; + AX_BOOL bActionRet = AX_FALSE; + + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + + AX_NVR_TS_CASE_INFO_T tCaseInfo = {"split", TS_DEFAULT_REPEAT_COUNT, TS_DEFAULT_OPERATION_INTERFAL}; + GetCaseInfo("split", pModuleCfg->vecCaseInfo, tCaseInfo); + + AX_S32 nRepeatCount = tCaseInfo.nRepeatCount; + + while (nRepeatCount-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + static AX_S32 nRound = 0; + LOG_M_C(TAG, "Start round %d of case PREVIEW-SPLIT", ++nRound); + QWidget* pToolbar = (QWidget*)GetWidget("PreviewTopToolbar"); + pBtn = pToolbar->findChild("pushButton_1x1"); + if (pBtn) { + ActionBtnClick(pBtn, tCaseInfo.nOprInterval, "split(pushButton_1x1)"); + } else { + LOG_M_E(TAG, "Can not find button <%s>", "pushButton_1x1"); + break; + } + + pBtn = pToolbar->findChild("pushButton_2x2"); + if (pBtn) { + ActionBtnClick(pBtn, tCaseInfo.nOprInterval, "split(pushButton_2x2)"); + } else { + LOG_M_E(TAG, "Can not find button <%s>", "pushButton_2x2"); + break; + } + + pBtn = pToolbar->findChild("pushButton_1x8"); + if (pBtn) { + ActionBtnClick(pBtn, tCaseInfo.nOprInterval, "split(pushButton_1x8)"); + } else { + LOG_M_E(TAG, "Can not find button <%s>", "pushButton_1x8"); + break; + } + + pBtn = pToolbar->findChild("pushButton_4x4"); + if (pBtn) { + ActionBtnClick(pBtn, tCaseInfo.nOprInterval, "split(pushButton_4x4)"); + } else { + LOG_M_E(TAG, "Can not find button <%s>", "pushButton_4x4"); + break; + } + + pBtn = pToolbar->findChild("pushButton_8x8"); + if (pBtn) { + ActionBtnClick(pBtn, tCaseInfo.nOprInterval, "split(pushButton_8x8)"); + } else { + LOG_M_E(TAG, "Can not find button <%s>", "pushButton_8x8"); + break; + } + + /* Recover layout */ + pBtn = pToolbar->findChild("pushButton_2x2"); + if (pBtn) { + ActionBtnClick(pBtn, tCaseInfo.nOprInterval, "split(pushButton_2x2)"); + } else { + LOG_M_E(TAG, "Can not find button <%s>", "pushButton_2x2"); + break; + } + } +} + +void CTestPreview::testChangePrevNext() { + if (!IsFinished()) { + LOG_M_E(TAG, "Last case not finished, try recover and continue."); + TryRecover(); + } + + QWidget* pToolbar = (QWidget*)GetWidget("PreviewTopToolbar"); + QPushButton* pBtnPrev = pToolbar->findChild("pushButton_previous"); + QPushButton* pBtnNext = pToolbar->findChild("pushButton_next"); + if (!pBtnPrev || !pBtnNext) { + LOG_M_E(TAG, "Can not find PREV/NEXT buttons, ignore this case."); + return; + } + + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + AX_NVR_TS_CASE_INFO_T tCaseInfo = {"previous_next", TS_DEFAULT_REPEAT_COUNT, TS_DEFAULT_OPERATION_INTERFAL}; + GetCaseInfo("previous_next", pModuleCfg->vecCaseInfo, tCaseInfo); + + AX_S32 nRepeatCount = tCaseInfo.nRepeatCount; + + while (nRepeatCount-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + static AX_S32 nRound = 0; + LOG_M_C(TAG, "Start round %d of case PREVIEW-PREV_NEXT", ++nRound); + + // AX_U32 nOprCount = MAX_LAYOUT_STREAM_COUNT / 4 - 1; + AX_U32 nOprCount = 2; + AX_U32 nIndex = 0; + while (nIndex++ < nOprCount && m_bRunning) { + if (!CheckEntry()) { + break; + } + + ActionBtnClick(pBtnNext, tCaseInfo.nOprInterval, "previous_next(next)"); + } + + nIndex = 0; + while (nIndex++ < nOprCount && m_bRunning) { + if (!CheckEntry()) { + break; + } + + ActionBtnClick(pBtnPrev, tCaseInfo.nOprInterval, "previous_next(previous)"); + } + } +} + +void CTestPreview::testPIP() { + if (!IsFinished()) { + LOG_M_E(TAG, "Last case not finished, try recover and continue."); + TryRecover(); + } + + QWidget* pToolbar = (QWidget*)GetWidget("PreviewTopToolbar"); + QPushButton* pBtn = nullptr; + + AX_NVR_TS_MODULE_INFO_PTR pModuleCfg = GetModuleConfig(); + + AX_NVR_TS_CASE_INFO_T tCaseInfo = {"pip", TS_DEFAULT_REPEAT_COUNT, TS_DEFAULT_OPERATION_INTERFAL}; + GetCaseInfo("pip", pModuleCfg->vecCaseInfo, tCaseInfo); + + AX_S32 nRepeatCount = tCaseInfo.nRepeatCount; + + while (nRepeatCount-- > 0 && m_bRunning) { + if (!CheckEntry()) { + break; + } + + static AX_S32 nRound = 0; + LOG_M_C(TAG, "Start round %d of case PREVIEW-PIP", ++nRound); + + pBtn = pToolbar->findChild("pushButton_pip"); + if (pBtn) { + ActionToggleBtnClick(pBtn, tCaseInfo.nOprInterval, "PIP(open)"); + ActionToggleBtnClick(pBtn, tCaseInfo.nOprInterval, "PIP(close)"); + } else { + LOG_M_E(TAG, "Can not find button <%s>", "pushButton_pip"); + } + } +} + +void CTestPreview::OnRecvResult(const AX_NVR_ACTION_RES_T& tActionResult) { + if (AX_NVR_PREVIEW_RES_TYPE::PREVIEW_OK == tActionResult.enResult) { + LOG_MM_C(TAG, "Action<%s> successed." , m_strActionName.c_str()); + } else { + LOG_MM_E(TAG, "Action<%s> failed." , m_strActionName.c_str()); + } + + m_bCaseResult = AX_TRUE; +} + +AX_BOOL CTestPreview::GetCaseInfo(const string& strCaseName, vector& vecCaseInfo, AX_NVR_TS_CASE_INFO_T& tOutInfo) { + for (auto &m : vecCaseInfo) { + if (m.strName == strCaseName) { + tOutInfo = m; + return AX_TRUE; + } + } + + return AX_FALSE; +} + +CTupleAction CTestPreview::RandomAction() { + CTupleAction action[MAX_PREVIEW_RANDOM_ACTION_COUNT] = { + make_tuple("PreviewTopToolbar", "pushButton_1x1", "split", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PreviewTopToolbar", "pushButton_2x2", "split", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PreviewTopToolbar", "pushButton_1x8", "split", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PreviewTopToolbar", "pushButton_4x4", "split", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PreviewTopToolbar", "pushButton_8x8", "split", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PreviewTopToolbar", "pushButton_previous", "previous_next", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PreviewTopToolbar", "pushButton_next", "previous_next", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 1), + make_tuple("PreviewTopToolbar", "pushButton_main_sub1", "main_sub", TS_ACTION_TYPE::TS_ACTION_TYPE_BUTTON, 2), + make_tuple("PreviewTopToolbar", "pushButton_pip", "pip", TS_ACTION_TYPE::TS_ACTION_TYPE_TOGGLE_BUTTON, 1), + make_tuple("", "", "min_max", TS_ACTION_TYPE::TS_ACTION_TYPE_SCALE_LABEL, 1) + }; + + AX_S32 nIndex = rand() % MAX_PREVIEW_RANDOM_ACTION_COUNT; + return action[nIndex]; +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_preview.hpp b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_preview.hpp new file mode 100644 index 0000000..907cdda --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/test_suite/ts_preview.hpp @@ -0,0 +1,51 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include "preview/PreviewMain.h" +#include "ts_base.hpp" +#include "global/UiGlobalDef.h" +#include "AXEvent.hpp" + +class CTestPreview: public QObject, public CTestSuiteBase +{ + Q_OBJECT + +public: + CTestPreview(); + virtual ~CTestPreview() = default; + virtual AX_BOOL Start() override; + virtual AX_BOOL EmitUIOprSignal(const TS_OPERATION_INFO_T& tOprInfo) override; + +public slots: + void OnRecvResult(const AX_NVR_ACTION_RES_T& tActionResult); + +public slots: + AX_BOOL initTestCase(); + void cleanupTestCase(); + AX_BOOL init(); + void testChangeMainSub(); + void testMinMax(); + void testChangeSplit(); + void testChangePrevNext(); + void testPIP(); + // void testChangeMinMax(); + // void testRecord(); + void testRandom(); + +signals: + void signal_ts_widget_opr(const TS_OPERATION_INFO_T& tOprInfo); + +private: + std::string GetActionDesc(PREVIEW_ACTION_TYPE eType); + AX_BOOL GetCaseInfo(const string& strCaseName, vector& vecCaseInfo, AX_NVR_TS_CASE_INFO_T& tOutInfo); + CTupleAction RandomAction(); +}; \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/utils/NoSignals.h b/app/demo/src/ppl/nvr/gui/ui/utils/NoSignals.h new file mode 100644 index 0000000..40158fc --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/utils/NoSignals.h @@ -0,0 +1,14 @@ +#pragma once +#include +#include +#include + +class NoSignals: public QObject { + Q_OBJECT +public: + static void setChecked(QPushButton* widget, bool isChecked) { + widget->blockSignals(true); + widget->setChecked(isChecked); + widget->blockSignals(false); + } +}; diff --git a/app/demo/src/ppl/nvr/gui/ui/utils/ScaleLabel.cpp b/app/demo/src/ppl/nvr/gui/ui/utils/ScaleLabel.cpp new file mode 100644 index 0000000..f638d10 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/utils/ScaleLabel.cpp @@ -0,0 +1,361 @@ +#include "ScaleLabel.h" +#include +#include +#include +#include +#include +#include + +#include "AppLogApi.h" +#include "AXNVRFramework.h" + +#define TAG "CHNLAB" + +#ifndef ALIGN_UP +#define ALIGN_UP(x, align) (((x) + ((align)-1)) & ~((align)-1)) +#endif + +#ifndef ALIGN_DOWN +#define ALIGN_DOWN(x, align) ((x) & ~((align)-1)) +#endif + +ScaleLabel::ScaleLabel(AX_NVR_DEV_ID nDevId, AX_NVR_VIEW_TYPE enViewType, QWidget *parent) + : QLabel(parent) + , m_nDevId(nDevId) + , m_enViewType(enViewType) { + +} + +ScaleLabel::~ScaleLabel() { + +} + + +AX_NVR_RECT_T ScaleLabel::CalcMoveRect() { + AX_NVR_RECT_T rectCrop; + + do { + AX_U32 nImageW = 0; + AX_U32 nImageH = 0; + CAXNVRFramework::GetInstance()->GetResolution(m_nDevId, m_enViewType, nImageW, nImageH); + if (nImageW == 0 || nImageH == 0) { + break; + } + + float x_y = (float)this->width() / (float)this->height(); + float x_scale_factor = (float)this->width() / nImageW; + float y_scale_factor = (float)this->height() / nImageH; + + m_nLabelCropX -= (m_ptEnd.x() - m_ptPre.x()); + m_nLabelCropY -= (m_ptEnd.y() - m_ptPre.y()); + + if (m_nLabelCropX < 0) m_nLabelCropX = 0; + if (m_nLabelCropY < 0) m_nLabelCropY = 0; + if (m_nLabelCropX + m_nLabelCropW > this->width()) m_nLabelCropX = this->width() - m_nLabelCropW; + if (m_nLabelCropY + m_nLabelCropH > this->height()) m_nLabelCropY = this->height() - m_nLabelCropH; + + rectCrop.x = ALIGN_DOWN(int(m_nLabelCropX / x_scale_factor), 2); + rectCrop.y = ALIGN_DOWN(int(m_nLabelCropY / y_scale_factor), 2); + rectCrop.w = ALIGN_DOWN(int(m_nLabelCropW / x_scale_factor), 2); + rectCrop.h = ALIGN_DOWN(int(m_nLabelCropH / y_scale_factor), 2); + + #if 0 + LOG_MM_C(TAG, "move (%d, %d) -> (%d, %d), label: (%d, %d) %dx%d, %dx%d, img: %dx%d => (%d, %d) %dx%d", \ + m_ptPre.rx(), m_ptPre.ry(), m_ptEnd.rx(), m_ptEnd.ry(), \ + m_nLabelCropX, m_nLabelCropY, m_nLabelCropW, m_nLabelCropH, + width(), height(), nImageW, nImageH, \ + rectCrop.x, rectCrop.y, rectCrop.w, rectCrop.h); + #endif + + } while(0); + + return rectCrop; +} + +AX_NVR_RECT_T ScaleLabel::CalcCropRect() { + AX_NVR_RECT_T rectCrop; + + do { + + AX_U32 nImageW = 0; + AX_U32 nImageH = 0; + CAXNVRFramework::GetInstance()->GetResolution(m_nDevId, m_enViewType, nImageW, nImageH); + if (nImageW == 0 || nImageH == 0) { + break; + } + + float x_y = (float)this->width() / (float)this->height(); + + float x_scale_factor = (float)this->width() / nImageW; + float y_scale_factor = (float)this->height() / nImageH; + m_nLabelCropX = m_ptBegin.rx() < m_ptEnd.rx() ? m_ptBegin.rx() : m_ptEnd.rx(); + m_nLabelCropY = m_ptBegin.ry() < m_ptEnd.ry() ? m_ptBegin.ry() : m_ptEnd.ry(); + m_nLabelCropW = abs(m_ptEnd.rx() - m_ptBegin.rx()); + m_nLabelCropH = abs(m_ptEnd.ry() - m_ptBegin.ry()); + + if (this->width()/(float)m_nLabelCropW < this->height()/(float)m_nLabelCropH) { + m_nLabelCropH = m_nLabelCropW / x_y; + } else { + m_nLabelCropW = m_nLabelCropH * x_y; + } + + if (m_nLabelCropX < 0) m_nLabelCropX = 0; + if (m_nLabelCropY < 0) m_nLabelCropY = 0; + if (m_nLabelCropX + m_nLabelCropW > this->width()) m_nLabelCropX = this->width() - m_nLabelCropW; + if (m_nLabelCropY + m_nLabelCropH > this->height()) m_nLabelCropY = this->height() - m_nLabelCropH; + + rectCrop.x = ALIGN_DOWN(int(m_nLabelCropX / x_scale_factor), 2); + rectCrop.y = ALIGN_DOWN(int(m_nLabelCropY / y_scale_factor), 2); + rectCrop.w = ALIGN_DOWN(int(m_nLabelCropW / x_scale_factor), 2); + rectCrop.h = ALIGN_DOWN(int(m_nLabelCropH / y_scale_factor), 2); + + #if 0 + LOG_MM_C(TAG, "crop (%d, %d) -> (%d, %d), %dx%d, img: %dx%d => (%d, %d) %dx%d", \ + m_ptBegin.rx(), m_ptBegin.ry(), m_ptEnd.rx(), m_ptEnd.ry(), \ + width(), height(), nImageW, nImageH, \ + rectCrop.x, rectCrop.y, rectCrop.w, rectCrop.h); + #endif + } while(0); + + return rectCrop; +} + +void ScaleLabel::Reset() { + if (m_bMove) { + m_nLastWidth = this->width(); + m_nLastHeight = this->height(); + } + + m_bMove = false; + m_bMousePress = false; + m_bMouseMove = false; + m_ptBegin = QPoint(0, 0); + m_ptEnd = QPoint(0, 0); + m_ptPre = QPoint(0, 0); +} + +void ScaleLabel::Restore() { + m_bMove = m_bLastMove; +} + +void ScaleLabel::mousePressEvent(QMouseEvent *ev) { + if (ev->button() == Qt::RightButton) { + m_bMousePress = true; + m_bMouseMove = false; + m_ptBegin = ev->pos(); + if (m_bMove) { + m_ptPre = ev->pos(); + setCursor(Qt::OpenHandCursor); + } + } +} + +void ScaleLabel::mouseReleaseEvent(QMouseEvent *ev) { + if (ev->button() == Qt::RightButton) { + m_ptEnd = ev->pos(); + if (m_ptEnd.rx() < 0) m_ptEnd.setX(0); + if (m_ptEnd.rx() > this->width()) m_ptEnd.setX(this->width()); + if (m_ptEnd.ry() < 0) m_ptEnd.setY(0); + if (m_ptEnd.ry() > this->height()) m_ptEnd.setY(this->height()); + + if (m_bMousePress && m_bMouseMove && !m_bMove) { + AX_BOOL bWatcherWorking = AX_FALSE; + do { + if (!m_watcherZoomAndMove.isFinished()) { + LOG_M_I(TAG, "[%s][0x%x] Still Active.", __func__, QThread::currentThread()); + break; + } + + AX_NVR_RECT_T rectCrop = this->CalcCropRect(); + if (rectCrop.w <= 0 || rectCrop.h <= 0) { + break; + } + + AX_NVR_DEV_ID nDevId = m_nDevId; + + QFutureInterface interface; + interface.reportStarted(); + m_watcherZoomAndMove.setFuture(interface.future()); + bWatcherWorking = AX_TRUE; + std::thread thread([this, interface, nDevId, rectCrop]() mutable { + LOG_M_D(TAG, "[%s][0x%x] +++", __func__, QThread::currentThread()); + + AX_BOOL bRectSelectOK = AX_FALSE; + if (AX_NVR_VIEW_TYPE::PREVIEW == m_enViewType) { + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (nullptr != pPreview) { + bRectSelectOK = pPreview->ZoomAndMove(nDevId, rectCrop, AX_TRUE); + } + } + else if (AX_NVR_VIEW_TYPE::PLAYBACK == m_enViewType) { + CAXNVRPlaybakCtrl *pPlayback = CAXNVRFramework::GetInstance()->PlaybakCtrl(); + if (nullptr != pPlayback) { + bRectSelectOK = pPlayback->ZoomAndMove(nDevId, rectCrop, AX_TRUE); + } + } + + interface.reportResult(bRectSelectOK); + interface.reportFinished(); + + LOG_M_D(TAG, "[%s][0x%x] ---", __func__, QThread::currentThread()); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + } while(0); + + int nZoomAndMoveRet = 0; + if (bWatcherWorking) { + m_watcherZoomAndMove.waitForFinished(); + nZoomAndMoveRet = m_watcherZoomAndMove.result(); + } + + if (nZoomAndMoveRet) { + m_bMove = true; + m_bLastMove = m_bMove; + } + + update(); + } + m_bMousePress = false; + m_bMouseMove = false; + setCursor(Qt::ArrowCursor); + } +} + +void ScaleLabel::mouseMoveEvent(QMouseEvent *ev) { + if (ev->button() == Qt::RightButton) { + if (m_bMove ) { + do { + if (!m_watcherZoomAndMove.isFinished()) { + LOG_M_I(TAG, "[%s][0x%x] Still Active.", __func__, QThread::currentThread()); + break; + } + + QFutureInterface interface; + interface.reportStarted(); + m_watcherZoomAndMove.setFuture(interface.future()); + + if (m_nLastWidth != 0 && m_nLastHeight != 0) { + m_nLabelCropW = m_nLabelCropW * this->width() / m_nLastWidth; + m_nLabelCropH = m_nLabelCropH * this->height() / m_nLastHeight; + m_nLabelCropX = m_nLabelCropX * this->width() / m_nLastWidth; + m_nLabelCropY = m_nLabelCropY * this->height() / m_nLastHeight; + m_nLastWidth = 0; + m_nLastHeight = 0; + } + + AX_NVR_DEV_ID nDevId = m_nDevId; + m_ptEnd = ev->pos(); + AX_NVR_RECT_T rectCrop = this->CalcMoveRect(); + m_ptPre = ev->pos(); + std::thread thread([this, interface, nDevId, rectCrop]() mutable { + LOG_M_D(TAG, "[%s][0x%x] +++", __func__, QThread::currentThread()); + + if (AX_NVR_VIEW_TYPE::PREVIEW == m_enViewType) { + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (nullptr != pPreview) { + pPreview->ZoomAndMove(nDevId, rectCrop, AX_TRUE); + } + } + else if (AX_NVR_VIEW_TYPE::PLAYBACK == m_enViewType) { + CAXNVRPlaybakCtrl *pPlayback = CAXNVRFramework::GetInstance()->PlaybakCtrl(); + if (nullptr != pPlayback) { + pPlayback->ZoomAndMove(nDevId, rectCrop, AX_TRUE); + } + } + + interface.reportResult(1); + interface.reportFinished(); + + LOG_M_D(TAG, "[%s][0x%x] ---", __func__, QThread::currentThread()); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + + } while(0); + + } else{ + + m_bMouseMove = true; + m_ptEnd = ev->pos(); + if (m_ptEnd.rx() < 0) m_ptEnd.setX(0); + if (m_ptEnd.rx() > this->width()) m_ptEnd.setX(this->width()); + if (m_ptEnd.ry() < 0) m_ptEnd.setY(0); + if (m_ptEnd.ry() > this->height()) m_ptEnd.setY(this->height()); + } + + update(); + } +} + +void ScaleLabel::paintEvent(QPaintEvent *ev) +{ + QLabel::paintEvent(ev); + + if (m_enViewType == AX_NVR_VIEW_TYPE::POLLING || m_enViewType == AX_NVR_VIEW_TYPE::PIP) { + return; + } + + m_painter.begin(this); + m_painter.setPen(QPen(Qt::red, 2)); + if (m_bMouseMove && !m_bMove) { + m_painter.drawRect(QRect(m_ptBegin, m_ptEnd)); + } + m_painter.end(); +} + +void ScaleLabel::mouseDoubleClickEvent(QMouseEvent *ev) { + if (ev->button() == Qt::RightButton) { + do { + m_bMove = false; + m_bLastMove = m_bMove; + + if (!m_watcherZoomAndMove.isFinished()) { + LOG_M_I(TAG, "[%s][0x%x] Still Active.", __func__, QThread::currentThread()); + break; + } + + QFutureInterface interface; + interface.reportStarted(); + m_watcherZoomAndMove.setFuture(interface.future()); + + AX_NVR_DEV_ID nDevId = m_nDevId; + AX_NVR_RECT_T rectCrop = {1, 0, 0, 0, 0}; + + std::thread thread([this, interface, nDevId, rectCrop]() mutable { + LOG_M_D(TAG, "[%s][0x%x] +++", __func__, QThread::currentThread()); + + if (AX_NVR_VIEW_TYPE::PREVIEW == m_enViewType) { + CAXNVRPreviewCtrl *pPreview = CAXNVRFramework::GetInstance()->PreviewCtrl(); + if (nullptr != pPreview) { + pPreview->ZoomAndMove(nDevId, rectCrop, AX_FALSE); + } + } + else if (AX_NVR_VIEW_TYPE::PLAYBACK == m_enViewType) { + CAXNVRPlaybakCtrl *pPlayback = CAXNVRFramework::GetInstance()->PlaybakCtrl(); + if (nullptr != pPlayback) { + pPlayback->ZoomAndMove(nDevId, rectCrop, AX_FALSE); + } + } + + interface.reportResult(1); + interface.reportFinished(); + + LOG_M_D(TAG, "[%s][0x%x] ---", __func__, QThread::currentThread()); + }); + + // detach thred, Use Future to ensure exit + thread.detach(); + + } while(0); + } +} + +void ScaleLabel::resizeEvent(QResizeEvent *event) { + /* update current window size */ + m_nLastWidth = width(); + m_nLastHeight = height(); + return QWidget::resizeEvent(event); +} diff --git a/app/demo/src/ppl/nvr/gui/ui/utils/ScaleLabel.h b/app/demo/src/ppl/nvr/gui/ui/utils/ScaleLabel.h new file mode 100644 index 0000000..b5f2ab0 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/utils/ScaleLabel.h @@ -0,0 +1,56 @@ +#pragma once +#include +#include +#include +#include +#include + +#include "AXNVRFrameworkDefine.h" + +class ScaleLabel : public QLabel +{ +Q_OBJECT +private: + virtual void mouseDoubleClickEvent(QMouseEvent *event) override; + virtual void mousePressEvent(QMouseEvent *event) override; + virtual void mouseMoveEvent(QMouseEvent *event) override; + // virtual void wheelEvent(QWheelEvent *envent) override; + virtual void mouseReleaseEvent(QMouseEvent *ev) override; + void paintEvent(QPaintEvent *event) override; + void resizeEvent(QResizeEvent *event) override; + +private: + bool m_bZoomAndMove = false; + int m_nLabelCropX = 0; + int m_nLabelCropY = 0; + int m_nLabelCropW = 0; + int m_nLabelCropH = 0; + + int m_nLastWidth = 0; + int m_nLastHeight = 0; + + QPainter m_painter; + + bool m_bMove = false; + bool m_bMousePress = false; + bool m_bMouseMove = false; + bool m_bLastMove = false; + QPoint m_ptBegin; + QPoint m_ptEnd; + QPoint m_ptPre; + + QFutureWatcher m_watcherZoomAndMove; + +public: + ScaleLabel(AX_NVR_DEV_ID nDevId, AX_NVR_VIEW_TYPE enViewType, QWidget *parent = nullptr); + ~ScaleLabel(); + void EnableZoom(bool bEnable) { m_bZoomAndMove = bEnable; }; + void Reset(); + void Restore(); + AX_NVR_RECT_T CalcCropRect(); + AX_NVR_RECT_T CalcMoveRect(); + + AX_NVR_DEV_ID m_nDevId = -1; + AX_NVR_VIEW_TYPE m_enViewType = AX_NVR_VIEW_TYPE::PREVIEW; + +}; \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/utils/SplitWidgetMgr.cpp b/app/demo/src/ppl/nvr/gui/ui/utils/SplitWidgetMgr.cpp new file mode 100644 index 0000000..4d16f9e --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/utils/SplitWidgetMgr.cpp @@ -0,0 +1,523 @@ +#include "SplitWidgetMgr.h" +#include "AXNVRFramework.h" + +#include + +#ifndef ALIGN_UP +#define ALIGN_UP(x, align) (((x) + ((align)-1)) & ~((align)-1)) +#endif + +#ifndef ALIGN_DOWN +#define ALIGN_DOWN(x, align) ((x) & ~((align)-1)) +#endif + +SplitWidgetMgr::SplitWidgetMgr(AX_NVR_VIEW_TYPE enViewType, QGridLayout *gridLayout, QWidget *parent) + : m_enViewType(enViewType) + , m_pGridLayout(gridLayout) + , m_pParentWidget(parent) +{ + switch (m_enViewType) + { + case AX_NVR_VIEW_TYPE::PREVIEW: + m_eSupportSplitType = SPLIT_TYPE::FOUR; + m_eCurrentSplitType = m_eSupportSplitType; + break; + case AX_NVR_VIEW_TYPE::PLAYBACK: + m_eSupportSplitType = SPLIT_TYPE::ONE; + m_eCurrentSplitType = m_eSupportSplitType; + break; + case AX_NVR_VIEW_TYPE::POLLING: + m_eSupportSplitType = SPLIT_TYPE::ONE; + m_eCurrentSplitType = m_eSupportSplitType; + break; + case AX_NVR_VIEW_TYPE::PIP: + m_eSupportSplitType = SPLIT_TYPE::ONE; + m_eCurrentSplitType = m_eSupportSplitType; + break; + default: + break; + } + + this->init(); +} + +SplitWidgetMgr::~SplitWidgetMgr() { + this->deinit(); +} + +void SplitWidgetMgr::Reset(void) { + for (auto &item: m_listPreviewWidgets) { + item.pDispWidget->Reset(); + } +} + +int SplitWidgetMgr::GetWidgetIndex(QWidget *pWidget) { + int index = -1; + for (auto &item: m_listPreviewWidgets) { + if (item.pDispWidget == pWidget) { + index = item.nIndex; + break; + } + } + return index; +} + +int SplitWidgetMgr::GetWidgetDevid(QWidget *pWidget) { + int index = -1; + for (auto &item: m_listPreviewWidgets) { + if (item.pDispWidget == pWidget) { + index = item.pDispWidget->m_nDevId; + break; + } + } + return index; +} + +const vector SplitWidgetMgr::CalcLayouts(SPLIT_TYPE enSplitType, + int nWidth, int nHeight, + int nLeftMargin, int nTopMargin, + int nRightMargin, int nBottomMargin) const { + + int cols_ = 0; + int rows_ = 0; + switch (enSplitType) + { + case SPLIT_TYPE::ONE: + case SPLIT_TYPE::MAX: + cols_ = 1; + rows_ = 1; + break; + case SPLIT_TYPE::FOUR: + cols_ = 2; + rows_ = 2; + break; + case SPLIT_TYPE::SIXTEEN: + case SPLIT_TYPE::EIGHT: + cols_ = 4; + rows_ = 4; + break; + case SPLIT_TYPE::THIRTYSIX: + cols_ = 6; + rows_ = 6; + break; + case SPLIT_TYPE::SIXTYFOUR: + cols_ = 8; + rows_ = 8; + break; + default: + cols_ = 1; + rows_ = 1; + break; + } + + int verticalSpacing = m_pGridLayout->verticalSpacing(); + int horizontalSpacing = m_pGridLayout->horizontalSpacing(); + int rect_w_tmp = (nWidth - (cols_ - 1) * horizontalSpacing) / cols_; + int rect_h_tmp = (nHeight - (rows_ - 1) * verticalSpacing) / rows_; + int rect_w = ALIGN_DOWN(rect_w_tmp, 8); + int rect_h = ALIGN_DOWN(rect_h_tmp, 2); + int w = rect_w * cols_ + (cols_ - 1) * horizontalSpacing; + int h = rect_h * rows_ + (rows_ - 1) * verticalSpacing; + int left_right = nWidth - w; + int top_bottom = nHeight - h; + int left = left_right / 2; + left = left - left % 2; + int right = left_right - left; + int top = top_bottom / 2; + top = top - top % 2; + int bottom = top_bottom - top; + + m_pGridLayout->setContentsMargins(nLeftMargin + left, nTopMargin + top, nRightMargin + right, nBottomMargin + bottom); + + vector vecVoRect; + QPoint pt = m_pParentWidget->mapToGlobal(QPoint(0, 0)); + if (enSplitType == SPLIT_TYPE::EIGHT) { + int index = 0; + vector channels = {1,2,4,5,6,8,9,10}; + for (AX_U32 i = 0; i < (AX_U32)rows_; ++i) { + for (AX_U32 j = 0; j < (AX_U32)cols_; ++j) { + if (std::find(channels.begin(), channels.end(), index) != channels.end()) { + index++; + continue; + } + + AX_NVR_RECT_T nvr_rect; + nvr_rect.x = pt.x() + nLeftMargin + left + j * horizontalSpacing + j * rect_w; + nvr_rect.y = pt.y() + nTopMargin + top + i * verticalSpacing + i * rect_h; + if (index == 0) { + nvr_rect.w = rect_w * 3 + horizontalSpacing * 2; + nvr_rect.h = rect_h * 3 + verticalSpacing * 2; + } + else { + nvr_rect.w = rect_w; + nvr_rect.h = rect_h; + } + vecVoRect.emplace_back(nvr_rect); + // qDebug() << nvr_rect.x << nvr_rect.y << nvr_rect.w << nvr_rect.h; + index++; + } + } + } else { + for (AX_U32 i = 0; i < (AX_U32)rows_; ++i) { + for (AX_U32 j = 0; j < (AX_U32)cols_; ++j) { + AX_NVR_RECT_T nvr_rect; + nvr_rect.x = pt.x() + nLeftMargin + left + j * horizontalSpacing + j * rect_w; + nvr_rect.y = pt.y() + nTopMargin + top + i * verticalSpacing + i * rect_h; + nvr_rect.w = rect_w; + nvr_rect.h = rect_h; + // qDebug() << nvr_rect.x << nvr_rect.y << nvr_rect.w << nvr_rect.h; + vecVoRect.emplace_back(nvr_rect); + } + } + } + return vecVoRect; +} + +const vector SplitWidgetMgr::GetViewChns(SPLIT_TYPE enSplitType, PREV_NEXT_TYPE enPrevNextType) const { + + vector vecChannels; + if (m_nMaxWidgetIndex == -1) { + const int nStep = this->get_channel_step(enSplitType); + if (nStep < 1) { + return vecChannels; + } + + int StartIndex = m_nCurrentStartIndex; + if (PREV_NEXT_TYPE::PREV == enPrevNextType) { + StartIndex = m_nCurrentStartIndex - nStep; + if (StartIndex < 0) { + StartIndex = 0; + } + } + else if (PREV_NEXT_TYPE::NEXT == enPrevNextType){ + StartIndex = StartIndex + nStep; + if (StartIndex >= MAX_DEVICE_COUNT) { + StartIndex = StartIndex - nStep; + } + } + + for (int i = StartIndex; i < StartIndex + nStep; ++i) { + auto &item = m_listPreviewWidgets[i]; + vecChannels.emplace_back(item.nIndex); + } + } else { + auto &item = m_listPreviewWidgets[m_nMaxWidgetIndex]; + vecChannels.emplace_back(item.nIndex); + } + return vecChannels; +} + +const ax_nvr_channel_vector SplitWidgetMgr::GetViewChannels(SPLIT_TYPE enSplitType, PREV_NEXT_TYPE enPrevNextType) const { + + ax_nvr_channel_vector vecChannels; + if (m_nMaxWidgetIndex == -1) { + const int nStep = this->get_channel_step(enSplitType); + if (nStep < 1) { + return vecChannels; + } + + int StartIndex = m_nCurrentStartIndex; + if (PREV_NEXT_TYPE::PREV == enPrevNextType) { + StartIndex = m_nCurrentStartIndex - nStep; + if (StartIndex < 0) { + StartIndex = 0; + } + } + else if (PREV_NEXT_TYPE::NEXT == enPrevNextType){ + StartIndex = StartIndex + nStep; + if (StartIndex >= MAX_DEVICE_COUNT) { + StartIndex = StartIndex - nStep; + } + } + + for (int i = StartIndex; i < StartIndex + nStep; ++i) { + auto &item = m_listPreviewWidgets[i]; + vecChannels.emplace_back(make_tuple(item.nIndex, item.pDispWidget->m_nDevId)); + } + } else { + auto &item = m_listPreviewWidgets[m_nMaxWidgetIndex]; + vecChannels.emplace_back(make_tuple(item.nIndex, item.pDispWidget->m_nDevId)); + + } + return vecChannels; +} + +void SplitWidgetMgr::ChangeSplitWidgets(SPLIT_TYPE eSplitType) { + if (eSplitType != SPLIT_TYPE::MAX) { + m_eCurrentSplitType = eSplitType; + } + m_nCurrentStartIndex = 0; + + this->change_view_videos(); +} + +bool SplitWidgetMgr::ChangePrevNextWidgets(PREV_NEXT_TYPE ePrevNextType, bool bTest) { + + bool bRet = false; + do { + + const int nStep = this->get_channel_step(m_eCurrentSplitType); + if (nStep < 1) { + break; + } + + int nCurrentStartIndex = m_nCurrentStartIndex; + if (PREV_NEXT_TYPE::PREV == ePrevNextType) { + if (m_nCurrentStartIndex == 0) break; + + nCurrentStartIndex = nCurrentStartIndex - nStep; + if (nCurrentStartIndex < 0) { + break; + } + } + else if (PREV_NEXT_TYPE::NEXT == ePrevNextType) { + if (m_nCurrentStartIndex == MAX_DEVICE_COUNT - nStep) break; + nCurrentStartIndex = nCurrentStartIndex + nStep; + if (nCurrentStartIndex >= MAX_DEVICE_COUNT) { + break; + } + } else { + break; + } + + if (!bTest) { + m_nCurrentStartIndex = nCurrentStartIndex; + this->change_view_videos(); + } + bRet = true; + } while (0); + + return bRet; +} + +void SplitWidgetMgr::MinMaxSelected(int nWighetIndexSeled) { + if (nWighetIndexSeled < 0 || nWighetIndexSeled > 63) { + return; + } + + if (m_nMaxWidgetIndex == -1) { // MAX + auto &item = m_listPreviewWidgets[nWighetIndexSeled]; + if (item.pDispWidget != nullptr) { + this->hide_view_videos(); + m_nMaxWidgetIndex = item.nIndex; + this->visible_widget(item, true, 0, 0); + item.pDispWidget->Restore(); + } + } else { // MIN + auto &item = m_listPreviewWidgets[m_nMaxWidgetIndex]; + this->change_view_videos(); + item.pDispWidget->Restore(); + m_nMaxWidgetIndex = -1; + } +} + +// int SplitWidgetMgr::MaxWidgetSelected(QLabel *pWidget) { +// int nIndex = m_nMaxWidgetIndex; +// if (m_nMaxWidgetIndex == -1) { +// this->hide_view_videos(); +// for (auto &wdg: m_listPreviewWidgets) { +// if (wdg.pDispWidget != pWidget) continue; +// m_nMaxWidgetIndex = wdg.nIndex; +// this->visible_widget(wdg, true, 0, 0); +// break; +// } +// return m_nMaxWidgetIndex; +// } +// m_nMaxWidgetIndex = -1; +// this->change_view_videos(); +// return m_nMaxWidgetIndex; +// } + +void SplitWidgetMgr::init() +{ + QStringList qss; + qss.append("QFrame{border:2px solid #000000;}"); + // qss.append("ScaleLabel{font:75 25px;color:#F0F0F0;border:none;background-color: rgba(255, 117, 125, 65);}"); + qss.append("ScaleLabel{font:75 25px;color:#F0F0F0;border:1px solid #959595;}"); + if (m_enViewType != AX_NVR_VIEW_TYPE::POLLING && m_enViewType != AX_NVR_VIEW_TYPE::PIP) { + qss.append("ScaleLabel:focus{border:2px solid #00BB9E;}"); + } + m_pParentWidget->setStyleSheet(qss.join("")); + + m_nMaxWidgetIndex = -1; + + for (int i = 0; i < MAX_DEVICE_COUNT; i++) { + + NVR_PREVIEW_WIDGET_T preview_widget; + + preview_widget.nIndex = i; + if (AX_NVR_VIEW_TYPE::PLAYBACK == m_enViewType) { + preview_widget.pDispWidget = new ScaleLabel(-1, m_enViewType, m_pParentWidget); + } + else if (AX_NVR_VIEW_TYPE::PIP == m_enViewType) { + preview_widget.pDispWidget = new ScaleLabel(-1, m_enViewType, m_pParentWidget); + } + else { + preview_widget.pDispWidget = new ScaleLabel(i, m_enViewType, m_pParentWidget); + } + + preview_widget.pDispWidget->setObjectName(QString("video%1").arg(i + 1)); + preview_widget.pDispWidget->installEventFilter(m_pParentWidget); + preview_widget.pDispWidget->setFocusPolicy(Qt::StrongFocus); + preview_widget.pDispWidget->setAlignment(Qt::AlignTop|Qt::AlignLeft); + if (m_enViewType != AX_NVR_VIEW_TYPE::PLAYBACK && m_enViewType != AX_NVR_VIEW_TYPE::PIP) { + // if (m_enViewType != AX_NVR_VIEW_TYPE::PLAYBACK) { + preview_widget.pDispWidget->setText(QString("CHN %1").arg(i + 1)); + } + + m_listPreviewWidgets.append(preview_widget); + } + + m_listPreviewWidgets[0].pDispWidget->setFocus(); +} + +void SplitWidgetMgr::SetChannelsText(PLAYBACK_ACTION_TYPE enActionType, const ax_nvr_channel_vector &vecChannels, const QString& strAppendText /*= ""*/) { + for (auto &chn: vecChannels) { + AX_NVR_DEV_ID devid = get<1>(chn); + int i = get<0>(chn); + if (PLAYBACK_ACTION_TYPE::PLAY == enActionType) { + m_listPreviewWidgets[i].pDispWidget->m_nDevId = devid; + m_listPreviewWidgets[i].pDispWidget->setText(QString("CHN %1").arg(devid + 1)); + } else if (PLAYBACK_ACTION_TYPE::STOP == enActionType) { + m_listPreviewWidgets[i].pDispWidget->m_nDevId = -1; + m_listPreviewWidgets[i].pDispWidget->setText(QString("")); + } else if (PLAYBACK_ACTION_TYPE::FAST_SPEED == enActionType || PLAYBACK_ACTION_TYPE::SLOW_SPEED == enActionType) { + m_listPreviewWidgets[i].pDispWidget->setText(QString("CHN %1 %2").arg(devid + 1).arg(strAppendText)); + } + } +} + +void SplitWidgetMgr::deinit() { + for (int i = 0; i < MAX_DEVICE_COUNT; i++) { + ScaleLabel *pDispWidget = m_listPreviewWidgets.at(i).pDispWidget; + delete pDispWidget; + pDispWidget = nullptr; + } +} + +void SplitWidgetMgr::change_view_videos() { + m_nMaxWidgetIndex = -1; + this->hide_view_videos(); + switch (m_eCurrentSplitType) + { + case SPLIT_TYPE::ONE: + case SPLIT_TYPE::FOUR: + case SPLIT_TYPE::SIXTEEN: + case SPLIT_TYPE::THIRTYSIX: + case SPLIT_TYPE::SIXTYFOUR: + this->change_video(m_nCurrentStartIndex, m_eCurrentSplitType); + break; + case SPLIT_TYPE::EIGHT: + this->change_video_8(m_nCurrentStartIndex); + break; + default: + break; + } +} + +void SplitWidgetMgr::change_video_8(int index) +{ + int nTempIndex = index; + this->visible_widget(m_listPreviewWidgets[nTempIndex++], true, 0, 0, 3, 3); + this->visible_widget(m_listPreviewWidgets[nTempIndex++], true, 0, 3, 1, 1); + this->visible_widget(m_listPreviewWidgets[nTempIndex++], true, 1, 3, 1, 1); + this->visible_widget(m_listPreviewWidgets[nTempIndex++], true, 2, 3, 1, 1); + this->visible_widget(m_listPreviewWidgets[nTempIndex++], true, 3, 0, 1, 1 ); + this->visible_widget(m_listPreviewWidgets[nTempIndex++], true, 3, 1, 1, 1); + this->visible_widget(m_listPreviewWidgets[nTempIndex++], true, 3, 2, 1, 1); + this->visible_widget(m_listPreviewWidgets[nTempIndex++], true, 3, 3, 1, 1); + + m_listPreviewWidgets[index].pDispWidget->setFocus(); +} + +void SplitWidgetMgr::change_video(int index, SPLIT_TYPE eSplitType) +{ + int count = 0; + int row = 0; + int column = 0; + for (int i = 0; i < MAX_DEVICE_COUNT; i++) { + if (i >= index) { + this->visible_widget(m_listPreviewWidgets[i], true, row, column); + count++; + column++; + if (column == (int)eSplitType) { + row++; + column = 0; + } + } + + if (count == ((int)eSplitType * (int)eSplitType)) { + break; + } + } + + for (auto it : m_listPreviewWidgets) { + it.pDispWidget->EnableZoom(AX_FALSE); + if (it.bDisp && eSplitType == SPLIT_TYPE::ONE) { + it.pDispWidget->EnableZoom(AX_TRUE); + } + } + + m_listPreviewWidgets[index].pDispWidget->setFocus(); +} + +void SplitWidgetMgr::hide_view_videos() { + m_nMaxWidgetIndex = -1; + for (int i = 0; i < MAX_DEVICE_COUNT; i++) { + this->visible_widget(m_listPreviewWidgets[i], false); + } +} + +void SplitWidgetMgr::visible_widget(NVR_PREVIEW_WIDGET_T &disp, bool bVisible, + int row/*=-1*/, int column/*=-1*/, int rowSpan/*=-1*/, int columnSpan/*=-1*/) { + + disp.bDisp = bVisible; + ScaleLabel *pDispWidget = disp.pDispWidget; + pDispWidget->setVisible(bVisible); + pDispWidget->EnableZoom(bVisible); + pDispWidget->Reset(); + if (bVisible) { + // if (rowSpan == -1 && columnSpan == -1 && row == -1 && column == -1) { + // m_pGridLayout->addWidget(pDispWidget); + // } + // else + if (rowSpan == -1 && columnSpan == -1) { + m_pGridLayout->addWidget(pDispWidget, row, column); + } + else { + m_pGridLayout->addWidget(pDispWidget, row, column, rowSpan, columnSpan); + } + } + else { + m_pGridLayout->removeWidget(pDispWidget); + } +} + +int SplitWidgetMgr::get_channel_step(SPLIT_TYPE enSplitType) const { + + int nStep = 1; + switch (enSplitType) + { + case SPLIT_TYPE::ONE: + nStep = 1; + break; + case SPLIT_TYPE::FOUR: + nStep = 4; + break; + case SPLIT_TYPE::EIGHT: + nStep = 8; + break; + case SPLIT_TYPE::SIXTEEN: + nStep = 16; + break; + case SPLIT_TYPE::THIRTYSIX: + nStep = 36; + break; + case SPLIT_TYPE::SIXTYFOUR: + nStep = 64; + break; + default: + break; + } + return nStep; +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/gui/ui/utils/SplitWidgetMgr.h b/app/demo/src/ppl/nvr/gui/ui/utils/SplitWidgetMgr.h new file mode 100644 index 0000000..9ed6993 --- /dev/null +++ b/app/demo/src/ppl/nvr/gui/ui/utils/SplitWidgetMgr.h @@ -0,0 +1,78 @@ +#pragma once +#include +#include +#include +#include + +using namespace std; + +#include "global/UiGlobalDef.h" +#include "AXNVRFrameworkDefine.h" +#include "ScaleLabel.h" + + +typedef struct _NVR_PREVIEW_WIDGET_T { + int nIndex = -1; + ScaleLabel *pDispWidget = nullptr; + bool bDisp = false; + NVR_RECT_T rect; +} NVR_PREVIEW_WIDGET_T; + +class SplitWidgetMgr : public QObject { + + Q_OBJECT + +public: + SplitWidgetMgr(AX_NVR_VIEW_TYPE enViewType, QGridLayout *gridLayout, QWidget *parent); + ~SplitWidgetMgr(); + void Reset(void); + + void MinMaxSelected(int nWighetIndexSeled); + + const vector CalcLayouts(SPLIT_TYPE enSplitType, + int nWidth, int nHeight, + int nLeftMargin, int nTopMargin, int nRightMargin, int nBottomMargin) const; + + const ax_nvr_channel_vector GetViewChannels(SPLIT_TYPE enSplitType, + PREV_NEXT_TYPE enPrevNextType = PREV_NEXT_TYPE::UNKNOW) const; + const vector GetViewChns(SPLIT_TYPE enSplitType, + PREV_NEXT_TYPE enPrevNextType = PREV_NEXT_TYPE::UNKNOW) const; + int GetWidgetIndex(QWidget *pWidget); + int GetWidgetDevid(QWidget *pWidget); + QWidget *GetCurrentStartWidget() { + return m_listPreviewWidgets[m_nCurrentStartIndex].pDispWidget; + }; + // const vector IndexMapDevID(const vector); + + SPLIT_TYPE GetCurrentSplitType() const { return m_eCurrentSplitType; }; + void ChangeSplitWidgets(SPLIT_TYPE eSplitType); + bool ChangePrevNextWidgets(PREV_NEXT_TYPE ePrevNextType, bool bTest=false); + void SetChannelsText(PLAYBACK_ACTION_TYPE enActionType, const ax_nvr_channel_vector &vecChannels, const QString& strAppendText = ""); + QList& GetPreviewWidgetList() { return m_listPreviewWidgets; }; + + AX_NVR_VIEW_TYPE m_enViewType = AX_NVR_VIEW_TYPE::PREVIEW; + int m_nMaxWidgetIndex = -1; + +private: + QGridLayout *m_pGridLayout {nullptr}; + QWidget *m_pParentWidget {nullptr}; + + int m_nCurrentStartIndex {0}; + int m_nCurrentIndex {-1}; + SPLIT_TYPE m_eSupportSplitType {SPLIT_TYPE::SIXTYFOUR}; + SPLIT_TYPE m_eCurrentSplitType {SPLIT_TYPE::SIXTYFOUR}; + + QList m_listPreviewWidgets; + +private: + int get_channel_step(SPLIT_TYPE enSplitType) const; + + void init(void); + void deinit(void); + + void hide_view_videos(void); + void change_view_videos(void); + void change_video(int index, SPLIT_TYPE enSplitType); + void change_video_8(int index); + void visible_widget(NVR_PREVIEW_WIDGET_T &disp, bool bVisible, int row=-1, int column=-1, int rowSpan=-1, int columnSpan=-1); +}; \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/hal/VideoEncoderEx.cpp b/app/demo/src/ppl/nvr/hal/VideoEncoderEx.cpp new file mode 100644 index 0000000..cf9175f --- /dev/null +++ b/app/demo/src/ppl/nvr/hal/VideoEncoderEx.cpp @@ -0,0 +1,442 @@ + +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "VideoEncoderEx.hpp" +#include "AppLogApi.h" +#include + +#define TAG "VENC" + +CVideoEncoderEx::CVideoEncoderEx(VENC_ATTR_T tAttr) { + m_tVideoConfig = tAttr; +} + +AX_BOOL CVideoEncoderEx::Init() { + AX_S32 veChn = GetChannel(); + +#ifndef __MMAP_VENC_BY_APP__ + m_tVencChnAttr.stVencAttr.flag = 0x2; /* bit1: cached bit0: multi-core */ +#endif + + AX_S32 ret = AX_VENC_CreateChn(veChn, &m_tVencChnAttr); + if (AX_SUCCESS != ret) { + LOG_M_E(TAG, "[%d] AX_VENC_CreateChn fail, ret = 0x%x", veChn, ret); + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_BOOL CVideoEncoderEx::DeInit() { + AX_S32 veChn = GetChannel(); + + AX_S32 ret = AX_VENC_DestroyChn(veChn); + if (AX_SUCCESS != ret) { + LOG_M_E(TAG, "[%d] AX_VENC_DestroyChn() fail, ret = 0x%x", veChn, ret); + } + + return AX_TRUE; +} + +AX_BOOL CVideoEncoderEx::Start() { + StartRecv(); + + AX_CHAR szName[16]; + sprintf(szName, "AppVencGet%d", GetChannel()); + if (!m_thread.Start([this](AX_VOID *pArg) -> AX_VOID { DispatchThread(pArg); }, nullptr, szName)) { + LOG_MM_E(TAG, "start %s thread fail", szName); + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_BOOL CVideoEncoderEx::Stop() { + AX_S32 ret; + AX_S32 veChn = GetChannel(); + + m_thread.Stop(); + + StopRecv(); + + /* Wakeup AX_VENC_GetStream(-1) */ + ret = AX_VENC_ResetChn(veChn); + if (AX_SUCCESS != ret) { + LOG_M_E(TAG, "[%d] AX_VENC_ResetChn() fail, ret = 0x%x", ret); + } + + m_thread.Join(); + + return AX_TRUE; +} + +AX_VOID CVideoEncoderEx::StartRecv() { + LOG_MM_I(TAG, "[%d] VENC start receive", GetChannel()); + + AX_VENC_RECV_PIC_PARAM_T tRecvParam; + tRecvParam.s32RecvPicNum = -1; + + AX_S32 ret = AX_VENC_StartRecvFrame(GetChannel(), &tRecvParam); + if (AX_SUCCESS != ret) { + LOG_M_E(TAG, "[%d] AX_VENC_StartRecvFrame failed, ret=0x%x", GetChannel(), ret); + } + + return; +} + +AX_VOID CVideoEncoderEx::StopRecv() { + LOG_MM_I(TAG, "[%d] VENC stop receive", GetChannel()); + + AX_S32 ret = AX_VENC_StopRecvFrame((VENC_CHN)GetChannel()); + if (AX_SUCCESS != ret) { + LOG_M_E(TAG, "[%d] AX_VENC_StopRecvFrame failed, ret=0x%x", GetChannel(), ret); + } + LOG_MM_I(TAG, "[%d] ---", GetChannel()); +} + +AX_BOOL CVideoEncoderEx::InitRcParams() { + LOG_MM_I(TAG, "[%d] +++", GetChannel()); + + APP_ENC_RC_CONFIG tRcConfig; + if (AX_FALSE == m_tVideoConfig.GetRcCfg(m_tVideoConfig.ePayloadType, tRcConfig)) { + LOG_MM_E(TAG, "Get RC config failed."); + return AX_FALSE; + } + + RC_INFO_T rcInfo; + AX_VENC_RC_MODE_E eRcType; + switch (m_tVideoConfig.ePayloadType) { + case PT_H264: { + // set h264 cbr + eRcType = AX_VENC_RC_MODE_H264CBR; + if (AX_TRUE == tRcConfig.GetRcInfo(eRcType, rcInfo)) { + m_tVencRcParams.tH264Cbr.u32Gop = m_tVideoConfig.nGOP; + m_tVencRcParams.tH264Cbr.u32BitRate = m_tVideoConfig.nBitrate; + m_tVencRcParams.tH264Cbr.u32MinQp = ADAPTER_RANGE(rcInfo.nMinQp, 0, 51); + m_tVencRcParams.tH264Cbr.u32MaxQp = ADAPTER_RANGE(rcInfo.nMaxQp, 0, 51); + m_tVencRcParams.tH264Cbr.u32MinIQp = ADAPTER_RANGE(rcInfo.nMinIQp, 0, 51); + m_tVencRcParams.tH264Cbr.u32MaxIQp = ADAPTER_RANGE(rcInfo.nMaxIQp, 0, 51); + m_tVencRcParams.tH264Cbr.u32MinIprop = ADAPTER_RANGE(rcInfo.nMinIProp, 0, 100); + m_tVencRcParams.tH264Cbr.u32MaxIprop = ADAPTER_RANGE(rcInfo.nMaxIProp, 0, 100); + m_tVencRcParams.tH264Cbr.s32IntraQpDelta = ADAPTER_RANGE(rcInfo.nIntraQpDelta, -51, 51); + } + + // set h264 vbr + eRcType = AX_VENC_RC_MODE_H264VBR; + if (AX_TRUE == tRcConfig.GetRcInfo(eRcType, rcInfo)) { + m_tVencRcParams.tH264Vbr.u32Gop = m_tVideoConfig.nGOP; + m_tVencRcParams.tH264Vbr.u32MaxBitRate = m_tVideoConfig.nBitrate; + m_tVencRcParams.tH264Vbr.u32MinQp = ADAPTER_RANGE(rcInfo.nMinQp, 0, 51); + m_tVencRcParams.tH264Vbr.u32MaxQp = ADAPTER_RANGE(rcInfo.nMaxQp, 0, 51); + m_tVencRcParams.tH264Vbr.u32MinIQp = ADAPTER_RANGE(rcInfo.nMinIQp, 0, 51); + m_tVencRcParams.tH264Vbr.u32MaxIQp = ADAPTER_RANGE(rcInfo.nMaxIQp, 0, 51); + m_tVencRcParams.tH264Vbr.s32IntraQpDelta = ADAPTER_RANGE(rcInfo.nIntraQpDelta, -51, 51); + } + + // set h264 fixQp + eRcType = AX_VENC_RC_MODE_H264FIXQP; + if (AX_TRUE == tRcConfig.GetRcInfo(eRcType, rcInfo)) { + m_tVencRcParams.tH264FixQp.u32Gop = m_tVideoConfig.nGOP; + m_tVencRcParams.tH264FixQp.u32IQp = 25; + m_tVencRcParams.tH264FixQp.u32PQp = 30; + m_tVencRcParams.tH264FixQp.u32BQp = 32; + } + + break; + } + case PT_H265: { + // set h265 cbr + eRcType = AX_VENC_RC_MODE_H265CBR; + if (AX_TRUE == tRcConfig.GetRcInfo(eRcType, rcInfo)) { + m_tVencRcParams.tH265Cbr.u32Gop = m_tVideoConfig.nGOP; + m_tVencRcParams.tH265Cbr.u32BitRate = m_tVideoConfig.nBitrate; + m_tVencRcParams.tH265Cbr.u32MinQp = ADAPTER_RANGE(rcInfo.nMinQp, 0, 51); + m_tVencRcParams.tH265Cbr.u32MaxQp = ADAPTER_RANGE(rcInfo.nMaxQp, 0, 51); + m_tVencRcParams.tH265Cbr.u32MinIQp = ADAPTER_RANGE(rcInfo.nMinIQp, 0, 51); + m_tVencRcParams.tH265Cbr.u32MaxIQp = ADAPTER_RANGE(rcInfo.nMaxIQp, 0, 51); + m_tVencRcParams.tH265Cbr.u32MinIprop = ADAPTER_RANGE(rcInfo.nMinIProp, 0, 100); + m_tVencRcParams.tH265Cbr.u32MaxIprop = ADAPTER_RANGE(rcInfo.nMaxIProp, 0, 100); + m_tVencRcParams.tH265Cbr.s32IntraQpDelta = ADAPTER_RANGE(rcInfo.nIntraQpDelta, -51, 51); + } + + // set h265 vbr + eRcType = AX_VENC_RC_MODE_H265VBR; + if (AX_TRUE == tRcConfig.GetRcInfo(eRcType, rcInfo)) { + m_tVencRcParams.tH265Vbr.u32Gop = m_tVideoConfig.nGOP; + m_tVencRcParams.tH265Vbr.u32MaxBitRate = m_tVideoConfig.nBitrate; + m_tVencRcParams.tH265Vbr.u32MinQp = ADAPTER_RANGE(rcInfo.nMinQp, 0, 51); + m_tVencRcParams.tH265Vbr.u32MaxQp = ADAPTER_RANGE(rcInfo.nMaxQp, 0, 51); + m_tVencRcParams.tH265Vbr.u32MinIQp = ADAPTER_RANGE(rcInfo.nMinIQp, 0, 51); + m_tVencRcParams.tH265Vbr.u32MaxIQp = ADAPTER_RANGE(rcInfo.nMaxIQp, 0, 51); + m_tVencRcParams.tH265Vbr.s32IntraQpDelta = ADAPTER_RANGE(rcInfo.nIntraQpDelta, -51, 51); + } + + // set h265 fixQp + eRcType = AX_VENC_RC_MODE_H265FIXQP; + if (AX_TRUE == tRcConfig.GetRcInfo(eRcType, rcInfo)) { + m_tVencRcParams.tH265FixQp.u32Gop = m_tVideoConfig.nGOP; + m_tVencRcParams.tH265FixQp.u32IQp = 25; + m_tVencRcParams.tH265FixQp.u32PQp = 30; + m_tVencRcParams.tH265FixQp.u32BQp = 32; + } + + break; + } + default: + LOG_M_E(TAG, "Unrecognized payload type: %d.", m_tVideoConfig.ePayloadType); + break; + } + LOG_MM_I(TAG, "[%d] ---", GetChannel()); + + return AX_TRUE; +} + +AX_BOOL CVideoEncoderEx::InitParams() { + memset(&m_tVencChnAttr, 0, sizeof(AX_VENC_CHN_ATTR_T)); + + m_tVencChnAttr.stVencAttr.enMemSource = m_tVideoConfig.eMemSource; + + m_tVencChnAttr.stVencAttr.u32MaxPicWidth = m_tVideoConfig.nMaxWidth; + if (APP_ENCODE_PARSE_INVALID == m_tVideoConfig.nMaxWidth) { + m_tVencChnAttr.stVencAttr.u32MaxPicWidth = ALIGN_UP(AX_MAX(m_tVideoConfig.nWidth, m_tVideoConfig.nHeight), AX_ENCODER_FBC_STRIDE_ALIGN_VAL); + } + m_tVencChnAttr.stVencAttr.u32MaxPicHeight = m_tVideoConfig.nMaxHeight; + if (APP_ENCODE_PARSE_INVALID == m_tVideoConfig.nMaxHeight) { + m_tVencChnAttr.stVencAttr.u32MaxPicHeight = m_tVencChnAttr.stVencAttr.u32MaxPicWidth; /* Make max height same as width for the case of rotation 90 */ + } + LOG_M_I(TAG, "[%d] u32MaxPicWidth: %d, u32MaxPicHeight: %d", + GetChannel(), m_tVencChnAttr.stVencAttr.u32MaxPicWidth, + m_tVencChnAttr.stVencAttr.u32MaxPicHeight); + + m_tVencChnAttr.stVencAttr.u32PicWidthSrc = m_tVideoConfig.nWidth; + m_tVencChnAttr.stVencAttr.u32PicHeightSrc = m_tVideoConfig.nHeight; + + m_tVencChnAttr.stVencAttr.u32BufSize = m_tVideoConfig.nBufSize; /*stream buffer size*/ + + m_tVencChnAttr.stVencAttr.u8InFifoDepth = m_tVideoConfig.nInFifoDepth; + m_tVencChnAttr.stVencAttr.u8OutFifoDepth = m_tVideoConfig.nOutFifoDepth; + m_tVencChnAttr.stVencAttr.enLinkMode = m_tVideoConfig.bLink ? AX_VENC_LINK_MODE : AX_VENC_UNLINK_MODE; + m_tVencChnAttr.stRcAttr.stFrameRate.fSrcFrameRate = m_tVideoConfig.fFramerate; + m_tVencChnAttr.stRcAttr.stFrameRate.fDstFrameRate = m_tVideoConfig.fFramerate; + LOG_MM_D(TAG, "VENC attr: chn:%d, encoder:%d, w:%d, h:%d, link:%d, memSrc:%d, in_depth:%d, out_depth:%d,frameRate:%f", + m_tVideoConfig.nChannel, m_tVideoConfig.ePayloadType, m_tVencChnAttr.stVencAttr.u32PicWidthSrc, + m_tVencChnAttr.stVencAttr.u32PicHeightSrc, m_tVencChnAttr.stVencAttr.enLinkMode == AX_VENC_LINK_MODE ? AX_TRUE : AX_FALSE, + m_tVencChnAttr.stVencAttr.enMemSource, m_tVencChnAttr.stVencAttr.u8InFifoDepth, m_tVencChnAttr.stVencAttr.u8OutFifoDepth, + m_tVideoConfig.fFramerate); + + /* GOP Setting */ + m_tVencChnAttr.stGopAttr.enGopMode = AX_VENC_GOPMODE_NORMALP; + + if (!InitRcParams()) { + return AX_FALSE; + } + + m_tVencChnAttr.stVencAttr.enType = m_tVideoConfig.ePayloadType; + switch (m_tVencChnAttr.stVencAttr.enType) { + case PT_H264: { + m_tVencChnAttr.stVencAttr.enProfile = AX_VENC_H264_MAIN_PROFILE; + m_tVencChnAttr.stVencAttr.enLevel = AX_VENC_H264_LEVEL_5_2; + m_tVencChnAttr.stVencAttr.enTier = AX_VENC_HEVC_MAIN_TIER; + + if (m_tVideoConfig.eImgFormat == AX_FORMAT_YUV420_SEMIPLANAR_10BIT_P010) { + m_tVencChnAttr.stVencAttr.enProfile = AX_VENC_H264_HIGH_10_PROFILE; + m_tVencChnAttr.stVencAttr.enStrmBitDepth = AX_VENC_STREAM_BIT_10; + } + + if (m_tVideoConfig.eRcType == AX_VENC_RC_MODE_H264CBR) { + m_tVencChnAttr.stRcAttr.enRcMode = AX_VENC_RC_MODE_H264CBR; + m_tVencChnAttr.stRcAttr.s32FirstFrameStartQp = -1; + memcpy(&m_tVencChnAttr.stRcAttr.stH264Cbr, &m_tVencRcParams.tH264Cbr, sizeof(AX_VENC_H264_CBR_T)); + } else if (m_tVideoConfig.eRcType == AX_VENC_RC_MODE_H264VBR) { + m_tVencChnAttr.stRcAttr.enRcMode = AX_VENC_RC_MODE_H264VBR; + m_tVencChnAttr.stRcAttr.s32FirstFrameStartQp = -1; + memcpy(&m_tVencChnAttr.stRcAttr.stH264Vbr, &m_tVencRcParams.tH264Vbr, sizeof(AX_VENC_H264_VBR_T)); + } else if (m_tVideoConfig.eRcType == AX_VENC_RC_MODE_H264FIXQP) { + m_tVencChnAttr.stRcAttr.enRcMode = AX_VENC_RC_MODE_H264FIXQP; + memcpy(&m_tVencChnAttr.stRcAttr.stH264FixQp, &m_tVencRcParams.tH264FixQp, sizeof(AX_VENC_H264_FIXQP_T)); + } + break; + } + case PT_H265: { + m_tVencChnAttr.stVencAttr.enProfile = AX_VENC_HEVC_MAIN_PROFILE; // main profile + m_tVencChnAttr.stVencAttr.enLevel = AX_VENC_HEVC_LEVEL_5_1; + m_tVencChnAttr.stVencAttr.enTier = AX_VENC_HEVC_MAIN_TIER; + + if (m_tVideoConfig.eImgFormat == AX_FORMAT_YUV420_SEMIPLANAR_10BIT_P010) { + m_tVencChnAttr.stVencAttr.enProfile = AX_VENC_HEVC_MAIN_10_PROFILE; + m_tVencChnAttr.stVencAttr.enStrmBitDepth = AX_VENC_STREAM_BIT_10; + } + + if (m_tVideoConfig.eRcType == AX_VENC_RC_MODE_H265CBR) { + m_tVencChnAttr.stRcAttr.enRcMode = AX_VENC_RC_MODE_H265CBR; + m_tVencChnAttr.stRcAttr.s32FirstFrameStartQp = -1; + memcpy(&m_tVencChnAttr.stRcAttr.stH265Cbr, &m_tVencRcParams.tH265Cbr, sizeof(AX_VENC_H265_CBR_T)); + } else if (m_tVideoConfig.eRcType == AX_VENC_RC_MODE_H265VBR) { + m_tVencChnAttr.stRcAttr.enRcMode = AX_VENC_RC_MODE_H265VBR; + m_tVencChnAttr.stRcAttr.s32FirstFrameStartQp = -1; + memcpy(&m_tVencChnAttr.stRcAttr.stH265Vbr, &m_tVencRcParams.tH265Vbr, sizeof(AX_VENC_H265_VBR_T)); + } else if (m_tVideoConfig.eRcType == AX_VENC_RC_MODE_H265FIXQP) { + m_tVencChnAttr.stRcAttr.enRcMode = AX_VENC_RC_MODE_H265FIXQP; + memcpy(&m_tVencChnAttr.stRcAttr.stH265FixQp, &m_tVencRcParams.tH265FixQp, sizeof(AX_VENC_H265_FIXQP_T)); + } + break; + } + case PT_MJPEG: { + if (m_tVideoConfig.eRcType == AX_VENC_RC_MODE_MJPEGCBR) { + m_tVencChnAttr.stRcAttr.enRcMode = AX_VENC_RC_MODE_MJPEGCBR; + memcpy(&m_tVencChnAttr.stRcAttr.stMjpegCbr, &m_tVencRcParams.tMjpegCbr, sizeof(AX_VENC_MJPEG_CBR_T)); + } else if (m_tVideoConfig.eRcType == AX_VENC_RC_MODE_MJPEGVBR) { + m_tVencChnAttr.stRcAttr.enRcMode = AX_VENC_RC_MODE_MJPEGVBR; + memcpy(&m_tVencChnAttr.stRcAttr.stMjpegVbr, &m_tVencRcParams.tMjpegVbr, sizeof(AX_VENC_MJPEG_VBR_T)); + } else if (m_tVideoConfig.eRcType == AX_VENC_RC_MODE_MJPEGFIXQP) { + m_tVencChnAttr.stRcAttr.enRcMode = AX_VENC_RC_MODE_MJPEGFIXQP; + memcpy(&m_tVencChnAttr.stRcAttr.stMjpegFixQp, &m_tVencRcParams.tMjpegFixQp, sizeof(AX_VENC_MJPEG_FIXQP_T)); + } + break; + } + default: + LOG_M_E(TAG, "Payload type unrecognized."); + break; + } + LOG_MM(TAG, "Video attr: chn:%d, w:%d, h:%d, bitrate:%d, link:%d, memSrc:%d, in_depth:%d, out_depth:%d,frameRate:%f", + m_tVideoConfig.nChannel, m_tVencChnAttr.stVencAttr.u32PicWidthSrc, m_tVencChnAttr.stVencAttr.u32PicHeightSrc, + m_tVideoConfig.nBitrate, m_tVencChnAttr.stVencAttr.enLinkMode == AX_VENC_LINK_MODE ? AX_TRUE : AX_FALSE, + m_tVencChnAttr.stVencAttr.enMemSource, m_tVencChnAttr.stVencAttr.u8InFifoDepth, m_tVencChnAttr.stVencAttr.u8OutFifoDepth, + m_tVideoConfig.fFramerate); + return AX_TRUE; +} + +AX_VOID CVideoEncoderEx::DispatchThread(AX_VOID *) { + const AX_S32 veChn = GetChannel(); + LOG_MM_I(TAG, "[%d] +++", veChn); + + AX_VENC_STREAM_T stStream; + memset(&stStream, 0, sizeof(AX_VENC_STREAM_T)); + + AX_S32 ret = 0; + while (m_thread.IsRunning()) { + ret = AX_VENC_GetStream(veChn, &stStream, -1); + if (AX_SUCCESS != ret) { + if (!m_thread.IsRunning()) { + break; + } + + if (AX_ERR_VENC_FLOW_END == ret) { + break; + } + + if (AX_ERR_VENC_QUEUE_EMPTY == ret) { + // std::this_thread::sleep_for(std::chrono::milliseconds(10)); + LOG_MM_W(TAG, "no stream in venc %d queue", veChn); + } else { + LOG_M_E(TAG, "[%d] AX_VENC_GetStream fail, ret = 0x%x", veChn, ret); + } + + continue; + } + + if (stStream.stPack.pu8Addr && stStream.stPack.u32Len > 0) { + // AX_BOOL bIFrame = (AX_VENC_INTRA_FRAME == stStream.stPack.enCodingType) ? AX_TRUE : AX_FALSE; + // LOG_MM_D(TAG, "[%d] VENC output: type:%d, size:%d, pts:%lld, userdata:%lld", m_tVideoConfig.nChannel, bIFrame, stStream.stPack.u32Len, stStream.stPack.u64PTS, stStream.stPack.u64UserData); + + AX_BOOL bGopStart = (0 == stStream.stPack.u64UserData) ? AX_TRUE : AX_FALSE; + NotifyAll(veChn, &stStream.stPack, bGopStart); + } else { + LOG_M_E(TAG, "[%d] AX_VENC_GetStream output data error, addr %p, size %d", veChn, stStream.stPack.pu8Addr, + stStream.stPack.u32Len); + } + + ret = AX_VENC_ReleaseStream(veChn, &stStream); + if (AX_SUCCESS != ret) { + LOG_M_E(TAG, "[%d] AX_VENC_ReleaseStream(seq %lld) fail, ret = 0x%x", veChn, stStream.stPack.u64SeqNum, ret); + continue; + } + } + + LOG_MM_I(TAG, "[%d] ---", veChn); +} + +AX_BOOL CVideoEncoderEx::NotifyAll(AX_U32 nChannel, AX_VOID* pStream, AX_BOOL bGopStart /*= AX_TRUE*/) { + if (nullptr == pStream) { + return AX_TRUE; + } + + AX_BOOL bRet = AX_TRUE; + for (std::vector::iterator it = m_vecObserver.begin(); it != m_vecObserver.end(); it++) { + if (!(*it)->OnRecvStreamPack(nChannel, *(AX_VENC_PACK_T*)pStream, bGopStart)) { + bRet = AX_FALSE; + } + } + + return bRet; +} + +AX_BOOL CVideoEncoderEx::IsKeyFrame(const AX_VENC_PACK_T &stPack) { + if (PT_H264 == stPack.enType) { + for (AX_U32 i = 0; i < stPack.u32NaluNum; ++i) { + if (AX_H264E_NALU_SPS == stPack.stNaluInfo[i].unNaluType.enH264EType || + AX_H264E_NALU_PPS == stPack.stNaluInfo[i].unNaluType.enH264EType || + AX_H264E_NALU_IDRSLICE == stPack.stNaluInfo[i].unNaluType.enH264EType) { + return AX_TRUE; + } + } + } else { + for (AX_U32 i = 0; i < stPack.u32NaluNum; ++i) { + if (AX_H265E_NALU_SPS == stPack.stNaluInfo[i].unNaluType.enH265EType || + AX_H265E_NALU_PPS == stPack.stNaluInfo[i].unNaluType.enH265EType || + AX_H265E_NALU_VPS == stPack.stNaluInfo[i].unNaluType.enH265EType || + AX_H265E_NALU_IDRSLICE == stPack.stNaluInfo[i].unNaluType.enH265EType) { + return AX_TRUE; + } + } + } + + return AX_FALSE; +} + +AX_VOID CVideoEncoderEx::RegObserver(IVencPackObserver* pObserver) { + if (nullptr != pObserver) { + m_vecObserver.emplace_back(pObserver); + } +} + +AX_VOID CVideoEncoderEx::UnregObserver(IVencPackObserver* pObserver) { + if (nullptr == pObserver) { + return; + } + + for (std::vector::iterator it = m_vecObserver.begin(); it != m_vecObserver.end(); it++) { + if (*it == pObserver) { + m_vecObserver.erase(it); + break; + } + } +} + +AX_BOOL CVideoEncoderEx::ActiveGDR(AX_U32 nRefreshNum) { + AX_S32 ret; + + AX_S32 veChn = GetChannel(); + + AX_VENC_INTRA_REFRESH_T param; + memset(¶m, 0, sizeof(param)); + param.bRefresh = AX_TRUE; + param.enIntraRefreshMode = AX_VENC_INTRA_REFRESH_ROW; + param.u32RefreshNum = nRefreshNum; + + ret = AX_VENC_SetIntraRefresh(veChn, ¶m); + if (0 != ret) { + LOG_MM_E(TAG, "AX_VENC_SetIntraRefresh(veChn %d) fail, ret = 0x%x", veChn, ret); + return AX_FALSE; + } + + LOG_MM_W(TAG, "Active veChn %d GDR: %d", veChn, nRefreshNum); + return AX_TRUE; +} diff --git a/app/demo/src/ppl/nvr/hal/VideoEncoderEx.hpp b/app/demo/src/ppl/nvr/hal/VideoEncoderEx.hpp new file mode 100644 index 0000000..a5d500a --- /dev/null +++ b/app/demo/src/ppl/nvr/hal/VideoEncoderEx.hpp @@ -0,0 +1,158 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once +#include "AXThread.hpp" +#include "ax_venc_comm.h" +#include "ax_venc_rc.h" +#include "ax_venc_api.h" +#include "GlobalDef.h" +#include "haltype.hpp" +#include + +#define APP_ENCODER_TYPE_MAX 2 +#define APP_RC_TYPE_MAX 4 +#define APP_ENCODE_PARSE_INVALID (0) + + +typedef struct _stAppVencRcParams { + AX_VENC_H264_CBR_T tH264Cbr; + AX_VENC_H264_VBR_T tH264Vbr; + AX_VENC_H264_FIXQP_T tH264FixQp; + AX_VENC_H265_CBR_T tH265Cbr; + AX_VENC_H265_VBR_T tH265Vbr; + AX_VENC_H265_FIXQP_T tH265FixQp; + AX_VENC_MJPEG_CBR_T tMjpegCbr; + AX_VENC_MJPEG_VBR_T tMjpegVbr; + AX_VENC_MJPEG_FIXQP_T tMjpegFixQp; + + _stAppVencRcParams() { + memset(this, 0, sizeof(_stAppVencRcParams)); + } +} APP_VENC_RC_PARAMS_T; + +typedef struct _stRCInfo { + AX_VENC_RC_MODE_E eRcType{AX_VENC_RC_MODE_BUTT}; + AX_S32 nMinQp{APP_ENCODE_PARSE_INVALID}; + AX_S32 nMaxQp{APP_ENCODE_PARSE_INVALID}; + AX_S32 nMinIQp{APP_ENCODE_PARSE_INVALID}; + AX_S32 nMaxIQp{APP_ENCODE_PARSE_INVALID}; + AX_S32 nMinIProp{APP_ENCODE_PARSE_INVALID}; + AX_S32 nMaxIProp{APP_ENCODE_PARSE_INVALID}; + AX_S32 nFixQp{APP_ENCODE_PARSE_INVALID}; + AX_S32 nIntraQpDelta{APP_ENCODE_PARSE_INVALID}; + AX_S32 nBitrate{APP_ENCODE_PARSE_INVALID}; +} RC_INFO_T; + +typedef struct _APP_ENC_RC_CONFIG { + AX_PAYLOAD_TYPE_E ePayloadType{PT_BUTT}; + RC_INFO_T stRCInfo[APP_RC_TYPE_MAX]; + AX_BOOL GetRcInfo(AX_VENC_RC_MODE_E type, RC_INFO_T& rcInfo) { + for (AX_U8 i = 0; i < APP_RC_TYPE_MAX; i++) { + if (stRCInfo[i].eRcType == type) { + rcInfo = stRCInfo[i]; + return AX_TRUE; + } + } + return AX_FALSE; + } + AX_BOOL SetRcInfo(AX_VENC_RC_MODE_E type, RC_INFO_T rcInfo) { + for (AX_U8 i = 0; i < APP_RC_TYPE_MAX; i++) { + if (stRCInfo[i].eRcType == type) { + stRCInfo[i] = rcInfo; + return AX_TRUE; + } + } + return AX_FALSE; + } +} APP_ENC_RC_CONFIG; + +typedef struct _stVideoAttr { + AX_S32 nChannel{APP_ENCODE_PARSE_INVALID}; + AX_PAYLOAD_TYPE_E ePayloadType{PT_BUTT}; + AX_VENC_RC_MODE_E eRcType{AX_VENC_RC_MODE_BUTT}; + AX_U32 nGOP{APP_ENCODE_PARSE_INVALID}; + AX_F32 fFramerate{APP_ENCODE_PARSE_INVALID}; + AX_U32 nWidth{APP_ENCODE_PARSE_INVALID}; + AX_U32 nHeight{APP_ENCODE_PARSE_INVALID}; + AX_U32 nMaxWidth{APP_ENCODE_PARSE_INVALID}; + AX_U32 nMaxHeight{APP_ENCODE_PARSE_INVALID}; + AX_U32 nBufSize{APP_ENCODE_PARSE_INVALID}; + AX_U8 nInFifoDepth{APP_ENCODE_PARSE_INVALID}; + AX_U8 nOutFifoDepth{APP_ENCODE_PARSE_INVALID}; + AX_MEMORY_SOURCE_E eMemSource {AX_MEMORY_SOURCE_CMM}; + AX_S32 nOffsetCropX{APP_ENCODE_PARSE_INVALID}; + AX_S32 nOffsetCropY{APP_ENCODE_PARSE_INVALID}; + AX_S32 nOffsetCropW{APP_ENCODE_PARSE_INVALID}; + AX_S32 nOffsetCropH{APP_ENCODE_PARSE_INVALID}; + AX_IMG_FORMAT_E eImgFormat {AX_FORMAT_YUV420_SEMIPLANAR}; + AX_S32 nBitrate{APP_ENCODE_PARSE_INVALID}; + APP_ENC_RC_CONFIG arrRcConfig[APP_ENCODER_TYPE_MAX]; + AX_BOOL bFBC{AX_FALSE}; + AX_BOOL bLink{AX_FALSE}; + AX_U32 nGdrNum {0}; + + AX_BOOL GetRcCfg(AX_PAYLOAD_TYPE_E type, APP_ENC_RC_CONFIG& cfg) { + for (AX_U8 i = 0; i < APP_ENCODER_TYPE_MAX; i++) { + if (arrRcConfig[i].ePayloadType == type) { + cfg = arrRcConfig[i]; + return AX_TRUE; + } + } + return AX_FALSE; + } + +} VENC_ATTR_T; + + +class IVencPackObserver { +public: + virtual ~IVencPackObserver(AX_VOID) = default; + virtual AX_BOOL OnRecvStreamPack(AX_S32 nStream, CONST AX_VENC_PACK_T& stPack, AX_BOOL bGopStart = AX_TRUE) = 0; +}; + + +class CVideoEncoderEx { +public: + CVideoEncoderEx(VENC_ATTR_T tAttr); + + AX_BOOL Init(); + AX_BOOL DeInit(); + AX_BOOL Start(); + AX_BOOL Stop(); + + AX_BOOL InitParams(); + + AX_VOID StartRecv(); + AX_VOID StopRecv(); + + AX_VOID RegObserver(IVencPackObserver* pObserver); + AX_VOID UnregObserver(IVencPackObserver* pObserver); + + AX_BOOL IsKeyFrame(const AX_VENC_PACK_T &stPack); + AX_BOOL ActiveGDR(AX_U32 nRefreshNum); + + AX_S32 GetChannel() { + return m_tVideoConfig.nChannel; + } + +protected: + AX_BOOL InitRcParams(); + AX_VOID DispatchThread(AX_VOID*); + AX_BOOL NotifyAll(AX_U32 nChannel, AX_VOID* pStream, AX_BOOL bGopStart = AX_TRUE); + +protected: + VENC_ATTR_T m_tVideoConfig; + AX_VENC_CHN_ATTR_T m_tVencChnAttr; + APP_ENC_RC_CONFIG m_tRcCfg; + APP_VENC_RC_PARAMS_T m_tVencRcParams; + + CAXThread m_thread; + std::vector m_vecObserver; +}; diff --git a/app/demo/src/ppl/nvr/hal/datastreamIndFile.cpp b/app/demo/src/ppl/nvr/hal/datastreamIndFile.cpp index a24e05d..127d672 100644 --- a/app/demo/src/ppl/nvr/hal/datastreamIndFile.cpp +++ b/app/demo/src/ppl/nvr/hal/datastreamIndFile.cpp @@ -20,7 +20,7 @@ using namespace std; -AX_BOOL CDataStreamIndFile::Init(const AX_CHAR* pFilePath, AXIF_OPEN_FLAG_E eOpenFlag, AX_S32 nDate /*= 0*/, AX_S32 nTime /*= 0*/) { +AX_BOOL CDataStreamIndFile::Init(const AX_CHAR* pFilePath, AXIF_OPEN_FLAG_E eOpenFlag, AX_S32 nDate /*= 0*/, AX_S32 nTime /*= 0*/, AX_BOOL bGopMode /*= AX_FALSE*/) { LOG_MM_I(DSIF, "+++"); if (nullptr == pFilePath) { @@ -37,6 +37,7 @@ AX_BOOL CDataStreamIndFile::Init(const AX_CHAR* pFilePath, AXIF_OPEN_FLAG_E eOpe /* Start read frame with specified time */ m_nStartDate = nDate; m_nStartTime = nTime; + m_bGopMode = bGopMode; m_pIFrmOffsetBuf = (AX_U8*)malloc(MAX_IFRAME_OFFSET_BUFF_SIZE); } @@ -328,7 +329,7 @@ AXIF_FILE_INFO_EX_T CDataStreamIndFile::FindInfo(AX_S32 nInfoIndex, AX_BOOL bFil return CDSIFIterator::END_VALUE; } -AX_BOOL CDataStreamIndFile::FindFrameLocationByIndex(AX_S32 nFrmIndex, AXIF_FRAME_LOCATION_T& tLocation) { +AX_BOOL CDataStreamIndFile::FindFrameLocationByGlobalIndex(AX_S32 nGlobalFrmIndex, AXIF_FRAME_LOCATION_T& tLocation) { AX_S32 nFrmStartInd = 0; AX_S32 nFrmEndInd = -1; AX_S32 nFileIndex = 0; @@ -339,11 +340,11 @@ AX_BOOL CDataStreamIndFile::FindFrameLocationByIndex(AX_S32 nFrmIndex, AXIF_FRAM info = *itStart; nFrmStartInd = nFrmEndInd + 1; nFrmEndInd = nFrmStartInd + info.tInfo.uFrameCount - 1; - if (nFrmIndex >= nFrmStartInd && nFrmIndex <= nFrmEndInd) { + if (nGlobalFrmIndex >= nFrmStartInd && nGlobalFrmIndex <= nFrmEndInd) { tLocation.strDataFile = info.tInfo.szFilePath; tLocation.nFileIndex = nFileIndex; - tLocation.nGlobalFrameIndex = nFrmIndex; - tLocation.nFrameIndexWithinFile = nFrmIndex - nFrmStartInd; + tLocation.nGlobalFrameIndex = nGlobalFrmIndex; + tLocation.nFrameIndexWithinFile = nGlobalFrmIndex - nFrmStartInd; tLocation.nFileStartFrmIndex = nFrmStartInd; tLocation.nFileEndFrmIndex = nFrmEndInd; @@ -356,6 +357,40 @@ AX_BOOL CDataStreamIndFile::FindFrameLocationByIndex(AX_S32 nFrmIndex, AXIF_FRAM return AX_FALSE; } +AX_BOOL CDataStreamIndFile::FindFrameLocationByFrmIndexWithinFile(AX_S32 nFileIndex, AX_S32 nFrmIndex, AXIF_FRAME_LOCATION_T& tLocation) { + AX_S32 nFrmStartInd = 0; + AX_S32 nFrmEndInd = -1; + CDSIFIterator itStart = info_begin(); + CDSIFIterator itEnd = info_end(); + AXIF_FILE_INFO_EX_T info; + AX_S32 nCurrFileIndex = 0; + for (; itStart != itEnd; ++itStart) { + info = *itStart; + nFrmStartInd = nFrmEndInd + 1; + nFrmEndInd = nFrmStartInd + info.tInfo.uFrameCount - 1; + + if (nCurrFileIndex++ != nFileIndex) { + continue; + } + + if (nFrmIndex < 0 || (AX_U32)nFrmIndex >= info.tInfo.uFrameCount) { + LOG_MM_E(DSIF, "Can not locate frame (file index %d, frm index %d) within file %s(max frm count %d)", nFileIndex, nFrmIndex, info.tInfo.szFilePath, info.tInfo.uFrameCount); + return AX_FALSE; + } + + tLocation.strDataFile = info.tInfo.szFilePath; + tLocation.nFileIndex = nFileIndex; + tLocation.nGlobalFrameIndex = nFrmStartInd + nFrmIndex; + tLocation.nFrameIndexWithinFile = nFrmIndex; + tLocation.nFileStartFrmIndex = nFrmStartInd; + tLocation.nFileEndFrmIndex = nFrmEndInd; + + return AX_TRUE; + } + + return AX_FALSE; +} + AX_BOOL CDataStreamIndFile::FindFrameLocationByTime(time_t nTargetSeconds, AXIF_FRAME_LOCATION_T& tLocation, AX_BOOL bIFrameOnly /*= AX_FALSE*/, AX_BOOL bReverse /*= AX_FALSE*/) { AX_BOOL bFindResult = AX_FALSE; AX_S32 nFileStartSec = 0; @@ -370,10 +405,11 @@ AX_BOOL CDataStreamIndFile::FindFrameLocationByTime(time_t nTargetSeconds, AXIF_ info = *itStart; nFileStartSec = info.tInfo.tStartTime.uSec; nFileEndSec = info.tInfo.tEndTime.uSec; - std::unique_ptr dsf = make_unique(); if (!dsf || !dsf->Open(info.tInfo.szFilePath, AX_DSF_OPEN_FOR_READ)) { return AX_FALSE; + } else { + LOG_MM_I("DSIF", "Open file %s", info.tInfo.szFilePath); } do { @@ -382,10 +418,11 @@ AX_BOOL CDataStreamIndFile::FindFrameLocationByTime(time_t nTargetSeconds, AXIF_ AX_S32 nFrmIndexWithinFile = -1; if (bReverse) { - for (AX_S32 i = info.tInfo.uIFrameCount - 1; i >= 0; --i) { - pHeader = dsf->FindFrameByOffset(*((AX_U32 *)info.pIFrmOffsetBuf + i)); + for (AX_S32 i = info.tInfo.uIFrameCount; i > 0; --i) { + pHeader = dsf->FindFrameByOffset(*((AX_U32 *)info.pIFrmOffsetBuf + i - 1)); if (pHeader->tTimeStamp.uSec <= nTargetSeconds) { - nFrmIndexWithinFile = i; + nFrmIndexWithinFile = i - 1; + LOG_MM_D("DSIF", "Find iframe index %d(0, %d)", nFrmIndexWithinFile, info.tInfo.uIFrameCount - 1); break; } } @@ -413,10 +450,11 @@ AX_BOOL CDataStreamIndFile::FindFrameLocationByTime(time_t nTargetSeconds, AXIF_ AXDS_FRAME_HEADER_T* pHeader = nullptr; AX_S32 nFrmIndexWithinFile = -1; if (bReverse) { - for (AX_S32 i = info.tInfo.uIFrameCount - 1; i >= 0; --i) { - pHeader = dsf->FindFrameByOffset(*((AX_U32 *)info.pIFrmOffsetBuf + i)); + for (AX_S32 i = info.tInfo.uIFrameCount; i > 0; --i) { + pHeader = dsf->FindFrameByOffset(*((AX_U32 *)info.pIFrmOffsetBuf + i - 1)); if (pHeader->tTimeStamp.uSec <= nTargetSeconds) { - nFrmIndexWithinFile = i; + nFrmIndexWithinFile = i - 1; + LOG_MM_D("DSIF", "Find iframe index %d(0, %d), nFileIndex=%d", nFrmIndexWithinFile, info.tInfo.uIFrameCount, nFileIndex); break; } } @@ -473,7 +511,7 @@ CDSIFIterator CDataStreamIndFile::info_rend() { } CDSIterator CDataStreamIndFile::begin() { - if (m_nStartTime > 0) { + if (m_nStartDate > 0) { time_t timeVal = CElapsedTimer::GetTimeTVal(m_nStartDate, m_nStartTime); AXIF_FRAME_LOCATION_T tLocation; if (FindFrameLocationByTime(timeVal, tLocation, AX_TRUE)) { @@ -484,7 +522,7 @@ CDSIterator CDataStreamIndFile::begin() { } } - return CDSIterator(this, CDSIterator::BEGIN); + return CDSIterator(this, CDSIterator::END); } CDSIterator CDataStreamIndFile::end() { @@ -492,20 +530,43 @@ CDSIterator CDataStreamIndFile::end() { } CDSIterator CDataStreamIndFile::rbegin() { - if (m_nStartTime > 0) { + if (m_nStartDate > 0) { + if (0 == m_nStartTime) { + /* Enable testsuite auto reverse playback without setting timeline */ + m_nStartTime = 235959; + } + time_t timeVal = CElapsedTimer::GetTimeTVal(m_nStartDate, m_nStartTime); AXIF_FRAME_LOCATION_T tLocation; if (FindFrameLocationByTime(timeVal, tLocation, AX_TRUE, AX_TRUE)) { - return CDSIterator(this, CDSIterator::RBEGIN).Relocate(tLocation); + return CDSIterator(this, CDSIterator::RBEGIN, AX_TRUE).Relocate(tLocation); } else { LOG_MM_W(DSIF, "Can not locate at time(%d %d).", m_nStartDate, m_nStartTime); return CDSIterator(this, CDSIterator::REND); } } - return CDSIterator(this, CDSIterator::RBEGIN); + return CDSIterator(this, CDSIterator::REND); } CDSIterator CDataStreamIndFile::rend() { return CDSIterator(this, CDSIterator::REND); +} + +CDSIterator CDataStreamIndFile::gop_begin(AX_S32 nFileIndex, AX_S32 nGopStartIndex) { + if (nFileIndex >= 0 && nGopStartIndex >= 0) { + AXIF_FRAME_LOCATION_T tLocation; + if (FindFrameLocationByFrmIndexWithinFile(nFileIndex, nGopStartIndex, tLocation)) { + return CDSIterator(this, CDSIterator::BEGIN).Relocate(tLocation); + } + } else { + LOG_MM_W(DSIF, "Can not locate GOP start by frm index %d in file %d.", nGopStartIndex, nFileIndex); + return CDSIterator(this, CDSIterator::END); + } + + return CDSIterator(this, CDSIterator::BEGIN); +} + +CDSIterator CDataStreamIndFile::gop_end(AX_S32 nFileIndex, AX_S32 nGopEndIndex) { + return CDSIterator(this, CDSIterator::END); } \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/hal/datastreamIndFile.hpp b/app/demo/src/ppl/nvr/hal/datastreamIndFile.hpp index fc55014..cd14bd1 100644 --- a/app/demo/src/ppl/nvr/hal/datastreamIndFile.hpp +++ b/app/demo/src/ppl/nvr/hal/datastreamIndFile.hpp @@ -17,7 +17,6 @@ #define AX_DSIF_FILE_MAGIC 0x46495841 // "AXIF" = AXera Index File #define AX_DSIF_VERSION 0x00000001 - typedef enum { AXIF_OPEN_FOR_READ = 0, AXIF_OPEN_FOR_WRITE, @@ -26,13 +25,26 @@ typedef enum { typedef struct AXIF_FRAME_LOCATION { std::string strDataFile; /* 全局定位帧所在的数据文件。# 全局定位指当天特定通道所有视频文件中的定位 */ - AX_S32 nFileIndex; /* 全局定位针所在的数据文件的序号 */ - AX_S32 nGlobalFrameIndex; /* 全局定位帧索引 */ - AX_S32 nFrameIndexWithinFile; /* 全局定位帧在当前文件中的位置 */ - AX_S32 nFileStartFrmIndex; /* 当前文件首帧在全局定位中的位置 */ - AX_S32 nFileEndFrmIndex; /* 当前文件最后一帧在全局定位中的位置 */ + AX_S32 nFileIndex {-1}; /* 全局定位帧所在的数据文件的序号 */ + AX_S32 nGlobalFrameIndex {-1}; /* 全局定位帧索引 */ + AX_S32 nFrameIndexWithinFile {-1}; /* 全局定位帧在当前文件中的位置 */ + AX_S32 nFileStartFrmIndex {-1}; /* 当前文件首帧在全局定位中的位置 */ + AX_S32 nFileEndFrmIndex {-1}; /* 当前文件最后一帧在全局定位中的位置 */ + + AX_VOID Print() { + LOG_MM_W("DSIF", "strDataFile=%s(nFileIndex %d, nGlobalFrameIndex %d, nFrameIndexWithinFile %d, nFileStartFrmIndex %d, nFileEndFrmIndex %d)", strDataFile.c_str(), nFileIndex, nGlobalFrameIndex, nFrameIndexWithinFile, nFileStartFrmIndex, nFileEndFrmIndex); + } } AXIF_FRAME_LOCATION_T; +typedef struct AXIF_FRAME_RELOCATION_INFO { + AX_S32 nFileIndex {-1}; /* 全局定位帧所在的数据文件的序号 */ + AX_S32 nFrameIndexWithinFile {-1}; /* 全局定位帧在当前文件中的位置 */ + + AX_VOID Print() { + LOG_MM_W("DSIF", "nFileIndex %d, nFrameIndexWithinFile %d", nFileIndex, nFrameIndexWithinFile); + } +} AXIF_FRAME_RELOCATION_INFO_T; + /* Index File Header */ typedef struct AXIF_FILE_HEADER { AX_U32 uMagic; // Magic number @@ -64,6 +76,10 @@ typedef struct AXIF_FILE_INFO { AXDS_DATETIME_T tEndTime; AX_U32 uIFrameCount; AX_U32* pIFrameOffsetStart; //记录I帧的偏移,长度不定 + + AX_VOID Print() { + LOG_MM_E("PRINT", "File(%s) => uFrameCount %d", szFilePath, uFrameCount); + } } AXIF_FILE_INFO_T; typedef struct AXIF_FILE_INFO_EX { @@ -84,7 +100,7 @@ class CDataStreamIndFile { DeInit(); } - AX_BOOL Init(const AX_CHAR* pFilePath, AXIF_OPEN_FLAG_E eOpenFlag, AX_S32 nDate = 0, AX_S32 nTime = 0); + AX_BOOL Init(const AX_CHAR* pFilePath, AXIF_OPEN_FLAG_E eOpenFlag, AX_S32 nDate = 0, AX_S32 nTime = 0, AX_BOOL bGopMode = AX_FALSE); AX_BOOL DeInit(); /* Create or Update data stream file info */ @@ -93,6 +109,8 @@ class CDataStreamIndFile { AXIF_FILE_HEADER_T GetFileHeader() { return m_tFileHeader; }; AX_S32 GetInfoCount() { return m_tFileHeader.uFileCount; }; static std::string FormatFileName(AX_U8 nStreamID); + /* In GOP mode, only iterator one GOP, will not switch to next index file */ + AX_BOOL IsGopMode() { return m_bGopMode; }; AXIF_FILE_INFO_EX_T FindInfo(AX_S32 nInfoIndex, AX_BOOL bFillOffset = AX_FALSE); @@ -108,6 +126,9 @@ class CDataStreamIndFile { /* Interfaces for iterator frames reversely */ CDSIterator rbegin(); CDSIterator rend(); + /* Interfaces for iterator GOP frames */ + CDSIterator gop_begin(AX_S32 nFileIndex, AX_S32 nGopStartIndex); + CDSIterator gop_end(AX_S32 nFileIndex, AX_S32 nGopEndIndex); protected: AX_BOOL IsOpened() { return m_hFD != AX_DS_INVALID_HANDLE ? AX_TRUE : AX_FALSE; }; @@ -119,14 +140,16 @@ class CDataStreamIndFile { private: /* 通过全局定位帧索引获取数据文件路径以及该帧在当前文件中的索引 */ - AX_BOOL FindFrameLocationByIndex(AX_S32 nFrmIndex, AXIF_FRAME_LOCATION_T& tLocation); + AX_BOOL FindFrameLocationByGlobalIndex(AX_S32 nGlobalFrmIndex, AXIF_FRAME_LOCATION_T& tLocation); + AX_BOOL FindFrameLocationByFrmIndexWithinFile(AX_S32 nFileIndex, AX_S32 nFrmIndex, AXIF_FRAME_LOCATION_T& tLocation); /* 通过秒定位数据文件路径以及帧索引 */ AX_BOOL FindFrameLocationByTime(time_t nTargetSeconds, AXIF_FRAME_LOCATION_T& tLocation, AX_BOOL bIFrameOnly = AX_FALSE, AX_BOOL bReverse = AX_FALSE); private: AX_CHAR m_szFilePath[276]; - AX_S32 m_nStartDate; - AX_S32 m_nStartTime; + AX_S32 m_nStartDate {-1}; + AX_S32 m_nStartTime {-1}; + AX_BOOL m_bGopMode {AX_FALSE}; AX_S32 m_hFD {AX_DS_INVALID_HANDLE}; AXIF_FILE_HEADER_T m_tFileHeader; AX_U8* m_pIFrmOffsetBuf {nullptr}; @@ -254,7 +277,11 @@ class CDSIFIterator : public std::iteratorFindInfo(nIndex, m_bReverse ? AX_TRUE : AX_FALSE); + if (-1 != nIndex) { + return m_pDSIF->FindInfo(nIndex, m_bReverse ? AX_TRUE : AX_FALSE); + } else { + return m_pDSIF->FindInfo(m_nInfoIndex, m_bReverse ? AX_TRUE : AX_FALSE); + } } // Comparisons @@ -278,12 +305,16 @@ class CDSIterator : public std::iteratorIsOpened()) { value = CDSIterator::END_VALUE; return; } + m_bOnlyIFrame = bOnlyIFrame; if (BEGIN == nIndex) { m_bReverse = AX_FALSE; @@ -321,6 +353,7 @@ class CDSIterator : public std::iteratorGetFileHeader(); m_nCurrFileEndInd = tDataFileHeader.uFrameCount - 1; @@ -329,24 +362,66 @@ class CDSIterator : public std::iteratorGetFileHeader().uTotalIFrameCount; - m_itDSIF = m_pDSIF->info_rbegin(); - m_itEndDSIF = m_pDSIF->info_rend(); + if (m_bOnlyIFrame) { + m_nTotalFrameCount = m_pDSIF->GetFileHeader().uTotalIFrameCount; + m_itDSIF = m_pDSIF->info_rbegin(); + m_itEndDSIF = m_pDSIF->info_rend(); + /* Locate to the first file with frame data (In case space is full, empty file without data would be created) */ + while (m_itDSIF != m_itEndDSIF && (*m_itDSIF).tInfo.uIFrameCount == 0) { + m_itDSIF++; + } + + if (m_itDSIF == m_itEndDSIF) { + value = CDSIterator::END_VALUE; + } + + m_pDSF = new CDataStreamFile(); + if (!OpenDataFile((*m_itDSIF).tInfo.szFilePath)) { + LOG_MM_E("DS_RITER", "Open data file %s failed.", (*m_itDSIF).tInfo.szFilePath); + value = CDSIterator::END_VALUE; + return; + } + + m_nCurrFrameIndex = 0; + m_nCurrFileIndex = m_pDSIF->GetFileHeader().uFileCount - 1; + m_nCurrFileIFrameIndex = (*m_itDSIF).tInfo.uIFrameCount - 1; + AX_U32 nIFrmOffset = *((AX_U32*)((*m_itDSIF).pIFrmOffsetBuf) + m_nCurrFileIFrameIndex); + value = m_pDSF->FindFrameByOffset(nIFrmOffset); - m_pDSF = new CDataStreamFile(); - if (!OpenDataFile((*m_itDSIF).tInfo.szFilePath)) { - LOG_MM_E("DS_RITER", "Open data file %s failed.", (*m_itDSIF).tInfo.szFilePath); - value = CDSIterator::END_VALUE; - return; + m_nCurrFileEndInd = (*m_itDSIF).tInfo.uIFrameCount - 1; + } else { + m_nTotalFrameCount = m_pDSIF->GetFileHeader().uTotalFrameCount; + m_itDSIF = m_pDSIF->info_rbegin(); + m_itEndDSIF = m_pDSIF->info_rend(); + /* Locate to the first file with frame data (In case space is full, empty file without data would be created) */ + while (m_itDSIF != m_itEndDSIF && (*m_itDSIF).tInfo.uFrameCount == 0) { + m_itDSIF++; + } + + if (m_itDSIF == m_itEndDSIF) { + value = CDSIterator::END_VALUE; + } + + m_pDSF = new CDataStreamFile(); + if (!OpenDataFile((*m_itDSIF).tInfo.szFilePath)) { + LOG_MM_E("DS_ITER", "Open data file %s failed.", (*m_itDSIF).tInfo.szFilePath); + value = CDSIterator::END_VALUE; + return; + } + + m_itDSF = m_pDSF->frm_rbegin(); + if (m_itDSF == m_pDSF->frm_rend()) { + value = CDSIterator::END_VALUE; + return; + } + + value = *m_itDSF; + m_nCurrFrameIndex = 0; + m_nCurrFileIndex = m_pDSIF->GetFileHeader().uFileCount - 1; + + AXDS_FILE_HEADER_T tDataFileHeader = m_pDSF->GetFileHeader(); + m_nCurrFileEndInd = tDataFileHeader.uFrameCount - 1; } - - m_nCurrFrameIndex = 0; - m_nCurrFileIFrameIndex = (*m_itDSIF).tInfo.uIFrameCount - 1; - - AX_U32 nIFrmOffset = *((AX_U32*)((*m_itDSIF).pIFrmOffsetBuf) + m_nCurrFileIFrameIndex); - value = m_pDSF->FindFrameByOffset(nIFrmOffset); - - m_nCurrFileEndInd = (*m_itDSIF).tInfo.uIFrameCount - 1; } else if (REND == nIndex) { value = CDSIterator::END_VALUE; } @@ -355,6 +430,7 @@ class CDSIterator : public std::iteratorIsGopMode()) { value = CDSIterator::END_VALUE; return *this; } - if (!OpenDataFile((*m_itDSIF).tInfo.szFilePath)) { - LOG_MM_E("DS_ITER", "Open data file %s failed.", (*m_itDSIF).tInfo.szFilePath); - value = CDSIterator::END_VALUE; - return *this; + while (1) { /* Untill find the next data file with frames */ + CloseDataFile(); + m_itDSIF++; + if (m_bReverse) { + m_nCurrFileIndex--; + } else { + m_nCurrFileIndex++; + } + + if (m_itDSIF == m_itEndDSIF) { + value = CDSIterator::END_VALUE; + return *this; + } + + if (!OpenDataFile((*m_itDSIF).tInfo.szFilePath)) { + LOG_MM_E("DS_ITER", "Open data file %s failed.", (*m_itDSIF).tInfo.szFilePath); + value = CDSIterator::END_VALUE; + return *this; + } + + if (m_pDSF->GetFileHeader().uFrameCount == 0) { + continue; + } + + break; } if (!m_bReverse) { @@ -430,7 +530,12 @@ class CDSIterator : public std::iteratorGetFileHeader().uFrameCount - 1; } else { m_nCurrFileIFrameIndex = (*m_itDSIF).tInfo.uIFrameCount - 1; - m_nCurrFileEndInd = m_nCurrFrameIndex + (*m_itDSIF).tInfo.uIFrameCount - 1; + if (m_bOnlyIFrame) { + m_nCurrFileEndInd = m_nCurrFrameIndex + (*m_itDSIF).tInfo.uIFrameCount - 1; + } else { + m_itDSF = m_pDSF->frm_rbegin(); + m_nCurrFileEndInd = m_nCurrFrameIndex + m_pDSF->GetFileHeader().uFrameCount - 1; + } } GetValue(); @@ -438,7 +543,11 @@ class CDSIterator : public std::iteratorGetFileHeader().uFrameCount == 0) { + continue; + } + + break; } if (!m_bReverse) { @@ -473,7 +597,12 @@ class CDSIterator : public std::iteratorGetFileHeader().uFrameCount - 1; } else { m_nCurrFileIFrameIndex = (*m_itDSIF).tInfo.uIFrameCount - 1; - m_nCurrFileEndInd = m_nCurrFrameIndex + (*m_itDSIF).tInfo.uIFrameCount - 1; + if (m_bOnlyIFrame) { + m_nCurrFileEndInd = m_nCurrFrameIndex + (*m_itDSIF).tInfo.uIFrameCount - 1; + } else { + m_itDSF = m_pDSF->frm_rbegin(); + m_nCurrFileEndInd = m_nCurrFrameIndex + m_pDSF->GetFileHeader().uFrameCount - 1; + } } GetValue(); @@ -481,7 +610,11 @@ class CDSIterator : public std::iteratorGetFilePath()) != 0) { m_itDSIF.Relocate(tLocation.nFileIndex); @@ -526,10 +663,13 @@ class CDSIterator : public std::iteratorFindFrameByOffset(nIFrmOffset); + + m_tRelocateInfo.nFrameIndexWithinFile = m_pDSF->FindFrmIndexByOffset(nIFrmOffset); + m_tRelocateInfo.nFileIndex = tLocation.nFileIndex; + m_nCurrFileIndex = tLocation.nFileIndex; } else { m_nCurrFrameIndex = tLocation.nGlobalFrameIndex; m_nCurrFileEndInd = tLocation.nFileEndFrmIndex; - m_itDSF.Relocate(tLocation.nFrameIndexWithinFile); value = *m_itDSF; } @@ -539,8 +679,15 @@ class CDSIterator : public std::iteratorFindFrameByOffset(nIFrmOffset); + if (m_bOnlyIFrame) { + AX_U32 nIFrmOffset = *((AX_U32*)((*m_itDSIF).pIFrmOffsetBuf) + m_nCurrFileIFrameIndex); + value = m_pDSF->FindFrameByOffset(nIFrmOffset); + + m_tRelocateInfo.nFrameIndexWithinFile = m_pDSF->FindFrmIndexByOffset(nIFrmOffset); + m_tRelocateInfo.nFileIndex = m_nCurrFileIndex; + } else { + value = *m_itDSF; + } } else { value = *m_itDSF; } diff --git a/app/demo/src/ppl/nvr/hal/datastream_play.cpp b/app/demo/src/ppl/nvr/hal/datastream_play.cpp index 198dd0c..3ca9009 100644 --- a/app/demo/src/ppl/nvr/hal/datastream_play.cpp +++ b/app/demo/src/ppl/nvr/hal/datastream_play.cpp @@ -15,13 +15,12 @@ #include #include -#define TAG "DATA_STREAM_P" #define DS_MAX_SUPPORTED_DEVICE_COUNT (128) #define DS_MAX_SUPPORTED_STREAM_COUNT (2) +#define TAG "DSIF" using namespace std; - AX_BOOL CDataStreamPlay::Init(const AXDS_PLAY_INIT_ATTR_T& tAttr) { m_tInitAttr = tAttr; @@ -39,6 +38,7 @@ AX_BOOL CDataStreamPlay::Init(const AXDS_PLAY_INIT_ATTR_T& tAttr) { m_mapDev2Mtx[i][j] = new std::mutex(); m_mapDev2ThreadParam[i][j].nDevice = i; m_mapDev2ThreadParam[i][j].nStream = j; + m_mapDev2ThreadParam[i][j].bOnlyIFrameOnReverse = m_tInitAttr.bOnlyIFrameOnReverse; m_mapDev2ThreadParam[i][j].bExited = AX_TRUE; m_mapDev2SpeedFactor[i][j] = 1; m_mapDev2StepFrmOpen[i][j] = AX_FALSE; @@ -74,9 +74,21 @@ AX_BOOL CDataStreamPlay::StartPlay(AX_U8 nDeviceID, AX_U8 nStreamID, AX_S32 nDat m_mapDev2ThreadParam[nDeviceID][nStreamID].bReverse = bReverse; m_mapDev2ThreadParam[nDeviceID][nStreamID].bExited = AX_FALSE; m_mapDev2ThreadParam[nDeviceID][nStreamID].pThread = m_mapDev2ThreadPlay[nDeviceID][nStreamID]; - if (!m_mapDev2ThreadPlay[nDeviceID][nStreamID]->Start([this](AX_VOID* pArg) -> AX_VOID { PlayThread(pArg); }, &m_mapDev2ThreadParam[nDeviceID][nStreamID], "ds_play", SCHED_FIFO, 99)) { - LOG_MM_E(TAG, "[%d][%d] Create data stream play thread failed.", nDeviceID, nStreamID); - return AX_FALSE; + + if (bReverse) { + char szName[32]; + sprintf(szName, "playR_%d_%d", nDeviceID, nStreamID); /* play reverse */ + if (!m_mapDev2ThreadPlay[nDeviceID][nStreamID]->Start([this](AX_VOID* pArg) -> AX_VOID { ReversePlayThread(pArg); }, &m_mapDev2ThreadParam[nDeviceID][nStreamID], szName, SCHED_FIFO, 99)) { + LOG_MM_E(TAG, "[%d][%d] Create data stream play thread failed.", nDeviceID, nStreamID); + return AX_FALSE; + } + } else { + char szName[32]; + sprintf(szName, "playF_%d_%d", nDeviceID, nStreamID); /* play forward */ + if (!m_mapDev2ThreadPlay[nDeviceID][nStreamID]->Start([this](AX_VOID* pArg) -> AX_VOID { PlayThread(pArg); }, &m_mapDev2ThreadParam[nDeviceID][nStreamID], szName, SCHED_FIFO, 99)) { + LOG_MM_E(TAG, "[%d][%d] Create data stream play thread failed.", nDeviceID, nStreamID); + return AX_FALSE; + } } return AX_TRUE; @@ -171,20 +183,19 @@ AX_VOID CDataStreamPlay::PlayThread(AX_VOID* pArg) { AX_U32 nStream = pParams->nStream; AX_U32 nYYYYMMDD = pParams->nYYYYMMDD; AX_U32 nHHMMSS = pParams->nHHMMSS; - AX_BOOL bReverse = pParams->bReverse; CAXThread* pThread = pParams->pThread; LOG_MM_I(TAG, "[%d][%d] +++", nDevice, nStream); CDataStreamIndFile* pInstance = CreateSearchInstance(nDevice, nStream, nYYYYMMDD, nHHMMSS); if (nullptr == pInstance) { + LOG_MM_E(TAG, "Create search instance failed."); return; } AXIF_FILE_INFO_EX_T tInfo = pInstance->FindInfo(0); /* Ignore the case that fps changes between different dsf */ - - CDSIterator itDSStart = bReverse ? pInstance->rbegin() : pInstance->begin(); - CDSIterator itDSEnd = bReverse ? pInstance->rend() : pInstance->end(); + CDSIterator itDSStart = pInstance->begin(); + CDSIterator itDSEnd = pInstance->end(); for (; itDSStart != itDSEnd; ++itDSStart) { while (pThread->IsPausing()) { @@ -205,7 +216,7 @@ AX_VOID CDataStreamPlay::PlayThread(AX_VOID* pArg) { /* Save time for reversely play at the paused time */ m_mapDev2ThreadPlayingTime[nDevice][nStream] = pFrameStart->tTimeStamp; - GenCurrPTS(nDevice, nStream, tInfo, bReverse); + GenCurrPTS(nDevice, nStream, tInfo, AX_FALSE, AX_FALSE); LOG_MM_D(TAG, "Send frame to observers, pts = %lld, type = %d", m_mapDev2CurrPTS[nDevice][nStream], pFrameStart->GetNaluType()); @@ -231,16 +242,134 @@ AX_VOID CDataStreamPlay::PlayThread(AX_VOID* pArg) { } } } + + /* Give a chance to UnRegisterObserver to get the mutex in STOP process */ + std::this_thread::sleep_for(std::chrono::milliseconds(1)); } itDSStart.Destroy(); pInstance = nullptr; + pParams->bExited = AX_TRUE; + LOG_MM_I(TAG, "[%d][%d] ---", nDevice, nStream); +} + +AX_VOID CDataStreamPlay::ReversePlayThread(AX_VOID* pArg) { + AXDS_PLAY_THREAD_PARAM_T* pParams = (AXDS_PLAY_THREAD_PARAM_T*)pArg; + AX_U32 nDevice = pParams->nDevice; + AX_U32 nStream = pParams->nStream; + AX_U32 nYYYYMMDD = pParams->nYYYYMMDD; + AX_U32 nHHMMSS = pParams->nHHMMSS; + CAXThread* pThread = pParams->pThread; + AX_U32 nPlayedGopCount = 0; + + LOG_MM_I(TAG, "[%d][%d] +++", nDevice, nStream); + + CDataStreamIndFile* pInstance = CreateSearchInstance(nDevice, nStream, nYYYYMMDD, nHHMMSS); + if (nullptr == pInstance) { + return; + } + + m_mapDev2CurrPTS[nDevice][nStream] = 0; + AXIF_FILE_INFO_EX_T tInfo = pInstance->FindInfo(0); /* Ignore the case that fps changes between different dsf */ + + CDSIterator itDSStart = pInstance->rbegin(); + CDSIterator itDSEnd = pInstance->rend(); + for (; itDSStart != itDSEnd; ++itDSStart) { + while (pThread->IsPausing()) { + if (m_mapDev2StepFrmOpen[nDevice][nStream]) { + m_mapDev2StepFrmOpen[nDevice][nStream] = AX_FALSE; + break; + } else { + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + } + + if (!pThread->IsRunning() && !pThread->IsPausing()) { + itDSStart.Terminate(); + break; + } + + AXIF_FRAME_RELOCATION_INFO_T tReloacteInfo = itDSStart.GetRelocatedInfo(); + nPlayedGopCount = GopPlay(nDevice, nStream, nYYYYMMDD, tInfo, tReloacteInfo, nPlayedGopCount); + } + + itDSStart.Destroy(); + pInstance = nullptr; pParams->bExited = AX_TRUE; LOG_MM_I(TAG, "[%d][%d] ---", nDevice, nStream); } +AX_U32 CDataStreamPlay::GopPlay(AX_U8 nDeviceID, AX_U8 nStreamID, AX_U32 nYYYYMMDD, const AXIF_FILE_INFO_EX_T& tInfo, AXIF_FRAME_RELOCATION_INFO_T& tLocationInfo, AX_U32 nLastPlayedCount /*= 0*/) { + LOG_MM_D(TAG, "[%d][%d] +++", nDeviceID, nStreamID); + + CDataStreamIndFile* pGopSearchInstance = nullptr; + pGopSearchInstance = CreateSearchInstance(nDeviceID, nStreamID, nYYYYMMDD, 0, AX_TRUE); + CDSIterator itDSStart = pGopSearchInstance->gop_begin(tLocationInfo.nFileIndex, tLocationInfo.nFrameIndexWithinFile); + CDSIterator itDSEnd = pGopSearchInstance->gop_end(tLocationInfo.nFileIndex, -1); + AX_S32 nIndex = 0; + for (; itDSStart != itDSEnd; ++itDSStart) { + AXDS_FRAME_HEADER_T* pFrameStart = *itDSStart; + if (nIndex != 0 && NALU_TYPE_IDR == pFrameStart->GetNaluType()) { + /* break before next IDR frame comes */ + break; + } + + m_mapDev2ThreadPlayingTime[nDeviceID][nStreamID] = pFrameStart->tTimeStamp; + if (nIndex == 0) { + AX_U32 nStep = 1000000 / tInfo.tInfo.uFrameRate; + nStep /= m_mapDev2SpeedFactor[nDeviceID][nStreamID]; + // /* Estimate the IDR's PTS */ + // m_mapDev2CurrPTS[nDeviceID][nStreamID] += nStep * tInfo.tInfo.uGop + nStep * (nLastPlayedCount > 0 ? nLastPlayedCount - 1 : 0); + // if (nLastPlayedCount > 0) { + // /* Padding the PTS of current GOP if last GOP is not full */ + // m_mapDev2CurrPTS[nDeviceID][nStreamID] -= nStep * (tInfo.tInfo.uGop - nLastPlayedCount); + // } + + if (nLastPlayedCount > 0) { + m_mapDev2CurrPTS[nDeviceID][nStreamID] += (nStep * (2 * nLastPlayedCount - 1)); + } else { + m_mapDev2CurrPTS[nDeviceID][nStreamID] += nStep * tInfo.tInfo.uGop; + } + } else { + GenCurrPTS(nDeviceID, nStreamID, tInfo, AX_TRUE, AX_FALSE); + } + + { + std::lock_guard lck(*m_mapDev2Mtx[nDeviceID][nStreamID]); + for (auto&& m : m_mapDev2Obs[nDeviceID][nStreamID]) { + STREAM_FRAME_T tFrame; + memset(&tFrame, 0, sizeof(STREAM_FRAME_T)); + tFrame.enPayload = tInfo.tInfo.uEncodeType; + tFrame.frame.stVideo.nPTS = m_mapDev2CurrPTS[nDeviceID][nStreamID]; + tFrame.frame.stVideo.enNalu = pFrameStart->GetNaluType(); + tFrame.frame.stVideo.pData = (AX_U8*)pFrameStart + pFrameStart->uHeaderSize; + tFrame.frame.stVideo.nLen = pFrameStart->uFrameSize; + tFrame.frame.stVideo.u64UserData = nIndex; /* Private data saves index(0 means IDR frame) for StreamContainer to flush one GOP stream */ + if (m != nullptr) { + LOG_MM_D(TAG, "[%d] Playback frame(Type:%d, Size:%d, PTS:%lld)", nIndex, tFrame.frame.stVideo.enNalu, tFrame.frame.stVideo.nLen, tFrame.frame.stVideo.nPTS); + if (!m->OnRecvStreamData(tFrame)) { + break; + } + } + } + } + + nIndex++; + + /* Give a chance to UnRegisterObserver to get the mutex in STOP process */ + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + + itDSStart.Destroy(); + pGopSearchInstance = nullptr; + + LOG_MM_D(TAG, "[%d][%d] ---", nDeviceID, nStreamID); + + return nIndex; +} + std::deque CDataStreamPlay::GetDeviceSubFolders(const string& strParentDir, AX_U8 nDeviceID) { AX_CHAR szDevPath[300] = {0}; sprintf(szDevPath, "%s/DEV_%02d", strParentDir.c_str(), nDeviceID + 1); @@ -282,13 +411,17 @@ CVideoInfoMap CDataStreamPlay::GetVideoInfo(const string& strParentDir, const st vecPeriod.reserve(nFileCount); for (CDSIFIterator itBegin = file->info_begin(), itEnd = file->info_end(); itBegin != itEnd; ++itBegin) { - AXDS_VIDEO_INFO_T period((*itBegin).tInfo.tStartTime, (*itBegin).tInfo.tEndTime); - vecPeriod.push_back(period); + if ((*itBegin).tInfo.uFrameCount > 0) { + AXDS_VIDEO_INFO_T period((*itBegin).tInfo.tStartTime, (*itBegin).tInfo.tEndTime); + vecPeriod.push_back(period); + } } file->DeInit(); - vecStreamPeriod.emplace_back(vecPeriod); + if (vecPeriod.size() > 0) { + vecStreamPeriod.emplace_back(vecPeriod); + } } } @@ -331,7 +464,7 @@ AX_BOOL CDataStreamPlay::GetStreamInfo(AX_U8 nDeviceID, AX_U8 nStreamID, AX_U32 return AX_FALSE; } -CDataStreamIndFile* CDataStreamPlay::CreateSearchInstance(AX_U8 nDeviceID, AX_U8 nStreamID, AX_S32 nDate, AX_S32 nTime /*= 0*/) { +CDataStreamIndFile* CDataStreamPlay::CreateSearchInstance(AX_U8 nDeviceID, AX_U8 nStreamID, AX_S32 nDate, AX_S32 nTime /*= 0*/, AX_BOOL bGopMode /*= AX_FALSE*/) { AX_S32 nYear = nDate / 10000; AX_S32 nMonth = (nDate % 10000) / 100; AX_S32 nDay = nDate % 100; @@ -344,7 +477,7 @@ CDataStreamIndFile* CDataStreamPlay::CreateSearchInstance(AX_U8 nDeviceID, AX_U8 } CDataStreamIndFile* dsif = new CDataStreamIndFile(); - if (!dsif->Init(strIndexFile.c_str(), AXIF_OPEN_FOR_READ, nDate, nTime)) { + if (!dsif->Init(strIndexFile.c_str(), AXIF_OPEN_FOR_READ, nDate, nTime, bGopMode)) { return nullptr; } @@ -372,17 +505,25 @@ string CDataStreamPlay::FindIndFile(std::string strParentDir, AX_U8 nDeviceID, A return string(); } -AX_VOID CDataStreamPlay::GenCurrPTS(AX_U8 nDeviceID, AX_U8 nStreamID, const AXIF_FILE_INFO_EX_T& tInfo, AX_BOOL bReverse) { - AX_U32 nStep = 0; +AX_VOID CDataStreamPlay::GenCurrPTS(AX_U8 nDeviceID, AX_U8 nStreamID, const AXIF_FILE_INFO_EX_T& tInfo, AX_BOOL bReverse, AX_BOOL bOnlyIFrameOnReverse) { + AX_S32 nStep = 0; if (bReverse) { - nStep = (AX_F32)tInfo.tInfo.uGop / tInfo.tInfo.uFrameRate * 1000000; + if (bOnlyIFrameOnReverse) { + nStep = (AX_F32)tInfo.tInfo.uGop / tInfo.tInfo.uFrameRate * 1000000; + } else { + nStep = 1000000 / tInfo.tInfo.uFrameRate * -1; + } } else { - //nStep = 1000 / tInfo.tInfo.uFrameRate * 1000; nStep = 1000000 / tInfo.tInfo.uFrameRate; } nStep /= m_mapDev2SpeedFactor[nDeviceID][nStreamID]; + if (nStep < 0 && m_mapDev2CurrPTS[nDeviceID][nStreamID] < (AX_U32)(nStep * -1)) { + LOG_MM_E(TAG, "[%d][%d][reverse:%d][step:%d] Next PTS %d is not valid, ignore the frame.", nDeviceID, nStreamID, bReverse, nStep, m_mapDev2CurrPTS[nDeviceID][nStreamID] + nStep); + return; + } + m_mapDev2CurrPTS[nDeviceID][nStreamID] += nStep; } diff --git a/app/demo/src/ppl/nvr/hal/datastream_play.hpp b/app/demo/src/ppl/nvr/hal/datastream_play.hpp index e5ff577..f8c671a 100644 --- a/app/demo/src/ppl/nvr/hal/datastream_play.hpp +++ b/app/demo/src/ppl/nvr/hal/datastream_play.hpp @@ -29,6 +29,7 @@ typedef struct AXDS_PLAY_INIT_ATTR { std::string strParentDir; // 数据文件保存父目录 AX_U8 uMaxDevCnt; // 最大通道数 AX_U8 uStreamCnt; //子码流个数 + AX_BOOL bOnlyIFrameOnReverse; // 是否仅倒放I帧 } AXDS_PLAY_INIT_ATTR_T; typedef struct AXDS_DEVICE_INFO { @@ -50,6 +51,7 @@ typedef struct AXDS_PLAY_THREAD_PARAM { AX_U32 nYYYYMMDD; // 整形表示的日期,例如:20230419 AX_U32 nHHMMSS; // 整形表示的时刻,例如:101010 AX_BOOL bReverse; // 回放模式。0:正向;1:逆向 + AX_BOOL bOnlyIFrameOnReverse; // 倒放场景I帧倒放。0:否(全帧倒放);1:是(I帧倒放) AX_BOOL bExited; CAXThread* pThread; } AXDS_PLAY_THREAD_PARAM_T; @@ -83,6 +85,8 @@ class CDataStreamPlay { AX_BOOL GetStreamInfo(AX_U8 nDeviceID, AX_U8 nStreamID, AX_U32 nDateIntVal, AXDS_STREAM_INFO_T& tOutInfo); std::pair GetCurrentDateTime(AX_U8 nDeviceID, AX_U8 nStreamID); + AXDS_PLAY_INIT_ATTR_T& GetAttr() { return m_tInitAttr; }; + AX_BOOL RegisterObserver(AX_U8 nDeviceID, AX_U8 nStreamID, IStreamObserver* pObs); AX_BOOL UnRegisterObserver(AX_U8 nDeviceID, AX_U8 nStreamID, IStreamObserver* pObs); @@ -95,14 +99,16 @@ class CDataStreamPlay { protected: AX_VOID PlayThread(AX_VOID* pArg); + AX_VOID ReversePlayThread(AX_VOID* pArg); /* Create instance for searching frames with index file corresponding to device/stream/date/time info */ - CDataStreamIndFile* CreateSearchInstance(AX_U8 nDeviceID, AX_U8 nStreamID, AX_S32 nDate, AX_S32 nTime = 0); + CDataStreamIndFile* CreateSearchInstance(AX_U8 nDeviceID, AX_U8 nStreamID, AX_S32 nDate, AX_S32 nTime = 0, AX_BOOL bGopMode = AX_FALSE); /* Destroy instance created by CreateSearchInstance */ AX_VOID DestroySearchInstance(CDataStreamIndFile* pInstance); private: static std::string FindIndFile(std::string strParentDir, AX_U8 nDeviceID, AX_U8 nStreamID, std::string strYYYYmmdd); - AX_VOID GenCurrPTS(AX_U8 nDeviceID, AX_U8 nStreamID, const AXIF_FILE_INFO_EX_T& tInfo, AX_BOOL bReverse); + AX_VOID GenCurrPTS(AX_U8 nDeviceID, AX_U8 nStreamID, const AXIF_FILE_INFO_EX_T& tInfo, AX_BOOL bReverse, AX_BOOL bOnlyIFrameOnReverse); + AX_U32 GopPlay(AX_U8 nDeviceID, AX_U8 nStreamID, AX_U32 nYYYYMMDD, const AXIF_FILE_INFO_EX_T& tInfo, AXIF_FRAME_RELOCATION_INFO_T& tReloacteInfo, AX_U32 nLastPlayedCount = 0); private: AXDS_PLAY_INIT_ATTR_T m_tInitAttr; @@ -116,4 +122,5 @@ class CDataStreamPlay { std::map>> m_mapDev2Obs; std::map> m_mapDev2Mtx; + }; diff --git a/app/demo/src/ppl/nvr/hal/datastream_record.cpp b/app/demo/src/ppl/nvr/hal/datastream_record.cpp index 6d7b345..f4eff4e 100644 --- a/app/demo/src/ppl/nvr/hal/datastream_record.cpp +++ b/app/demo/src/ppl/nvr/hal/datastream_record.cpp @@ -24,38 +24,6 @@ using namespace std; -AX_VOID CDataStreamRecord::RemoveThread(AX_VOID* pThreadParam) { - REMOVE_THREAD_PARAM_PTR pParams = (REMOVE_THREAD_PARAM_PTR)pThreadParam; - AX_U8 nDeviceID = pParams->nDeviceID; - AX_U8 nRemoveDays = pParams->nRemoveDays; - - std::deque listAllDirs = CDiskHelper::TraverseDirs(m_mapDev2Dir[nDeviceID].c_str()); - if (listAllDirs.size() == 0) { - LOG_MM_E(TAG, "No directory under %s exists, quit thread.", m_mapDev2Dir[nDeviceID].c_str()); - return; - } - - if (listAllDirs.size() == 1) { - LOG_MM_W(TAG, "[%d] Only one directory exists under %s and could not be removed.", nDeviceID, m_mapDev2Dir[nDeviceID].c_str()); - m_mapDev2DiskFullFlg[nDeviceID] = AX_TRUE; - } else { - for (AX_U8 i = 0; i < nRemoveDays; i++) { - string strDir = listAllDirs.at(i).path; - - AX_U64 nRemovedSize = 0; - std::deque listAllFiles = CDiskHelper::TraverseFiles(strDir.c_str()); - for (auto &m : listAllFiles) { - nRemovedSize += m.size; - } - - CDiskHelper::RemoveDir(strDir.c_str()); - m_mapDev2TotalSize[nDeviceID] -= nRemovedSize; - LOG_M_C(TAG, "[%d] Delete obsoleted directory %s, extra %d MB can be reused.", nDeviceID, strDir.c_str(), nRemovedSize >> 20); - } - LOG_MM_I(TAG, "[%d] Old directories for %d days(s) removed, quit thread.", nDeviceID, nRemoveDays); - } -} - AX_BOOL CDataStreamRecord::Init(const AXDS_RECORD_INIT_ATTR_T& tAttr) { if (!CheckInitAttr(tAttr)) { return AX_FALSE; @@ -118,8 +86,8 @@ AX_BOOL CDataStreamRecord::Start(AX_U8 nDeviceID, AX_U8 nStreamID, AXDSF_INIT_AT m_mapDev2DSIF[nDeviceID][nStreamID] = new CDataStreamIndFile(); /* If index file exists, open file and load header info, if not, initailize header info */ - AX_CHAR szFilePath[276] = {0}; - AX_CHAR szDateBuf[9] = {0}; + AX_CHAR szFilePath[300] = {0}; + AX_CHAR szDateBuf[16] = {0}; CElapsedTimer::GetLocalDate(szDateBuf, 16, '-'); sprintf(szFilePath, "%s/%s/%s", m_mapDev2Dir[nDeviceID].c_str(), szDateBuf, CDataStreamIndFile::FormatFileName(nStreamID).c_str()); m_mapDev2DSIF[nDeviceID][nStreamID]->Init(szFilePath, AXIF_OPEN_FOR_WRITE); @@ -220,9 +188,11 @@ AX_BOOL CDataStreamRecord::Save(AX_U8 nDeviceID, AX_U8 nStreamID, AXDS_FRAME_HEA return AX_FALSE; } - if (!m_mapDev2DSF[nDeviceID][nStreamID]->WriteFrame(pData, nSize, tFrameHeader)) { - LOG_MM_E(TAG, "[%d][%d] Save data failed.", nDeviceID, nStreamID); - return AX_FALSE; + if (!m_mapDev2DiskFullFlg[nDeviceID]) { + if (!m_mapDev2DSF[nDeviceID][nStreamID]->WriteFrame(pData, nSize, tFrameHeader)) { + LOG_MM_E(TAG, "[%d][%d] Save data failed.", nDeviceID, nStreamID); + return AX_FALSE; + } } m_mapDev2TotalSize[nDeviceID] += nRealWriteSize; @@ -246,7 +216,7 @@ AX_BOOL CDataStreamRecord::Prepare() { m_tConfig = CNVRConfigParser::GetInstance()->GetDataStreamConfig(); if (m_tConfig.bSaveDisk) { /* Create directory of device */ - AX_CHAR szChnPath[264] = {0}; + AX_CHAR szChnPath[300] = {0}; AX_U8 nMaxDevCnt = m_tInitAttr.uMaxDevCnt; for (AX_U8 i = 0; i < nMaxDevCnt; i++) { sprintf(szChnPath, "%s/DEV_%02d", m_tInitAttr.szParentDir[0], i + 1); @@ -299,9 +269,70 @@ AX_VOID CDataStreamRecord::SwitchDestination(AX_U8 nDeviceID, AX_U8 nStreamID, A /* Switch once reaches max size of device consumable spaces */ AX_U64 nChnTotalBytes = m_mapDev2TotalSize[nDeviceID] + nSize; if (((nChnTotalBytes + nSize) / 1048576.0) >= (m_tInitAttr.uMaxDevSpace - DS_CHN_RESERVE_SPACE_THRESHOLD)) { - m_tRemoveParams = {nDeviceID, nStreamID, 1}; - thread t([](CDataStreamRecord *p, AX_VOID* params) { p->RemoveThread(params); }, this, (AX_VOID*)&m_tRemoveParams); - t.detach(); + QFutureWatcher watcherRemoveThread; + QFutureInterface interface; + watcherRemoveThread.setFuture(interface.future()); + interface.reportStarted(); + + REMOVE_THREAD_PARAM_T tRemoveParams = {nDeviceID, nStreamID, 1}; + std::thread thread([this, interface, tRemoveParams]() mutable { + AX_U8 nDeviceID = tRemoveParams.nDeviceID; + AX_U8 nRemoveDays = tRemoveParams.nRemoveDays; + + std::deque listAllDirs = CDiskHelper::TraverseDirs(m_mapDev2Dir[nDeviceID].c_str()); + if (listAllDirs.size() == 0) { + LOG_MM_E(TAG, "No directory under %s exists, quit thread.", m_mapDev2Dir[nDeviceID].c_str()); + + if (interface.isRunning()) { + interface.reportFinished(); + } + return; + } + + if (listAllDirs.size() == 1) { + LOG_MM_W(TAG, "[%d] Only one directory exists under %s and could not be removed.", nDeviceID, m_mapDev2Dir[nDeviceID].c_str()); + m_mapDev2DiskFullFlg[nDeviceID] = AX_TRUE; + + if (interface.isRunning()) { + interface.reportFinished(); + } + } else { + /* Removing old data won't bother frame saving, make watcher finished and continue saving frames immediately */ + if (interface.isRunning()) { + interface.reportFinished(); + } + + for (AX_U8 i = 0; i < nRemoveDays; i++) { + string strDir = listAllDirs.at(i).path; + + AX_U64 nRemovedSize = 0; + std::deque listAllFiles = CDiskHelper::TraverseFiles(strDir.c_str()); + for (auto &m : listAllFiles) { + nRemovedSize += m.size; + } + + CDiskHelper::RemoveDir(strDir.c_str()); + m_mapDev2TotalSize[nDeviceID] -= nRemovedSize; + LOG_M_C(TAG, "[%d] Delete obsoleted directory %s, extra %d MB can be reused.", nDeviceID, strDir.c_str(), nRemovedSize >> 20); + } + LOG_MM_I(TAG, "[%d] Old directories for %d days(s) removed, quit thread.", nDeviceID, nRemoveDays); + } + }); + + thread.detach(); + + /* Waiting thread to determine whether could start saving frames */ + watcherRemoveThread.waitForFinished(); + + m_mapDev2FileInfo[nDeviceID][nStreamID].nFD = SwitchFile(nDeviceID, nStreamID); + if (AX_DS_INVALID_HANDLE == m_mapDev2FileInfo[nDeviceID][nStreamID].nFD) { + LOG_MM_E(TAG, "[%d][%d] Create data file for duration limit failed.", nDeviceID, nStreamID); + return; + } else { + LOG_MM_I(TAG, "[%d][%d] Create data file for duration limit successfully.", nDeviceID, nStreamID); + m_mapDev2FileInfo[nDeviceID][nStreamID].nStartSecond = CElapsedTimer::GetTickCount() / 1000; + m_mapDev2FileInfo[nDeviceID][nStreamID].nDay = CElapsedTimer::GetCurrDay(); + } } /* Create file on app started */ @@ -346,16 +377,16 @@ AX_VOID CDataStreamRecord::SwitchDestination(AX_U8 nDeviceID, AX_U8 nStreamID, A } AX_S32 CDataStreamRecord::CreateDataFile(AX_U8 nDeviceID, AX_U8 nStreamID) { - /* Data file parent directory format: */ - AX_CHAR szDateDir[276] = {0}; - AX_CHAR szDateBuf[9] = {0}; + /* Data file parent directory format: */ + AX_CHAR szDateDir[300] = {0}; + AX_CHAR szDateBuf[16] = {0}; CElapsedTimer::GetLocalDate(szDateBuf, 16, '-'); sprintf(szDateDir, "%s/DEV_%02d/%s", m_tInitAttr.szParentDir[0], nDeviceID + 1, szDateBuf); if (CDiskHelper::CreateDir(szDateDir, AX_FALSE)) { LOG_MM_I(TAG, "[%d][%d] Create date(%s) directory successfully.", nDeviceID, nStreamID, szDateDir); - AX_CHAR szFilePath[276] = {0}; + AX_CHAR szFilePath[300] = {0}; AX_CHAR szTimeBuf[16] = {0}; CElapsedTimer::GetLocalTime(szTimeBuf, 16, '-', AX_FALSE); sprintf(szFilePath, "%s/%s/%s%s_%s.dat", m_mapDev2Dir[nDeviceID].c_str(), szDateBuf, 0 == nStreamID ? "main" : "sub", (0 == nStreamID ? "" : to_string(nStreamID).c_str()), szTimeBuf); @@ -394,6 +425,7 @@ AX_BOOL CDataStreamRecord::CloseDataFile(AX_U8 nDeviceID, AX_U8 nStreamID) { tInfo.uHeight = tDSHeader.uHeight; tInfo.tStartTime = tDSHeader.tStartTime; tInfo.tEndTime = tDSHeader.tEndTime; + tInfo.uIFrameCount = tIFrameOffsetInfo.nCount; tInfo.pIFrameOffsetStart = tIFrameOffsetInfo.pOffsetStart; tInfo.uSize = sizeof(AXIF_FILE_INFO_T) - sizeof(AX_U32*)/* Remove ptr size of pIFrameOffsetStart */ + tInfo.uIFrameCount * sizeof(AX_U32) /* Add I frame offset buffer size */; diff --git a/app/demo/src/ppl/nvr/hal/datastream_record.hpp b/app/demo/src/ppl/nvr/hal/datastream_record.hpp index 3ea0678..62d99bb 100644 --- a/app/demo/src/ppl/nvr/hal/datastream_record.hpp +++ b/app/demo/src/ppl/nvr/hal/datastream_record.hpp @@ -22,6 +22,8 @@ #include #include #include +#include +#include #define MAX_DISK_NUMBER (16) @@ -127,7 +129,6 @@ class CDataStreamRecord { AX_BOOL CloseDataFile(AX_U8 nDeviceID, AX_U8 nStreamID); AX_S32 SwitchFile(AX_U8 nDeviceID, AX_U8 nStreamID); - AX_VOID RemoveThread(AX_VOID* pThreadParam); AX_VOID ThreadStreamMonitor(AX_VOID* pArg); private: @@ -142,7 +143,6 @@ class CDataStreamRecord { std::map> m_mapDev2Mutex; std::map> m_mapDev2MonitorInfo; - REMOVE_THREAD_PARAM_T m_tRemoveParams; std::map m_mapDev2DiskFullFlg; /* 记录前一帧类型,用于判断仅在SPS或者IDR帧场合进行文件切换,且连续的SPS-PPS-IDR场合只切换一次 */ AX_U8 m_nLastFrameType {0}; @@ -183,10 +183,10 @@ class CDataStreamObserver : public IStreamObserver { } AX_BOOL OnRecvStreamInfo(CONST STREAM_INFO_T& stInfo) override { - LOG_M_C("OBS", "%s tracks:", stInfo.strURL.c_str()); + LOG_M_C("OBS", "[%d - %s] tracks:", stInfo.nCookie, stInfo.strURL.c_str()); for (auto&& kv : stInfo.tracks) { if (PT_H264 == kv.second.enPayload || PT_H265 == kv.second.enPayload) { - LOG_M_C("OBS", "video: payload %d, profile %d level %d, num_ref_frames %d, %dx%d %d fps", kv.second.enPayload, + LOG_M_C("OBS", "[%d] video: payload %d, profile %d level %d, num_ref_frames %d, %dx%d %d fps", stInfo.nCookie, kv.second.enPayload, kv.second.info.stVideo.nProfile, kv.second.info.stVideo.nLevel, kv.second.info.stVideo.nNumRefs, kv.second.info.stVideo.nWidth, kv.second.info.stVideo.nHeight, kv.second.info.stVideo.nFps); } diff --git a/app/demo/src/ppl/nvr/hal/datastreamfile.cpp b/app/demo/src/ppl/nvr/hal/datastreamfile.cpp index 11634ef..e880548 100644 --- a/app/demo/src/ppl/nvr/hal/datastreamfile.cpp +++ b/app/demo/src/ppl/nvr/hal/datastreamfile.cpp @@ -558,10 +558,47 @@ AX_S32 CDataStreamFile::FindFrmIndexByTime(AX_S32 nSeconds, AX_BOOL bOnlyIFrame return -1; } +AX_S32 CDataStreamFile::FindFrmIndexByOffset(AX_U32 nFrmOffset) { + if (!IsOpened()) { + return -1; + } + + if (nFrmOffset >= m_tFileHeader.uTailOffset || nFrmOffset < m_tFileHeader.uDataOffset) { + LOG_MM_E(DSF, "Frame offset 0x%08X out of range[0x%08X - 0x%08X).", nFrmOffset, m_tFileHeader.uDataOffset, m_tFileHeader.uTailOffset); + return -1; + } + + AX_S32 nPos = lseek(m_hFD, m_tFileHeader.uTailOffset + sizeof(AXDS_FILE_TAIL_T) - sizeof(AX_U32*), SEEK_SET); + if (-1 == nPos) { + LOG_MM_E(DSF, "lseek to frame tail offset failed, ret=%d, err=%s.", nPos, strerror(errno)); + return -1; + } + + AX_S32 nFrmIndex = -1; + AX_U32 nFrmOffsetOfTail = 0; + for (AX_U32 i = 0; i < m_tFileHeader.uFrameCount; ++i) { + read(m_hFD, &nFrmOffsetOfTail, 4); + if (nFrmOffset == nFrmOffsetOfTail) { + nFrmIndex = i; + break; + } + } + + return nFrmIndex; +} + CDSFIterator CDataStreamFile::frm_begin() { return CDSFIterator(this, CDSFIterator::BEGIN); } CDSFIterator CDataStreamFile::frm_end() { return CDSFIterator(this, CDSFIterator::END); +} + +CDSFIterator CDataStreamFile::frm_rbegin() { + return CDSFIterator(this, CDSFIterator::RBEGIN); +} + +CDSFIterator CDataStreamFile::frm_rend() { + return CDSFIterator(this, CDSFIterator::REND); } \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/hal/datastreamfile.hpp b/app/demo/src/ppl/nvr/hal/datastreamfile.hpp index 6a778a4..99563bc 100644 --- a/app/demo/src/ppl/nvr/hal/datastreamfile.hpp +++ b/app/demo/src/ppl/nvr/hal/datastreamfile.hpp @@ -12,6 +12,7 @@ #include "AXThread.hpp" #include "AXEvent.hpp" #include "istream.hpp" +#include "AppLogApi.h" #define AX_DS_INVALID_HANDLE (-1) #define MAX_WRITE_CACHE_SIZE (1 * 1024 * 1024) // (4 * 1024 * 1024) 4MB caused THP? @@ -202,6 +203,11 @@ typedef struct AXDSF_INIT_ATTR { AX_U16 uHeight; } AXDSF_INIT_ATTR_T; +typedef struct AXDSF_FRAME_LOCATION { + AX_S32 nCurrFrameIndexWithinFile; /* 当前遍历帧索引 */ + AX_U32 nTotalFrameCount; /* 当前数据文件总帧数 */ +} AXDSF_FRAME_LOCATION_T; + class CDSFIterator; class CDataStreamFile { public: @@ -223,10 +229,13 @@ class CDataStreamFile { /* Interfaces for iterator frames */ CDSFIterator frm_begin(); CDSFIterator frm_end(); + CDSFIterator frm_rbegin(); + CDSFIterator frm_rend(); AXDS_FRAME_HEADER_T* FindFrame(AX_S32 nFrmIndex); AXDS_FRAME_HEADER_T* FindFrameByOffset(AX_U32 nFrmOffset); AX_S32 FindFrmIndexByTime(AX_S32 nSeconds, AX_BOOL bOnlyIFrame = AX_FALSE); + AX_S32 FindFrmIndexByOffset(AX_U32 nFrmOffset); protected: AX_VOID SwapBuf(); @@ -280,9 +289,12 @@ class CDSFIterator : public std::iteratorFindFrame(nIndex); - nCurrFrameIndex = nIndex; - nFrameCount = m_pDataFile->GetFileHeader().uFrameCount; + if (BEGIN == nIndex) { + m_bReverse = AX_FALSE; + value = m_pDataFile->FindFrame(nIndex); + nCurrFrameIndex = nIndex; + nFrameCount = m_pDataFile->GetFileHeader().uFrameCount; + } else if (RBEGIN == nIndex) { + m_bReverse = AX_TRUE; + nCurrFrameIndex = m_pDataFile->GetFileHeader().uFrameCount - 1; + value = m_pDataFile->FindFrame(nCurrFrameIndex); + nFrameCount = m_pDataFile->GetFileHeader().uFrameCount; + } else { + value = CDSFIterator::END_VALUE; + } } CDSFIterator(const CDSFIterator& it) { @@ -300,6 +322,7 @@ class CDSFIterator : public std::iteratorFindFrame(++nCurrFrameIndex); + if (!m_bReverse) { + value = m_pDataFile->FindFrame(++nCurrFrameIndex); + } else { + value = m_pDataFile->FindFrame(--nCurrFrameIndex); + } + return *this; } @@ -343,10 +373,24 @@ class CDSFIterator : public std::iteratorFindFrame(++nCurrFrameIndex); + + if (!m_bReverse) { + value = m_pDataFile->FindFrame(++nCurrFrameIndex); + } else { + value = m_pDataFile->FindFrame(--nCurrFrameIndex); + } + return temp; } + AXDSF_FRAME_LOCATION_T GetCurrState() { + AXDSF_FRAME_LOCATION_T tLocation; + tLocation.nCurrFrameIndexWithinFile = nCurrFrameIndex; + tLocation.nTotalFrameCount = nFrameCount; + + return tLocation; + } + CDSFIterator Relocate(AX_S32 nNewFrmIndex) { nCurrFrameIndex = nNewFrmIndex; value = m_pDataFile->FindFrame(nCurrFrameIndex); diff --git a/app/demo/src/ppl/nvr/hal/istream.hpp b/app/demo/src/ppl/nvr/hal/istream.hpp index ddc15c0..22771d2 100644 --- a/app/demo/src/ppl/nvr/hal/istream.hpp +++ b/app/demo/src/ppl/nvr/hal/istream.hpp @@ -21,6 +21,7 @@ typedef enum { DISCONNECT = 0, RECONNECT = 1, CONNECTED = 2 } CONNECT_STATUS_E; typedef struct STREAM_ATTR_S { std::string strURL; + AX_S32 nCookie; AX_U32 nMaxBufSize; RTP_TRANSPORT_MODE_E enTransportMode; AX_U32 nDebugLevel; @@ -28,6 +29,7 @@ typedef struct STREAM_ATTR_S { AX_U32 nReconnectThreshold; /* if the count of heart beat absent from server is >= nReconnThreshold, trigger to reconnect */ AX_S32 nFps; /* ONLY for ffmpeg stream, < 0: no fps ctrl, 0: auto detect fps from stream, > 0: specified fps */ STREAM_ATTR_S(AX_VOID) { + nCookie = -1; nMaxBufSize = 1920 * 1080; enTransportMode = RTP_OVER_UDP; nDebugLevel = 0; @@ -63,6 +65,7 @@ typedef struct { AX_U64 nPTS; AX_U64 nSequence; AX_U64 nFramePts; + AX_U64 u64UserData; } STREAM_VIDEO_FRAME_T; typedef struct { @@ -75,6 +78,7 @@ typedef struct { typedef struct { std::string strURL; + AX_S32 nCookie; STREAM_VIDEO_TRACK_INFO_T stVideo; std::unordered_map tracks; } STREAM_INFO_T; diff --git a/app/demo/src/ppl/nvr/hal/ivps.cpp b/app/demo/src/ppl/nvr/hal/ivps.cpp index e7cbf34..75c59f6 100644 --- a/app/demo/src/ppl/nvr/hal/ivps.cpp +++ b/app/demo/src/ppl/nvr/hal/ivps.cpp @@ -433,6 +433,15 @@ AX_BOOL CIVPS::CropResize(AX_BOOL bCrop, CONST AX_IVPS_RECT_T& stCropRect) { AX_IVPS_CROP_INFO_T stInfo; stInfo.bEnable = bCrop; if (bCrop) { + if (m_stAttr.nWidth > 0 || m_stAttr.nHeight > 0) { + if (stCropRect.nX < 0 || stCropRect.nY < 0 || (stCropRect.nX + stCropRect.nW) > m_stAttr.nWidth || + (stCropRect.nY + stCropRect.nH) > m_stAttr.nHeight) { + LOG_MM_W(TAG, "invalid ivGrp %d corrd: (%d %d) %dx%d", m_ivGrp, stInfo.tCropRect.nX, stInfo.tCropRect.nY, + stInfo.tCropRect.nW, stInfo.tCropRect.nH); + return AX_TRUE; + } + } + stInfo.eCoordMode = AX_COORD_ABS; stInfo.tCropRect = stCropRect; } else { diff --git a/app/demo/src/ppl/nvr/hal/ivps.hpp b/app/demo/src/ppl/nvr/hal/ivps.hpp index c0be73c..fff895e 100644 --- a/app/demo/src/ppl/nvr/hal/ivps.hpp +++ b/app/demo/src/ppl/nvr/hal/ivps.hpp @@ -58,11 +58,15 @@ typedef struct IVPS_ATTR_S { AX_IVPS_GRP nGrpId; AX_U32 nInDepth; AX_U32 nBackupInDepth; + AX_U32 nWidth; /* grp width */ + AX_U32 nHeight; /* grp height */ AX_U32 nChnNum; IVPS_CHN_ATTR_T stChnAttr[MAX_IVPS_CHN_NUM]; IVPS_ATTR_S(AX_VOID) { nGrpId = INVALID_IVPS_GRP; /* INVALID_IVPS_GRP: auto allocate grp id */ nInDepth = 2; + nWidth = 0; + nHeight = 0; nChnNum = 0; /* playback: nBackupInDepth = AX_VO_CHN_ATTR_T.u32FifoDepth + 1 diff --git a/app/demo/src/ppl/nvr/hal/rtspdamon.cpp b/app/demo/src/ppl/nvr/hal/rtspdamon.cpp index 39e0d5d..dea7d4f 100644 --- a/app/demo/src/ppl/nvr/hal/rtspdamon.cpp +++ b/app/demo/src/ppl/nvr/hal/rtspdamon.cpp @@ -20,6 +20,7 @@ AX_VOID CRtspDamon::DamonThread(AX_VOID* /* pArg */) { LOG_M_I(TAG, "%s: %s +++", __func__, m_stAttr.strUrl.c_str()); AX_S32 nLossCnt = {-1}; + AX_BOOL bNetDown = AX_FALSE; while (1) { if (!m_thread.IsRunning()) { @@ -36,7 +37,7 @@ AX_VOID CRtspDamon::DamonThread(AX_VOID* /* pArg */) { nLossCnt = 0; } else { ++nLossCnt; - LOG_M_W(TAG, "%d heart beats are lossed from %s", nLossCnt, m_stAttr.strUrl.c_str()); + LOG_MM_W(TAG, "[%d] %d heart beats are lossed from %s", m_stAttr.nCookie, nLossCnt, m_stAttr.strUrl.c_str()); } if (!m_thread.IsRunning()) { @@ -48,12 +49,16 @@ AX_VOID CRtspDamon::DamonThread(AX_VOID* /* pArg */) { nLossCnt = -1; ReportConnectStatus(1); - LOG_M_W(TAG, "disconnect with %s, checking network ...", m_stAttr.strUrl.c_str()); + LOG_MM_W(TAG, "[%d] disconnect with %s, checking network ...", m_stAttr.nCookie, m_stAttr.strUrl.c_str()); while (m_thread.IsRunning()) { if (0 == ping4(m_stAttr.strUrl.c_str(), 2)) { + bNetDown = AX_FALSE; break; } else { - LOG_M_W(TAG, "network to %s is down", m_stAttr.strUrl.c_str()); + if (!bNetDown) { + LOG_MM_W(TAG, "[%d] network to %s is down", m_stAttr.nCookie, m_stAttr.strUrl.c_str()); + bNetDown = AX_TRUE; + } } /* if network is down, delay to wait network stable */ @@ -63,7 +68,7 @@ AX_VOID CRtspDamon::DamonThread(AX_VOID* /* pArg */) { AX_BOOL bConn = {AX_FALSE}; AX_S32 i = {0}; while (m_thread.IsRunning()) { - LOG_M_W(TAG, "network is ok, reconnecting %d to %s ...", ++i, m_stAttr.strUrl.c_str()); + LOG_MM_W(TAG, "[%d] network is ok, reconnecting %d to %s ...", m_stAttr.nCookie, ++i, m_stAttr.strUrl.c_str()); if (m_stAttr.reconnect()) { bConn = AX_TRUE; break; @@ -74,7 +79,7 @@ AX_VOID CRtspDamon::DamonThread(AX_VOID* /* pArg */) { if (!bConn) { ReportConnectStatus(0); - LOG_M_E(TAG, "reconnect to %s fail", m_stAttr.strUrl.c_str()); + LOG_MM_E(TAG, "[%d] reconnect to %s fail", m_stAttr.nCookie, m_stAttr.strUrl.c_str()); break; } } @@ -118,8 +123,10 @@ AX_BOOL CRtspDamon::Start(AX_VOID) { LOG_M_I(TAG, "%s: %s +++", __func__, m_stAttr.strUrl.c_str()); - if (!m_thread.Start([this](AX_VOID* pArg) -> AX_VOID { DamonThread(pArg); }, this, "RtspDamon")) { - LOG_M_E(TAG, "start damon thread of %s fail", m_stAttr.strUrl.c_str()); + char szName[32]; + sprintf(szName, "rtspDamon%d", m_stAttr.nCookie); + if (!m_thread.Start([this](AX_VOID* pArg) -> AX_VOID { DamonThread(pArg); }, this, szName)) { + LOG_MM_E(TAG, "[%d] start damon thread of %s fail", m_stAttr.nCookie, m_stAttr.strUrl.c_str()); return AX_FALSE; } diff --git a/app/demo/src/ppl/nvr/hal/rtspdamon.hpp b/app/demo/src/ppl/nvr/hal/rtspdamon.hpp index e55c5fe..3bffe17 100644 --- a/app/demo/src/ppl/nvr/hal/rtspdamon.hpp +++ b/app/demo/src/ppl/nvr/hal/rtspdamon.hpp @@ -17,12 +17,14 @@ typedef struct RTSP_DAMON_ATTR_S { std::string strUrl; /* rtsp url, rtsp://192.168.2.10:8554/stream1 */ + AX_S32 nCookie; AX_S32 nKeepAliveInterval; /* heart beat interval time in seconds */ AX_S32 nReconnectThreshold; /* if the count of heart beat absent from server is >= nReconnThreshold, trigger to reconnect */ std::function reconnect; /* reconnect to rtsp server */ std::function statusReport; /* 0: disconnect, 1: reconnect, 2: connected */ RTSP_DAMON_ATTR_S(AX_VOID) { + nCookie = -1; nKeepAliveInterval = 10; nReconnectThreshold = 3; reconnect = nullptr; diff --git a/app/demo/src/ppl/nvr/hal/rtspstream.cpp b/app/demo/src/ppl/nvr/hal/rtspstream.cpp index 9aec796..ee78363 100644 --- a/app/demo/src/ppl/nvr/hal/rtspstream.cpp +++ b/app/demo/src/ppl/nvr/hal/rtspstream.cpp @@ -36,18 +36,21 @@ AX_BOOL CRtspStream::Init(CONST STREAM_ATTR_T &stAttr) { try { m_scheduler = BasicTaskScheduler::createNew(); m_env = BasicUsageEnvironment::createNew(*m_scheduler); - m_client = CAXRTSPClient::createNew(*m_env, stAttr.strURL.c_str(), cb, stAttr.nMaxBufSize, stAttr.nDebugLevel, "RTSPClient", 0); + m_client = CAXRTSPClient::createNew(*m_env, stAttr.strURL.c_str(), cb, stAttr.nMaxBufSize, stAttr.nDebugLevel, "RTSPClient", 0, + stAttr.nCookie); m_client->scs.streamTransportMode = (RTP_OVER_TCP == stAttr.enTransportMode) ? 1 : 0; /* 0: UDP 1: TCP */ m_client->scs.keepAliveInterval = stAttr.nKeepAliveInterval; m_client->Start(); + char szName[32]; + sprintf(szName, "rtspEvent%d", stAttr.nCookie); if (!m_EventLoopThread.Start( [this](AX_VOID *) -> AX_VOID { m_cExitThread = 0; m_env->taskScheduler().doEventLoop(&m_cExitThread); }, - this, "RtspEvent")) { - LOG_M_E(TAG, "%s: start %s event loop fail", __func__, stAttr.strURL.c_str()); + this, szName)) { + LOG_MM_E(TAG, "[%d] start %s event loop fail", stAttr.nCookie, stAttr.strURL.c_str()); /* client will be deleted by continueAfterDESCRIBE() -> shutdownStream() */ m_client->Stop(); @@ -68,6 +71,7 @@ AX_BOOL CRtspStream::Init(CONST STREAM_ATTR_T &stAttr) { if (!m_damon) { RTSP_DAMON_ATTR_T stDamon; stDamon.strUrl = stAttr.strURL; + stDamon.nCookie = stAttr.nCookie; stDamon.nKeepAliveInterval = stAttr.nKeepAliveInterval + 1; /* margin to damon wait_for to avoid missing condition */ stDamon.nReconnectThreshold = stAttr.nReconnectThreshold; stDamon.reconnect = std::bind(&CRtspStream::ReConnect, this); @@ -77,7 +81,7 @@ AX_BOOL CRtspStream::Init(CONST STREAM_ATTR_T &stAttr) { /* wait SDP is received to parse stream info in 5 second */ if (!m_InitEvent.WaitEvent(10000)) { - LOG_M_E(TAG, "recv sdp from %s timeout", stAttr.strURL.c_str()); + LOG_MM_E(TAG, "[%d] recv sdp from %s timeout +++", stAttr.nCookie, stAttr.strURL.c_str()); m_EventLoopThread.Stop(); m_cExitThread = 1; m_EventLoopThread.Join(); @@ -96,11 +100,12 @@ AX_BOOL CRtspStream::Init(CONST STREAM_ATTR_T &stAttr) { m_scheduler = nullptr; } + LOG_MM_E(TAG, "[%d] recv sdp from %s timeout ---", stAttr.nCookie, stAttr.strURL.c_str()); return AX_FALSE; } } catch (std::bad_alloc &e) { - LOG_M_E(TAG, "%s: setup %s fail", __func__, stAttr.strURL.c_str()); + LOG_MM_E(TAG, "[%d] setup %s fail", stAttr.nCookie, stAttr.strURL.c_str()); DeInit(); return AX_FALSE; } @@ -145,7 +150,7 @@ AX_BOOL CRtspStream::Start(AX_VOID) { m_PlayEvent.SetEvent(); if (!m_client->CheckPlayed(10000)) { - LOG_M_E(TAG, "%s: %s play fail", __func__, m_stAttr.strURL.c_str()); + LOG_MM_E(TAG, "[%d - %s]: play fail", m_stAttr.nCookie, m_stAttr.strURL.c_str()); Stop(); return AX_FALSE; @@ -212,11 +217,12 @@ void CRtspStream::OnRecvFrame(const void *session, const unsigned char *pFrame, void CRtspStream::OnTracksInfo(const TRACKS_INFO_T &tracks) { if (0 == tracks.tracks.size()) { - LOG_M_E(TAG, "%s: no tracks", m_stInfo.strURL.c_str()); + LOG_MM_E(TAG, "[%d - %s]: no tracks", m_stAttr.nCookie, m_stInfo.strURL.c_str()); return; } m_stInfo.tracks.clear(); + m_stInfo.nCookie = m_stAttr.nCookie; for (auto &&kv : tracks.tracks) { switch (kv.second.enPayload) { @@ -241,8 +247,9 @@ void CRtspStream::OnTracksInfo(const TRACKS_INFO_T &tracks) { m_stInfo.tracks[kv.first] = track; m_stInfo.stVideo = track.info.stVideo; - LOG_M_N(TAG, "%s: %s payload %d, profile %d level %d, num_ref_frames %, %dx%d %dfps", tracks.url, kv.second.control, - kv.second.rtpPayload, sps.profile_idc, sps.level_idc, sps.num_ref_frames, sps.width, sps.height, sps.fps); + LOG_MM_N(TAG, "[%d - %s]: %s payload %d, profile %d level %d, num_ref_frames %, %dx%d %dfps", m_stAttr.nCookie, tracks.url, + kv.second.control, kv.second.rtpPayload, sps.profile_idc, sps.level_idc, sps.num_ref_frames, sps.width, sps.height, + sps.fps); } break; case PT_G711A: @@ -252,7 +259,7 @@ void CRtspStream::OnTracksInfo(const TRACKS_INFO_T &tracks) { } break; default: - LOG_M_N(TAG, "%s: %s payload %d", tracks.url, kv.second.control, kv.second.rtpPayload); + LOG_MM_N(TAG, "[%d - %s]: %s payload %d", m_stAttr.nCookie, tracks.url, kv.second.control, kv.second.rtpPayload); break; } } @@ -279,9 +286,9 @@ void CRtspStream::OnCheckAlive(int resultCode, const char *resultString) { } } else { if (resultString) { - LOG_M_E(TAG, "%s: resultCode = %d, %s", __func__, resultCode, resultString); + LOG_MM_E(TAG, "[%d] resultCode = %d, %s", m_stAttr.nCookie, resultCode, resultString); } else { - LOG_M_E(TAG, "%s: resultCode = %d", __func__, resultCode); + LOG_MM_E(TAG, "[%d] resultCode = %d", m_stAttr.nCookie, resultCode); } } } diff --git a/app/demo/src/ppl/nvr/hal/streamContainer.cpp b/app/demo/src/ppl/nvr/hal/streamContainer.cpp new file mode 100644 index 0000000..3761c1d --- /dev/null +++ b/app/demo/src/ppl/nvr/hal/streamContainer.cpp @@ -0,0 +1,182 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "streamContainer.hpp" +#include "AppLogApi.h" + +#define TAG "STM_CONTAINER" + +AX_VOID CVideoStreamContainer::Flush(AX_VOID) { + { + std::unique_lock lck(m_mtx); + /* wait consume */ + m_cvW.wait(lck, [this]() -> bool { return GetLeftCnt() > 0 || m_bAbortW; }); + if (m_bAbortW) { + m_bAbortW = false; + return; + } + + size_t sz = m_stacks[m_wIndex % m_nCnt].size(); + if (0 == sz) { +#ifdef __PRINT_DEBUG_INFO__ + printf("nothing flush, wIndex %lld, rIndex %lld\n", m_wIndex, m_rIndex); +#endif + return; + } + + ++m_wIndex; + +#ifdef __PRINT_DEBUG_INFO__ + printf("flush %d, swap: wIndex %lld, rIndex %lld\n", sz, m_wIndex, m_rIndex); +#endif + } + + m_cvR.notify_one(); +} + +AX_BOOL CVideoStreamContainer::Push(const AX_VENC_PACK_T& pack, AX_S32 nTimeOut /* = -1 */) { + std::unique_lock lck(m_mtx); + if (0 == GetLeftCnt()) { + if (0 == nTimeOut) { + return AX_FALSE; + } else if (nTimeOut < 0) { + m_cvW.wait(lck, [this]() -> bool { return GetLeftCnt() > 0 || m_bAbortW; }); + } else { + if (!m_cvW.wait_for(lck, std::chrono::milliseconds(nTimeOut), [this]() -> bool { return GetLeftCnt() > 0 || m_bAbortW; })) { + return AX_FALSE; + } + } + } + + if (m_bAbortW) { +#ifdef __PRINT_DEBUG_INFO__ + printf("CVideoStreamContainer::Push aborted\n"); +#endif + m_bAbortW = false; + return AX_FALSE; + } + + std::stack& stack = m_stacks[m_wIndex % m_nCnt]; + stack.push(pack); + if (stack.size() == m_nCap) { + ++m_wIndex; + +#ifdef __PRINT_DEBUG_INFO__ + printf("push %d, swap: wIndex %lld, rIndex %lld\n", m_nCap, m_wIndex, m_rIndex); +#endif + m_cvR.notify_one(); + } + + return AX_TRUE; +} + +AX_BOOL CVideoStreamContainer::Pop(VIDEO_STREAM_INFO_T& m, AX_S32 nTimeOut /* = -1 */) { + while (1) { + std::unique_lock lck(m_mtx); + if (m_rIndex == m_wIndex) { + if (0 == nTimeOut) { + return AX_FALSE; + } else if (nTimeOut < 0) { + m_cvR.wait(lck, [this]() -> bool { return (m_wIndex > m_rIndex) || m_bAbortR; }); + } else { + if (!m_cvR.wait_for(lck, std::chrono::milliseconds(nTimeOut), + [this]() -> bool { return (m_wIndex > m_rIndex) || m_bAbortR; })) { + return AX_FALSE; + } + } + } + + if (m_bAbortR) { +#ifdef __PRINT_DEBUG_INFO__ + printf("CVideoStreamContainer::Pop aborted\n"); +#endif + m_bAbortR = false; + return AX_FALSE; + } + + std::stack& stack = m_stacks[m_rIndex % m_nCnt]; + auto sz = stack.size(); + if (sz > 0) { + m = stack.top(); + stack.pop(); +#ifdef __PRINT_DEBUG_INFO__ + ++m_nPopCnt; +#endif + + if (--sz == 0) { + ++m_rIndex; + +#ifdef __PRINT_DEBUG_INFO__ + printf("pop %d, swap: wIndex %lld, rIndex %lld\n", m_nPopCnt, m_wIndex, m_rIndex); + m_nPopCnt = 0; +#endif + m_cvW.notify_one(); + } + + return AX_TRUE; + } + } + + return AX_FALSE; +} + +AX_VOID CVideoStreamContainer::Clear(AX_VOID) { +#ifdef __PRINT_DEBUG_INFO__ + printf("CVideoStreamContainer::Clear +++ AbortW = %d, AbortR = %d\n", m_bAbortW, m_bAbortR); +#endif + { + std::lock_guard lck(m_mtx); + for (auto i = m_rIndex; i < m_wIndex; ++i) { + std::stack& stack = m_stacks[i % m_nCnt]; + auto sz = stack.size(); + while (sz > 0) { + VIDEO_STREAM_INFO_T m = stack.top(); + stack.pop(); + --sz; + m.FreeMem(); + } + } + + m_bAbortW = true; + m_bAbortR = true; + } + + m_cvW.notify_one(); + m_cvR.notify_one(); + +#ifdef __PRINT_DEBUG_INFO__ + printf("CVideoStreamContainer::Clear --- AbortW = %d, AbortR = %d\n", m_bAbortW, m_bAbortR); +#endif +} + +AX_VOID CVideoStreamContainer::AdjustPTS(AX_U32 nAdjustPTSDiff) { + std::unique_lock lck(m_mtx); + + size_t sz = m_stacks[m_wIndex % m_nCnt].size(); + if (0 == sz) { + return; + } + + std::stack stackTmp; + for (size_t i = 0; i < sz; ++i) { + VIDEO_STREAM_INFO_T m = m_stacks[m_wIndex % m_nCnt].top(); + m_stacks[m_wIndex % m_nCnt].pop(); + if (m.u64PTS > nAdjustPTSDiff) { + m.u64PTS -= nAdjustPTSDiff; + } + + stackTmp.push(m); + } + + for (size_t i = 0; i < sz; ++i) { + VIDEO_STREAM_INFO_T m = stackTmp.top(); + m_stacks[m_wIndex % m_nCnt].push(m); + stackTmp.pop(); + } +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/hal/streamContainer.hpp b/app/demo/src/ppl/nvr/hal/streamContainer.hpp new file mode 100644 index 0000000..b7301b4 --- /dev/null +++ b/app/demo/src/ppl/nvr/hal/streamContainer.hpp @@ -0,0 +1,103 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once +#include +#include +#include +#include +#include +#include +#include "ax_venc_api.h" + +#ifdef __PRINT_DEBUG_INFO__ +#include +#endif + +typedef struct VIDEO_STREAM_INFO_S { + AX_U8* pu8Addr; /* the virtual address of stream */ + AX_U32 u32Len; /* the length of stream */ + AX_U64 u64PTS; /* PTS */ + AX_U64 u64SeqNum; /* sequence number of input frame */ + AX_U64 u64UserData; + AX_PAYLOAD_TYPE_E enType; /* the type of payload*/ + + VIDEO_STREAM_INFO_S(AX_VOID) { + pu8Addr = nullptr; + u32Len = 0; + u64PTS = 0; + u64SeqNum = 0; + u64UserData = 0; + enType = PT_BUTT; + } + + VIDEO_STREAM_INFO_S(const AX_VENC_PACK_T& pack) { + pu8Addr = (AX_U8*)malloc(pack.u32Len); + memcpy(pu8Addr, pack.pu8Addr, pack.u32Len); + u32Len = pack.u32Len; + u64PTS = pack.u64PTS; + u64SeqNum = pack.u64SeqNum; + u64UserData = pack.u64UserData; + enType = pack.enType; + } + + AX_VOID FreeMem(AX_VOID) { + free(pu8Addr); + pu8Addr = nullptr; + } +} VIDEO_STREAM_INFO_T; + + +#define MAX_STREAM_CONTAINER_NUM (3) +class CVideoStreamContainer { +public: + CVideoStreamContainer(AX_U32 nCap, AX_U32 nCnt = 2) : m_nCap(nCap), m_nCnt(nCnt) { + if (m_nCnt > MAX_STREAM_CONTAINER_NUM) { + m_nCnt = MAX_STREAM_CONTAINER_NUM; + } + + if (0 == m_nCap) { + m_nCap = 30; + } + }; + + AX_BOOL Push(const AX_VENC_PACK_T& pack, AX_S32 nTimeOut = -1); + AX_BOOL Pop(VIDEO_STREAM_INFO_T& m, AX_S32 nTimeOut = -1); + + /* be care to flush */ + AX_VOID Flush(AX_VOID); + + AX_VOID Clear(AX_VOID); + AX_VOID AdjustPTS(AX_U32 nAdjustPTSDiff); + +protected: + AX_U32 GetLeftCnt(AX_VOID); + +private: + std::stack m_stacks[MAX_STREAM_CONTAINER_NUM]; + AX_U32 m_nCap; + AX_U32 m_nCnt; + AX_U64 m_wIndex = {0}; + AX_U64 m_rIndex = {0}; + + std::mutex m_mtx; + std::condition_variable m_cvW; + std::condition_variable m_cvR; + + bool m_bAbortW = {false}; + bool m_bAbortR = {false}; + +#ifdef __PRINT_DEBUG_INFO__ + AX_U32 m_nPopCnt = {0}; +#endif +}; + +inline AX_U32 CVideoStreamContainer::GetLeftCnt(AX_VOID) { + return m_nCnt - (AX_U32)(m_wIndex - m_rIndex); +} diff --git a/app/demo/src/ppl/nvr/hal/streamTransfer.cpp b/app/demo/src/ppl/nvr/hal/streamTransfer.cpp new file mode 100644 index 0000000..747443d --- /dev/null +++ b/app/demo/src/ppl/nvr/hal/streamTransfer.cpp @@ -0,0 +1,184 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "streamTransfer.hpp" +#include +#include "AppLogApi.h" + +#define TAG "STREAM_TRANS" + +AX_BOOL CVideoStreamTransfer::Init(AX_S32 nStream, AX_U32 nFps, AX_U32 nGop) { + m_pStreamContainer = std::make_unique(nGop, 3); + if (!m_pStreamContainer) { + return AX_FALSE; + } + + m_nStreamID = nStream; + m_nFps = nFps; + m_nGop = nGop; + + return AX_TRUE; +} + +AX_BOOL CVideoStreamTransfer::DeInit() { + return AX_TRUE; +} + +AX_BOOL CVideoStreamTransfer::SendStream(AX_S32 nStream, CONST AX_VENC_PACK_T& tVencPacked, AX_BOOL bGopStart /*= AX_TRUE*/, AX_S32 nTimeOut /*= INFINITE*/) { + if (!tVencPacked.pu8Addr || tVencPacked.u32Len == 0) { + LOG_MM_W(TAG, "Stream data is invalid."); + return AX_FALSE; + } + + if (nStream != m_nStreamID) { + LOG_MM_W(TAG, "Stream ID is not matched(%d != %d).", nStream, m_nStreamID); + return AX_FALSE; + } + + if (!m_pStreamContainer) { + LOG_MM_W(TAG, "Stream container is not prepared."); + return AX_FALSE; + } + + if (tVencPacked.u64UserData >= m_nGop) { + LOG_MM_E(TAG, "Frame GOP index(%d) is larger than configured GOP value(%d), ignore this frame.", tVencPacked.u64UserData, m_nGop); + return AX_FALSE; + } + + if (bGopStart) { + AX_U32 nAdjustPTSDiff = 0; + if (m_nLastGopIndex != -1 && (AX_U32)m_nLastGopIndex < m_nGop - 1) { + AX_U32 nStep = 1000000 / m_nFps; + nAdjustPTSDiff = nStep * (m_nGop - m_nLastGopIndex - 1); + m_pStreamContainer->AdjustPTS(nAdjustPTSDiff); + } + m_pStreamContainer->Flush(); + } + + m_nLastGopIndex = tVencPacked.u64UserData; + + if (!m_pStreamContainer->Push(tVencPacked, nTimeOut)) { + LOG_MM_E(TAG, "Fill stream data(size: %d) to container failed", tVencPacked.u32Len); + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_BOOL CVideoStreamTransfer::OnRecvStreamPack(AX_S32 nStream, CONST AX_VENC_PACK_T& stPack, AX_BOOL bGopStart /*= AX_TRUE*/) { + return SendStream(nStream, stPack, bGopStart, -1); +} + +AX_BOOL CVideoStreamTransfer::RegisterObserver(IStreamObserver* pObs) { + if (!pObs) { + LOG_MM_E(TAG, "observer is nil"); + return AX_FALSE; + } + + std::lock_guard lck(m_mtxObs); + + auto it = std::find(m_lstObs.begin(), m_lstObs.end(), pObs); + if (it != m_lstObs.end()) { + LOG_MM_W(TAG, "Stream %d's observer %p already registed", m_nStreamID, pObs); + } else { + m_lstObs.push_back(pObs); + LOG_MM_I(TAG, "Regist observer %p to stream %d ok", pObs, m_nStreamID); + } + + return AX_TRUE; +} + +AX_BOOL CVideoStreamTransfer::UnRegisterObserver(IStreamObserver* pObs) { + if (!pObs) { + LOG_MM_E(TAG, "observer is nil"); + return AX_FALSE; + } + + std::lock_guard lck(m_mtxObs); + + auto it = std::find(m_lstObs.begin(), m_lstObs.end(), pObs); + if (it != m_lstObs.end()) { + m_lstObs.remove(pObs); + LOG_MM_I(TAG, "unregist observer %p from stream %d ok", pObs, m_nStreamID); + return AX_TRUE; + } + + LOG_MM_E(TAG, "observer %p is not registed to stream %d", pObs, m_nStreamID); + + return AX_FALSE; +} + +AX_BOOL CVideoStreamTransfer::Start() { + if (!m_threadDispatch.Start([this](AX_VOID* pArg) -> AX_VOID { DispatchThread(pArg); }, nullptr, "StreamDispatch")) { + LOG_MM_E(TAG, "Create test suite thread fail."); + } + + return AX_TRUE; +} + +AX_BOOL CVideoStreamTransfer::Stop() { + if (m_threadDispatch.IsRunning()) { + m_threadDispatch.Stop(); + m_pStreamContainer->Clear(); + m_threadDispatch.Join(); + } + + m_lstObs.clear(); + + return AX_TRUE; +} + +AX_VOID CVideoStreamTransfer::DispatchThread(AX_VOID*) { + AX_S32 ret = 0; + while (m_threadDispatch.IsRunning()) { + VIDEO_STREAM_INFO_T tVencStream; + if (!m_pStreamContainer->Pop(tVencStream) || 0 == tVencStream.u32Len) { + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + continue; + } + + if (tVencStream.pu8Addr && tVencStream.u32Len > 0) { + LOG_MM_D(TAG, "[%d] StreamContainer output (Seq:%lld, Size:%d, PTS:%lld)", m_nStreamID, tVencStream.u64SeqNum, tVencStream.u32Len, tVencStream.u64PTS); + NotifyAll(&tVencStream); + } else { + LOG_MM_E(TAG, "[%d] StreamContainer output data error, addr %p, size %d", m_nStreamID, tVencStream.pu8Addr, tVencStream.u32Len); + } + + tVencStream.FreeMem(); + + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } +} + +AX_BOOL CVideoStreamTransfer::NotifyAll(VIDEO_STREAM_INFO_T* pStream) { + if (nullptr == pStream) { + return AX_TRUE; + } + + AX_BOOL bRet = AX_TRUE; + + std::lock_guard lock(m_mtxObs); + for (std::list::iterator it = m_lstObs.begin(); it != m_lstObs.end(); it++) { + STREAM_FRAME_T tFrame; + memset(&tFrame, 0, sizeof(STREAM_FRAME_T)); + tFrame.enPayload = pStream->enType; + tFrame.nPrivData = 0; + tFrame.frame.stVideo.nPTS = pStream->u64PTS; + tFrame.frame.stVideo.enNalu = NALU_TYPE_IDR; /* TODO: Need to get from AX_VENC_PACK_T */ + tFrame.frame.stVideo.pData = (AX_U8*)pStream->pu8Addr; + tFrame.frame.stVideo.nLen = pStream->u32Len; + + if (!(*it)->OnRecvStreamData(tFrame)) { + bRet = AX_FALSE; + } + } + + return bRet; +} \ No newline at end of file diff --git a/app/demo/src/ppl/nvr/hal/streamTransfer.hpp b/app/demo/src/ppl/nvr/hal/streamTransfer.hpp new file mode 100644 index 0000000..bf52428 --- /dev/null +++ b/app/demo/src/ppl/nvr/hal/streamTransfer.hpp @@ -0,0 +1,49 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once + +#include "streamContainer.hpp" +#include "VideoEncoderEx.hpp" +#include "istream.hpp" +#include +#include + +class CVideoStreamTransfer : public IVencPackObserver { +public: + CVideoStreamTransfer() = default; + + AX_BOOL Init(AX_S32 nStream, AX_U32 nFps, AX_U32 nGop); + AX_BOOL DeInit(); + AX_BOOL Start(); + AX_BOOL Stop(); + + AX_BOOL SendStream(AX_S32 nStream, CONST AX_VENC_PACK_T& tVencPacked, AX_BOOL bGopStart = AX_TRUE, AX_S32 nTimeOut = INFINITE); + + AX_BOOL RegisterObserver(IStreamObserver* pObs); + AX_BOOL UnRegisterObserver(IStreamObserver* pObs); + +protected: + AX_BOOL OnRecvStreamPack(AX_S32 nStream, CONST AX_VENC_PACK_T& stPack, AX_BOOL bGopStart = AX_TRUE) override; + AX_VOID DispatchThread(AX_VOID*); + +private: + AX_BOOL NotifyAll(VIDEO_STREAM_INFO_T* pStream); + +private: + std::unique_ptr m_pStreamContainer; + std::list m_lstObs; + std::mutex m_mtxObs; + AX_S32 m_nStreamID {-1}; + AX_U32 m_nGop {30}; + AX_U32 m_nFps {30}; + AX_S32 m_nLastGopIndex {-1}; + + CAXThread m_threadDispatch; +}; diff --git a/app/demo/src/ppl/nvr/hal/vdec.cpp b/app/demo/src/ppl/nvr/hal/vdec.cpp index 62b8119..4c6b808 100644 --- a/app/demo/src/ppl/nvr/hal/vdec.cpp +++ b/app/demo/src/ppl/nvr/hal/vdec.cpp @@ -156,7 +156,8 @@ AX_BOOL CVDEC::Init(CONST VDEC_ATTR_T& stAttr) { In order to decrease VB num, config VDEC to decode order (no reorder) Make sure video stream has no B frames */ - stGrpParam.stVdecVideoParam.enOutputOrder = AX_VDEC_OUTPUT_ORDER_DEC; + stGrpParam.stVdecVideoParam.enVdecMode = stAttr.enIPBMode; + stGrpParam.stVdecVideoParam.enOutputOrder = (VIDEO_DEC_MODE_I == stAttr.enIPBMode) ? AX_VDEC_OUTPUT_ORDER_DISP : AX_VDEC_OUTPUT_ORDER_DEC; stGrpParam.f32SrcFrmRate = stAttr.nFps; ret = AX_VDEC_SetGrpParam(m_vdGrp, &stGrpParam); if (0 != ret) { @@ -385,7 +386,7 @@ AX_BOOL CVDEC::ResetGrp(AX_S32 nTryCount /* = NVR_VDEC_RESET_GRP_TRY_COUNT*/) { } AX_BOOL CVDEC::SendStream(CONST AX_U8* pStream, AX_U32 nLen, AX_U64 u64PTS, AX_U64 nPrivData /* = 0 */, - AX_BOOL bSkipDisplay /* = AX_FALSE */, AX_S32 nTimeOut /* = INFINITE */) { + AX_BOOL bSkipDisplay /* = AX_FALSE */, AX_U64 u64UserData, AX_S32 nTimeOut /* = INFINITE */) { if (!m_bStarted) { // LOG_M_E(TAG, "%s: vdGrp %d is stopped", __func__, m_vdGrp); return AX_FALSE; @@ -397,6 +398,7 @@ AX_BOOL CVDEC::SendStream(CONST AX_U8* pStream, AX_U32 nLen, AX_U64 u64PTS, AX_U stStream.pu8Addr = const_cast(pStream); stStream.u32StreamPackLen = nLen; stStream.u64PrivateData = nPrivData; + stStream.u64UserData = u64UserData; if (AX_VDEC_INPUT_MODE_FRAME == m_stAttr.enInputMode) { stStream.bEndOfFrame = AX_TRUE; @@ -410,7 +412,6 @@ AX_BOOL CVDEC::SendStream(CONST AX_U8* pStream, AX_U32 nLen, AX_U64 u64PTS, AX_U } if (AX_VDEC_DISPLAY_MODE_PLAYBACK == m_stAttr.enDecodeMode) { - AX_S32 ret; AX_VDEC_GRP_STATUS_T status; while (m_bStarted) { if (0 != AX_VDEC_QueryStatus(m_vdGrp, &status)) { @@ -429,9 +430,9 @@ AX_BOOL CVDEC::SendStream(CONST AX_U8* pStream, AX_U32 nLen, AX_U64 u64PTS, AX_U } } - // LOG_M_D(TAG, "AX_VDEC_SendStream(vdGrp %d, len %d, pts %lld, timeout %d) +++", m_vdGrp, nLen, u64PTS, nTimeOut); + LOG_MM_D(TAG, "AX_VDEC_SendStream(vdGrp %d, len %d, pts %lld, timeout %d) +++", m_vdGrp, nLen, u64PTS, nTimeOut); m_nLastSendCode = AX_VDEC_SendStream(m_vdGrp, &stStream, nTimeOut); - // LOG_M_D(TAG, "AX_VDEC_SendStream(vdGrp %d, len %d, pts %lld, timeout %d) ---", m_vdGrp, nLen, u64PTS, nTimeOut); + LOG_MM_D(TAG, "AX_VDEC_SendStream(vdGrp %d, len %d, pts %lld, timeout %d) ---", m_vdGrp, nLen, u64PTS, nTimeOut); if (0 != m_nLastSendCode) { if ((AX_ERR_VDEC_BUF_FULL == m_nLastSendCode) || (AX_ERR_VDEC_QUEUE_FULL == m_nLastSendCode)) { LOG_M_W(TAG, "vdGrp %d input buffer is full, abandon %d bytes, pts %lld", m_vdGrp, nLen, u64PTS); @@ -474,7 +475,7 @@ AX_BOOL CVDEC::OnRecvStreamData(CONST STREAM_FRAME_T& stFrame) { #endif if (PT_H264 == stFrame.enPayload || PT_H265 == stFrame.enPayload) { if (!SendStream(stFrame.frame.stVideo.pData, stFrame.frame.stVideo.nLen, stFrame.frame.stVideo.nPTS, stFrame.nPrivData, - stFrame.frame.stVideo.bSkipDisplay, m_stAttr.nTimeOut)) { + stFrame.frame.stVideo.bSkipDisplay, stFrame.frame.stVideo.u64UserData, m_stAttr.nTimeOut)) { return AX_FALSE; } } @@ -646,15 +647,12 @@ AX_BOOL CVDEC::SetChnAttr(AX_S32 vdChn, CONST AX_VDEC_CHN_ATTR_T& stChnAttr) { return AX_FALSE; } - if (m_bStarted) { - LOG_M_E(TAG, "vdGrp %d is already started, pls set before start", m_vdGrp); - return AX_FALSE; - } - AX_S32 ret = AX_VDEC_SetChnAttr(m_vdGrp, vdChn, &stChnAttr); if (0 != ret) { LOG_M_E(TAG, "AX_VDEC_SetChnAttr(vdGrp %d, vdChn %d) fail, ret = 0x%x", m_vdGrp, vdChn, ret); return AX_FALSE; + } else { + LOG_M_I(TAG, "AX_VDEC_SetChnAttr(vdGrp %d, vdChn %d, %dx%d) OK", m_vdGrp, vdChn, stChnAttr.u32PicWidth, stChnAttr.u32PicHeight); } m_stAttr.stChnAttr[vdChn].stAttr = stChnAttr; @@ -756,7 +754,7 @@ AX_VOID CDecodeTask::DecodingThread(AX_VOID* /* pArg */) { } else if (AX_ERR_VDEC_STRM_ERROR == ret) { LOG_M_W(TAG, "AX_VDEC_GetChnFrame(vdGrp %d, vdChn %d): stream is undecodeable", vdGrp, vdChn); } else if (AX_ERR_VDEC_UNEXIST == ret) { - LOG_MM_W(TAG, "vdGrp %d vdChn %d maybe under reseting", vdGrp, vdChn); + LOG_MM_D(TAG, "vdGrp %d vdChn %d maybe under reseting", vdGrp, vdChn); } else { LOG_M_E(TAG, "AX_VDEC_GetChnFrame(vdGrp %d, vdChn %d, timeout %d) fail, ret = 0x%x", vdGrp, vdChn, TIMEOUT, ret); } diff --git a/app/demo/src/ppl/nvr/hal/vdec.hpp b/app/demo/src/ppl/nvr/hal/vdec.hpp index 7d09ae6..5c756f3 100644 --- a/app/demo/src/ppl/nvr/hal/vdec.hpp +++ b/app/demo/src/ppl/nvr/hal/vdec.hpp @@ -62,6 +62,7 @@ typedef struct VDEC_ATTR_S { AX_U32 nHeight; AX_VDEC_DISPLAY_MODE_E enDecodeMode; AX_VDEC_INPUT_MODE_E enInputMode; + AX_VDEC_MODE_E enIPBMode; AX_U32 nMaxStreamBufSize; /* if 0, equal to nWidth * nHeight * 3 / 2 */ AX_U32 nFps; AX_BOOL bPrivatePool; @@ -80,6 +81,7 @@ typedef struct VDEC_ATTR_S { nHeight = 0; enDecodeMode = AX_VDEC_DISPLAY_MODE_PREVIEW; enInputMode = AX_VDEC_INPUT_MODE_FRAME; + enIPBMode = VIDEO_DEC_MODE_IPB; nMaxStreamBufSize = 0; nFps = 0; bPrivatePool = AX_TRUE; @@ -104,6 +106,7 @@ class CVDEC : public IStreamObserver { /* App is in charge of PTS */ AX_BOOL SendStream(CONST AX_U8* pStream, AX_U32 nLen, AX_U64 u64PTS, AX_U64 nPrivData = 0, AX_BOOL bSkipDisplay = AX_FALSE, + AX_U64 u64UserData = 0, AX_S32 nTimeOut = INFINITE); AX_BOOL RegisterObserver(AX_S32 vdChn, IObserver* pObs); diff --git a/app/demo/src/ppl/nvr/hal/venc.cpp b/app/demo/src/ppl/nvr/hal/venc.cpp new file mode 100644 index 0000000..1d0a83e --- /dev/null +++ b/app/demo/src/ppl/nvr/hal/venc.cpp @@ -0,0 +1,122 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "venc.hpp" +#include "make_unique.hpp" + +#define TAG "VENC" +#define LOG_FUNC_ENTER() LOG_MM_I(TAG, "veChn %d +++", m_veChn) +#define LOG_FUNC_LEAVE() LOG_MM_I(TAG, "veChn %d ---", m_veChn) + +// class CAXFrameRelease : public IFrameRelease { +// public: +// AX_VOID VideoFrameRelease(CAXFrame *pFrame) { +// if (pFrame) { +// pFrame->DecRef(); +// delete pFrame; +// } +// } +// }; + +// static CAXFrameRelease theFrameRelease; + +AX_BOOL CVENC::Init(CONST VENC_ATTR_T& stAttr) { + m_veChn = stAttr.nChannel; + + LOG_FUNC_ENTER(); + + m_venc = std::make_unique(stAttr); + if (!m_venc) { + LOG_MM_E(TAG, "create VENC instance fail"); + return AX_FALSE; + } + + if (!m_venc->InitParams()) { + LOG_MM_E(TAG, "InitParams fail"); + return AX_FALSE; + } + + if (!m_venc->Init()) { + return AX_FALSE; + } + + if (stAttr.nGdrNum > 0 && stAttr.nGdrNum <= stAttr.nGOP) { + if (!m_venc->ActiveGDR(stAttr.nGdrNum)) { + return AX_FALSE; + } + } + + LOG_FUNC_LEAVE(); + return AX_TRUE; +} + +AX_BOOL CVENC::DeInit(AX_VOID) { + LOG_FUNC_ENTER(); + + UnRegisterObserver(); + + if (m_venc) { + if (!m_venc->DeInit()) { + return AX_FALSE; + } + + m_venc = nullptr; + } + + LOG_FUNC_LEAVE(); + return AX_TRUE; +} + +AX_BOOL CVENC::RegisterObserver(IVencPackObserver *obs) { + std::lock_guard lck(m_mtxObs); + + if (m_obs == obs) { + LOG_MM_W(TAG, "veChn %d obs is registered", m_veChn); + return AX_TRUE; + } + + if (m_obs) { + m_venc->UnregObserver(m_obs); + } + + m_venc->RegObserver(obs); + m_obs = obs; + + return AX_TRUE; +} + +AX_VOID CVENC::UnRegisterObserver(AX_VOID) { + std::lock_guard lck(m_mtxObs); + if (m_obs) { + m_venc->UnregObserver(m_obs); + m_obs = nullptr; + } +} + +AX_BOOL CVENC::Start(AX_VOID) { + LOG_FUNC_ENTER(); + + if (!m_venc->Start()) { + return AX_FALSE; + } + + LOG_FUNC_LEAVE(); + return AX_TRUE; +} + +AX_BOOL CVENC::Stop(AX_VOID) { + LOG_FUNC_ENTER(); + + if (!m_venc->Stop()) { + return AX_FALSE; + } + + LOG_FUNC_LEAVE(); + return AX_TRUE; +} diff --git a/app/demo/src/ppl/nvr/hal/venc.hpp b/app/demo/src/ppl/nvr/hal/venc.hpp new file mode 100644 index 0000000..d0a5dc5 --- /dev/null +++ b/app/demo/src/ppl/nvr/hal/venc.hpp @@ -0,0 +1,38 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#pragma once +#include +#include +#include "AXFrame.hpp" +#include "VideoEncoderEx.hpp" +#include "haltype.hpp" + + +#define INVALID_VENC_GRP (-1) + +class CVENC { +public: + CVENC(AX_VOID) = default; + + AX_BOOL Init(CONST VENC_ATTR_T& stAttr); + AX_BOOL DeInit(AX_VOID); + + AX_BOOL Start(AX_VOID); + AX_BOOL Stop(AX_VOID); + + AX_BOOL RegisterObserver(IVencPackObserver* obs); + AX_VOID UnRegisterObserver(AX_VOID); + +private: + std::unique_ptr m_venc; + std::mutex m_mtxObs; + IVencPackObserver* m_obs = {nullptr}; + AX_S32 m_veChn = {-1}; +}; diff --git a/app/demo/src/ppl/nvr/hal/vo.cpp b/app/demo/src/ppl/nvr/hal/vo.cpp index 448637c..b514eec 100644 --- a/app/demo/src/ppl/nvr/hal/vo.cpp +++ b/app/demo/src/ppl/nvr/hal/vo.cpp @@ -15,6 +15,7 @@ #include "ElapsedTimer.hpp" #include "ax_ivps_api.h" #include "ax_sys_api.h" +#include "AXNVRFrameworkDefine.h" #define VO "VO" #define IS_GRAPHIC_LAYER_ENABLED(layer) ((GRAPHIC_LAYER)-1 != layer) @@ -174,7 +175,7 @@ AX_BOOL CVO::Init(VO_ATTR_T& stAttr) { stAttr = m_stAttr; if (!stAttr.bLinkVo2Disp) { - m_vecRegionInfo.resize(stAttr.stChnInfo.nCount + (0 == m_stAttr.voLayer ? 1 /* PIP channel */ : 0)); + m_vecRegionInfo.resize(NVR_PIP_CHN_NUM + (0 == m_stAttr.voLayer ? 1 /* PIP channel */ : 0)); } m_bInited = AX_TRUE; @@ -407,13 +408,11 @@ AX_BOOL CVO::UpdateChnInfo(CONST VO_CHN_INFO_T& stChnInfo) { m_stAttr.stChnInfo = stChnInfo; if (!m_stAttr.bLinkVo2Disp) { std::unique_lock lck(m_mtxRegions); - m_vecRegionInfo.resize(m_stAttr.stChnInfo.nCount + (0 == m_stAttr.voLayer ? 1 /* PIP channel */ : 0)); + m_vecRegionInfo.resize(NVR_PIP_CHN_NUM + (0 == m_stAttr.voLayer ? 1 /* PIP channel */ : 0)); } return AX_TRUE; } - // START_ELAPSED_TIME; - /* disable all current chns */ if (m_stAttr.stChnInfo.nCount > 0) { if (!BatchUpdate(AX_FALSE, m_stAttr.stChnInfo)) { @@ -428,7 +427,7 @@ AX_BOOL CVO::UpdateChnInfo(CONST VO_CHN_INFO_T& stChnInfo) { m_stAttr.stChnInfo = stChnInfo; if (!m_stAttr.bLinkVo2Disp) { std::unique_lock lck(m_mtxRegions); - m_vecRegionInfo.resize(m_stAttr.stChnInfo.nCount + (0 == m_stAttr.voLayer ? 1 /* PIP channel */ : 0)); + m_vecRegionInfo.resize(NVR_PIP_CHN_NUM + (0 == m_stAttr.voLayer ? 1 /* PIP channel */ : 0)); } // PRINT_ELAPSED_USEC("switch video layout %02d", m_stAttr.stChnInfo.nCount); @@ -514,7 +513,6 @@ AX_BOOL CVO::SendFrame(VO_CHN voChn, CAXFrame& axFrame, AX_S32 nTimeOut /* = INF u64VOSendStreamCount = 0; } #endif - LOG_M_D(VO, "%s: layer %d chn %d frame %lld pts %lld phy 0x%llx blkId 0x%x ---, ret = 0x%x", __func__, m_stAttr.voLayer, voChn, axFrame.stFrame.stVFrame.stVFrame.u64SeqNum, axFrame.stFrame.stVFrame.stVFrame.u64PTS, axFrame.stFrame.stVFrame.stVFrame.u64PhyAddr[0], axFrame.stFrame.stVFrame.stVFrame.u32BlkId[0], ret); @@ -639,6 +637,7 @@ AX_BOOL CVO::HideChn(VO_CHN voChn) { m_stAttr.stChnInfo.arrHidden[voChn] = AX_TRUE; if (!m_stAttr.bLinkVo2Disp && voChn < m_vecRegionInfo.size()) { m_vecRegionInfo[voChn].bValid = AX_FALSE; + m_vecRegionInfo[voChn].nChn = -1; } } while (0); @@ -848,14 +847,7 @@ AX_VOID CVO::LayerFrameGetThread(AX_VOID* pArg) { LOG_MM_D(VO, "AX_VO_GetLayerFrame(Layer: %d, Seq: %lld)", layer, stVFrame.u64SeqNum); } - // AX_U64 tick = GetTickCount(); PaintRegions(&stVFrame); - // elapsed += (GetTickCount() - tick); - // if (++cnt == 1000) { - // LOG_M_C(VO, "average paint elapsed = %f us", elapsed * 1.0 / cnt); - // elapsed = 0; - // cnt = 0; - // } ret = AX_VO_SendFrame2Disp(layer, &stVFrame, 0); if (0 != ret) { @@ -958,12 +950,12 @@ AX_BOOL CVO::CoordinateConvert(VO_CHN voChn, const DETECT_RESULT_T& tResult) { return AX_FALSE; } - AX_U32 nRegionChnIndex = voChn; + AX_U32 nRegionChn = voChn; if (voChn == m_stAttr.pipChn) { - nRegionChnIndex = m_stAttr.stChnInfo.nCount; + nRegionChn = NVR_PIP_CHN_NUM; } - m_vecRegionInfo[nRegionChnIndex].Clear(); + m_vecRegionInfo[nRegionChn].Clear(); AX_U32 nImageW = 0; AX_U32 nImageH = 0; @@ -995,8 +987,9 @@ AX_BOOL CVO::CoordinateConvert(VO_CHN voChn, const DETECT_RESULT_T& tResult) { tRect.nH = (AX_U32)(item.tBox.fH * fYRatio); if (voChn == m_stAttr.pipChn) { - m_vecRegionInfo[nRegionChnIndex].vecRects.emplace_back(tRect.nX, tRect.nY, tRect.nW, tRect.nH); - m_vecRegionInfo[nRegionChnIndex].bValid = AX_TRUE; + m_vecRegionInfo[nRegionChn].vecRects.emplace_back(tRect.nX, tRect.nY, tRect.nW, tRect.nH); + m_vecRegionInfo[nRegionChn].bValid = AX_TRUE; + m_vecRegionInfo[nRegionChn].nChn = voChn; } else { AX_VO_RECT_T stChnCropRect = m_stAttr.stChnInfo.arrCropRect[voChn]; if (stChnCropRect.u32Width > 0 && stChnCropRect.u32Height > 0) { @@ -1081,14 +1074,15 @@ AX_BOOL CVO::CoordinateConvert(VO_CHN voChn, const DETECT_RESULT_T& tResult) { vector vecConvertedLines; if (GenRegionsForPipRect(tRect, vecConvertedRect, vecConvertedLines)) { for (auto& m : vecConvertedRect) { - m_vecRegionInfo[nRegionChnIndex].vecRects.emplace_back(m); + m_vecRegionInfo[nRegionChn].vecRects.emplace_back(m); } for (auto& m : vecConvertedLines) { - m_vecRegionInfo[nRegionChnIndex].vecLines.emplace_back(m); + m_vecRegionInfo[nRegionChn].vecLines.emplace_back(m); } - m_vecRegionInfo[nRegionChnIndex].bValid = AX_TRUE; + m_vecRegionInfo[nRegionChn].bValid = AX_TRUE; + m_vecRegionInfo[nRegionChn].nChn = voChn; } } } @@ -1245,10 +1239,10 @@ AX_BOOL CVO::PointInRect(VO_POINT_ATTR_T& tPoint, VO_RECT_ATTR_T& tRect) { AX_VOID CVO::ClearRegions(VO_CHN voChn) { std::unique_lock lck(m_mtxRegions); - AX_U32 nRegionChnIndex = voChn; + AX_U32 nRegionChn = voChn; if (voChn == m_stAttr.pipChn) { - nRegionChnIndex = m_stAttr.stChnInfo.nCount; + nRegionChn = NVR_PIP_CHN_NUM; } - m_vecRegionInfo[nRegionChnIndex].Clear(); -} \ No newline at end of file + m_vecRegionInfo[nRegionChn].Clear(); +} diff --git a/app/demo/src/ppl/nvr/hal/vo.hpp b/app/demo/src/ppl/nvr/hal/vo.hpp index 4532df5..c295242 100644 --- a/app/demo/src/ppl/nvr/hal/vo.hpp +++ b/app/demo/src/ppl/nvr/hal/vo.hpp @@ -136,6 +136,7 @@ typedef struct VO_RECT_ATTR { typedef struct VO_REGION_INFO { AX_BOOL bValid {AX_FALSE}; + AX_S32 nChn {-1}; std::vector vecLines; std::vector vecRects; @@ -228,7 +229,8 @@ class CVO { AX_BOOL CheckChnInfo(CONST VO_CHN_INFO_T& stChnInfo); AX_VOID PaintRegions(AX_VIDEO_FRAME_T* pLayerFrame); - AX_BOOL GenRegionsForPipRect(VO_RECT_ATTR_T& tRect, std::vector& vecOutConvertedRect, std::vector& vecOutConvertedLines); + AX_BOOL GenRegionsForPipRect(VO_RECT_ATTR_T& tRect, std::vector& vecOutConvertedRect, + std::vector& vecOutConvertedLines); AX_VOID LayerFrameGetThread(AX_VOID* pArg); AX_BOOL PointInRect(VO_POINT_ATTR_T& tPoint, VO_RECT_ATTR_T& tRect); @@ -294,7 +296,6 @@ class CVOLayerRegionObserver : public IObserver { } m_pSink->ClearRegions(itFinder->second); - m_mapSrcGrp2VoChn[nSrcGrp] = -1; } diff --git a/app/demo/src/ppl/nvr/main.cpp b/app/demo/src/ppl/nvr/main.cpp index 84883d7..cdbbe69 100644 --- a/app/demo/src/ppl/nvr/main.cpp +++ b/app/demo/src/ppl/nvr/main.cpp @@ -67,6 +67,8 @@ int main(int argc, char *argv[]) { cmd_parser.add("screentype", 's', "0:primary 1:sencondary", false, 0); cmd_parser.add("log", 'v', "log level", false, APP_LOG_WARN); cmd_parser.add("testsuite", 'u', "0:disable 1:stability 2:ut", false, 0); + /* coredump is preprocessed within run.sh */ + cmd_parser.add("coredump", 'q', "0:disable coredump path config others:enable...", false, 1); cmd_parser.add("gdb", 'd', "gdb debug"); cmd_parser.parse_check(argc, argv); AX_S32 screen_type = cmd_parser.get("screentype"); diff --git a/app/demo/src/ppl/nvr/nvrdemo.pro b/app/demo/src/ppl/nvr/nvrdemo.pro new file mode 100644 index 0000000..bd9f193 --- /dev/null +++ b/app/demo/src/ppl/nvr/nvrdemo.pro @@ -0,0 +1,218 @@ +QT += core gui widgets network + +CONFIG += c++14 + +TARGET = nvrdemo +TEMPLATE = app + +HOME_PATH = ../../../../.. +MSP_OUT_PATH = $$HOME_PATH/msp/out +THIRD_PARTY_PATH = $$HOME_PATH/third-party +DRM_PATH = $$THIRD_PARTY_PATH/drm/lib +APP_SRC_DIR = $$HOME_PATH/app/demo/src + +GUI_DIR = gui +GUI_SRC_DIR = $$GUI_DIR/ui +GUI_RES_DIR = $$GUI_DIR/res +HAL_DIR = hal +HAL_SRC_DIR = $$HAL_DIR +FRM_DIR = frm +FRM_SRC_DIR = $$FRM_DIR +CFG_DIR = cfg +CFG_SRC_DIR = $$CFG_DIR + +DEPENDPATH += $$MSP_OUT_PATH/lib +DEPENDPATH += $$THIRD_PARTY_PATH/ffmpeg/lib +DEPENDPATH += $$THIRD_PARTY_PATH/openssl/lib + +INCLUDEPATH += $$MSP_OUT_PATH/include +INCLUDEPATH += $$APP_SRC_DIR/3rd/inc/live/BasicUsageEnvironment +INCLUDEPATH += $$APP_SRC_DIR/3rd/inc/live/groupsock +INCLUDEPATH += $$APP_SRC_DIR/3rd/inc/live/liveMedia +INCLUDEPATH += $$APP_SRC_DIR/3rd/inc/live/UsageEnvironment +INCLUDEPATH += $$THIRD_PARTY_PATH/ffmpeg/include +INCLUDEPATH += $$THIRD_PARTY_PATH/openssl/include +INCLUDEPATH += $$THIRD_PARTY_PATH/cmdline +INCLUDEPATH += $$APP_SRC_DIR/config/ini +INCLUDEPATH += $$APP_SRC_DIR/config/json +INCLUDEPATH += $$APP_SRC_DIR/header +INCLUDEPATH += $$APP_SRC_DIR/log +INCLUDEPATH += $$APP_SRC_DIR/utils +INCLUDEPATH += $$APP_SRC_DIR/pool +INCLUDEPATH += $$APP_SRC_DIR/rtsp +INCLUDEPATH += $$APP_SRC_DIR/vdec/stream +INCLUDEPATH += $$GUI_SRC_DIR +INCLUDEPATH += $$HAL_SRC_DIR +INCLUDEPATH += $$FRM_SRC_DIR +INCLUDEPATH += $$CFG_SRC_DIR + +QMAKE_CFLAGS = `pkg-config --cflags -Wl,-rpath-link=$$THIRD_PARTY_PATH/ffmpeg/lib` + +equals(ASAN, yes) { + QMAKE_CFLAGS += -fsanitize=leak + QMAKE_CFLAGS += -fsanitize=address + QMAKE_CFLAGS += -fno-omit-frame-pointer +} + +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +equals(ASAN, yes) { + QMAKE_LFLAGS += -fsanitize=leak + QMAKE_LFLAGS += -fsanitize=address + QMAKE_LFLAGS += -fno-omit-frame-pointer +} + +LIBS += -L$$MSP_OUT_PATH/lib +LIBS += -lax_sys +LIBS += -lax_vdec +LIBS += -lax_venc +LIBS += -lax_ivps +LIBS += -lax_interpreter +LIBS += -lax_engine +LIBS += -lax_skel +LIBS += -lax_vo +LIBS += -L$$THIRD_PARTY_PATH/drm/lib -ldrm +LIBS += -L$$THIRD_PARTY_PATH/ffmpeg/lib -lavcodec -lavutil -lavformat -lswresample +LIBS += -L$$THIRD_PARTY_PATH/openssl/lib -lssl -lcrypto +# LIBS += -L$$APP_SRC_DIR/3rd/lib -lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment + +CONFIG(debug, debug|release) { + LIBS += -L$$APP_SRC_DIR/3rd/lib/dbg -lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment + DESTDIR = build/debug +} +CONFIG(release, debug|release) { + LIBS += -L$$APP_SRC_DIR/3rd/lib -lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment + DESTDIR = build/release +} + +RESOURCES += $$GUI_RES_DIR/src.qrc +OBJECTS_DIR = $$DESTDIR/.obj +MOC_DIR = $$DESTDIR/.moc +RCC_DIR = $$DESTDIR/.qrc +UI_DIR = $$DESTDIR/.u +OBJECTS_DIR = $$DESTDIR/.obj + +# The following define makes your compiler emit warnings if you use +# any Qt feature that has been marked deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if it uses deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += main.cpp + +# GUI +SOURCES += \ + $$GUI_SRC_DIR/utils/*.cpp \ + $$GUI_SRC_DIR/nvrmainwindow.cpp \ + $$GUI_SRC_DIR/preview/PreviewLeftToolbar.cpp \ + $$GUI_SRC_DIR/preview/PreviewTopToolbar.cpp \ + $$GUI_SRC_DIR/preview/PreviewPip.cpp \ + $$GUI_SRC_DIR/preview/PreviewMain.cpp \ + $$GUI_SRC_DIR/playback/PlaybackLeftToolbar.cpp \ + $$GUI_SRC_DIR/playback/PlaybackTopToolbar.cpp \ + $$GUI_SRC_DIR/playback/PlaybackMain.cpp \ + $$GUI_SRC_DIR/playback/PlaybackTimeLine.cpp \ + $$GUI_SRC_DIR/playback/PlaybackCtrl.cpp \ + $$GUI_SRC_DIR/round/RoundPatrolMain.cpp \ + $$GUI_SRC_DIR/settings/SettingsLeftToolbar.cpp \ + $$GUI_SRC_DIR/settings/SettingsTopToolbar.cpp \ + $$GUI_SRC_DIR/settings/SettingsMain.cpp \ + $$GUI_SRC_DIR/settings/DlgDevInfo.cpp \ + $$GUI_SRC_DIR/settings/SettingPageSystem.cpp \ + $$GUI_SRC_DIR/settings/SettingPageNetwork.cpp \ + $$GUI_SRC_DIR/settings/SettingPageDevList.cpp \ + $$GUI_SRC_DIR/settings/SettingPageStorage.cpp \ + $$GUI_SRC_DIR/settings/SettingPageRoundPatrol.cpp \ + $$GUI_SRC_DIR/test_suite/*.cpp + +# HAL +SOURCES += \ + $$APP_SRC_DIR/log/*.cpp \ + $$APP_SRC_DIR/config/ini/*.cpp \ + $$APP_SRC_DIR/utils/fpsctrl.cpp \ + $$APP_SRC_DIR/utils/DiskHelper.cpp \ + $$APP_SRC_DIR/utils/ElapsedTimer.cpp \ + $$APP_SRC_DIR/utils/ping4.cpp \ + $$APP_SRC_DIR/utils/SpsParser.cpp \ + $$APP_SRC_DIR/rtsp/AXRTSPClient.cpp \ + $$HAL_SRC_DIR/linker.cpp \ + $$HAL_SRC_DIR/vo.cpp \ + $$HAL_SRC_DIR/vdec.cpp \ + $$HAL_SRC_DIR/venc.cpp \ + $$HAL_SRC_DIR/VideoEncoderEx.cpp \ + $$HAL_SRC_DIR/ivps.cpp \ + $$HAL_SRC_DIR/istream.cpp \ + $$HAL_SRC_DIR/ffmpegstream.cpp \ + $$HAL_SRC_DIR/rtspstream.cpp \ + $$HAL_SRC_DIR/rtspdamon.cpp \ + $$HAL_SRC_DIR/region.cpp \ + $$HAL_SRC_DIR/detector.cpp \ + $$HAL_SRC_DIR/datastream_record.cpp \ + $$HAL_SRC_DIR/datastream_play.cpp \ + $$HAL_SRC_DIR/datastreamfile.cpp \ + $$HAL_SRC_DIR/datastreamIndFile.cpp \ + $$HAL_SRC_DIR/framebufferPaint.cpp \ + $$HAL_SRC_DIR/streamContainer.cpp \ + $$HAL_SRC_DIR/streamTransfer.cpp + +# CFG +SOURCES += \ + $$CFG_SRC_DIR/*.cpp \ + +# FRM +SOURCES += \ + $$FRM_SRC_DIR/*.cpp \ + +HEADERS += \ + $$GUI_SRC_DIR/global/UiGlobalDef.h \ + $$GUI_SRC_DIR/utils/*.h \ + $$GUI_SRC_DIR/nvrmainwindow.h \ + $$GUI_SRC_DIR/preview/PreviewLeftToolbar.h \ + $$GUI_SRC_DIR/preview/PreviewTopToolbar.h \ + $$GUI_SRC_DIR/preview/PreviewPip.h \ + $$GUI_SRC_DIR/preview/PreviewMain.h \ + $$GUI_SRC_DIR/playback/PlaybackLeftToolbar.h \ + $$GUI_SRC_DIR/playback/PlaybackTopToolbar.h \ + $$GUI_SRC_DIR/playback/PlaybackMain.h \ + $$GUI_SRC_DIR/playback/PlaybackTimeLine.h \ + $$GUI_SRC_DIR/playback/PlaybackCtrl.h \ + $$GUI_SRC_DIR/round/RoundPatrolMain.h \ + $$GUI_SRC_DIR/settings/SettingsLeftToolbar.h \ + $$GUI_SRC_DIR/settings/SettingsTopToolbar.h \ + $$GUI_SRC_DIR/settings/SettingsMain.h \ + $$GUI_SRC_DIR/settings/DlgDevInfo.h \ + $$GUI_SRC_DIR/settings/SettingPageSystem.h \ + $$GUI_SRC_DIR/settings/SettingPageNetwork.h \ + $$GUI_SRC_DIR/settings/SettingPageDevList.h \ + $$GUI_SRC_DIR/settings/SettingPageStorage.h \ + $$GUI_SRC_DIR/settings/SettingPageRoundPatrol.h \ + $$GUI_SRC_DIR/test_suite/*.hpp + +FORMS += \ + $$GUI_SRC_DIR/nvrmainwindow.ui \ + $$GUI_SRC_DIR/preview/PreviewLeftToolbar.ui \ + $$GUI_SRC_DIR/preview/PreviewTopToolbar.ui \ + $$GUI_SRC_DIR/preview/PreviewPip.ui \ + $$GUI_SRC_DIR/preview/PreviewMain.ui \ + $$GUI_SRC_DIR/playback/PlaybackLeftToolbar.ui \ + $$GUI_SRC_DIR/playback/PlaybackTopToolbar.ui \ + $$GUI_SRC_DIR/playback/PlaybackMain.ui \ + $$GUI_SRC_DIR/playback/PlaybackTimeLine.ui \ + $$GUI_SRC_DIR/playback/PlaybackCtrl.ui \ + $$GUI_SRC_DIR/round/RoundPatrolMain.ui \ + $$GUI_SRC_DIR/settings/SettingsLeftToolbar.ui \ + $$GUI_SRC_DIR/settings/SettingsTopToolbar.ui \ + $$GUI_SRC_DIR/settings/SettingsMain.ui \ + $$GUI_SRC_DIR/settings/DlgDevInfo.ui \ + $$GUI_SRC_DIR/settings/SettingPageSystem.ui \ + $$GUI_SRC_DIR/settings/SettingPageNetwork.ui \ + $$GUI_SRC_DIR/settings/SettingPageDevList.ui \ + $$GUI_SRC_DIR/settings/SettingPageStorage.ui \ + $$GUI_SRC_DIR/settings/SettingPageRoundPatrol.ui + + diff --git a/app/demo/src/rtp/AXRTPDec.cpp b/app/demo/src/rtp/AXRTPDec.cpp index 04e7087..e4a8096 100644 --- a/app/demo/src/rtp/AXRTPDec.cpp +++ b/app/demo/src/rtp/AXRTPDec.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include diff --git a/app/demo/src/rtp/AXRTPDec.h b/app/demo/src/rtp/AXRTPDec.h index 7b4c168..f1d3c4e 100644 --- a/app/demo/src/rtp/AXRTPDec.h +++ b/app/demo/src/rtp/AXRTPDec.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/rtp/AXRTPDefine.h b/app/demo/src/rtp/AXRTPDefine.h index dbeef7e..6188706 100644 --- a/app/demo/src/rtp/AXRTPDefine.h +++ b/app/demo/src/rtp/AXRTPDefine.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/rtp/AXRTPEnc.cpp b/app/demo/src/rtp/AXRTPEnc.cpp index 994af5f..2e12655 100644 --- a/app/demo/src/rtp/AXRTPEnc.cpp +++ b/app/demo/src/rtp/AXRTPEnc.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include diff --git a/app/demo/src/rtp/AXRTPEnc.h b/app/demo/src/rtp/AXRTPEnc.h index 695d5d0..2fe2e81 100644 --- a/app/demo/src/rtp/AXRTPEnc.h +++ b/app/demo/src/rtp/AXRTPEnc.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/rtsp/AXFramedSource.cpp b/app/demo/src/rtsp/AXFramedSource.cpp index 9b24679..2b2449b 100644 --- a/app/demo/src/rtsp/AXFramedSource.cpp +++ b/app/demo/src/rtsp/AXFramedSource.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/rtsp/AXFramedSource.h b/app/demo/src/rtsp/AXFramedSource.h index 0bdae94..f83fa4d 100644 --- a/app/demo/src/rtsp/AXFramedSource.h +++ b/app/demo/src/rtsp/AXFramedSource.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/rtsp/AXLiveServerMediaSession.cpp b/app/demo/src/rtsp/AXLiveServerMediaSession.cpp index 6ac6f75..3498626 100644 --- a/app/demo/src/rtsp/AXLiveServerMediaSession.cpp +++ b/app/demo/src/rtsp/AXLiveServerMediaSession.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/rtsp/AXLiveServerMediaSession.h b/app/demo/src/rtsp/AXLiveServerMediaSession.h index 79e1927..ce226e7 100644 --- a/app/demo/src/rtsp/AXLiveServerMediaSession.h +++ b/app/demo/src/rtsp/AXLiveServerMediaSession.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/rtsp/AXRTSPClient.cpp b/app/demo/src/rtsp/AXRTSPClient.cpp index 5b8cc44..bcd3e90 100644 --- a/app/demo/src/rtsp/AXRTSPClient.cpp +++ b/app/demo/src/rtsp/AXRTSPClient.cpp @@ -271,7 +271,7 @@ static void continueAfterSETUP(RTSPClient *rtspClient, int resultCode, char *res // (This will prepare the data sink to receive data; the actual flow of data from the client won't start happening until later, // after we've sent a RTSP "PLAY" command.) - scs.subsession->sink = DummySink::createNew(env, *scs.subsession, rtspClient->url(), scs.cb, scs.bufSize); + scs.subsession->sink = DummySink::createNew(env, *scs.subsession, rtspClient->url(), scs.cb, scs.bufSize, scs.cookie); // perhaps use your own custom "MediaSink" subclass instead if (scs.subsession->sink == NULL) { env << *rtspClient << "Failed to create a data sink for the \"" << *scs.subsession << "\" subsession: " << env.getResultMsg() @@ -450,14 +450,15 @@ static void shutdownStream(RTSPClient *rtspClient, int exitCode) { // Implementation of "CAXRTSPClient": CAXRTSPClient *CAXRTSPClient::createNew(UsageEnvironment &env, char const *rtspURL, RtspClientCallback cb, int bufSize, int verbosityLevel, - char const *applicationName, portNumBits tunnelOverHTTPPortNum) { - return new CAXRTSPClient(env, rtspURL, cb, bufSize, verbosityLevel, applicationName, tunnelOverHTTPPortNum); + char const *applicationName, portNumBits tunnelOverHTTPPortNum, AX_S32 cookie) { + return new CAXRTSPClient(env, rtspURL, cb, bufSize, verbosityLevel, applicationName, tunnelOverHTTPPortNum, cookie); } CAXRTSPClient::CAXRTSPClient(UsageEnvironment &env, char const *rtspURL, RtspClientCallback cb, int bufSize, int verbosityLevel, - char const *applicationName, portNumBits tunnelOverHTTPPortNum) + char const *applicationName, portNumBits tunnelOverHTTPPortNum, AX_S32 cookie) : RTSPClient(env, rtspURL, verbosityLevel, applicationName, tunnelOverHTTPPortNum, -1) { scs.cb = cb; + scs.cookie = cookie; if (bufSize <= 0) { bufSize = DUMMY_SINK_RECEIVE_BUFFER_SIZE; } @@ -495,11 +496,11 @@ StreamClientState::~StreamClientState() { // Implementation of "DummySink": DummySink *DummySink::createNew(UsageEnvironment &env, MediaSubsession &subsession, char const *streamId, RtspClientCallback cb, - unsigned int bufSize) { - return new DummySink(env, subsession, streamId, cb, bufSize); + unsigned int bufSize, AX_S32 cookie) { + return new DummySink(env, subsession, streamId, cb, bufSize, cookie); } -DummySink::DummySink(UsageEnvironment &env, MediaSubsession &subsession, char const *streamId, RtspClientCallback cb, unsigned int bufSize) +DummySink::DummySink(UsageEnvironment &env, MediaSubsession &subsession, char const *streamId, RtspClientCallback cb, unsigned int bufSize, AX_S32 cookie) : MediaSink(env), fSubsession(subsession), firstFrame(1) { m_cacheBufCap = 0x2000; m_cacheBufLen = 0; @@ -511,6 +512,7 @@ DummySink::DummySink(UsageEnvironment &env, MediaSubsession &subsession, char co memcpy(m_frameBuf, &NALU_START_CODE[0], NALU_START_CODE_LENGTH); m_cb = cb; + m_cookie = cookie; if (0 == strcmp(subsession.codecName(), "H264")) { m_ePayload = PT_H264; diff --git a/app/demo/src/rtsp/AXRTSPClient.h b/app/demo/src/rtsp/AXRTSPClient.h index 583dbc1..0c0fe4a 100644 --- a/app/demo/src/rtsp/AXRTSPClient.h +++ b/app/demo/src/rtsp/AXRTSPClient.h @@ -61,6 +61,7 @@ class StreamClientState { int streamTransportMode = {0}; /* 0: UDP 1: TCP */ int keepAliveInterval = {10}; /* unit: seconds */ CAXEvent played; + AX_S32 cookie = {-1}; }; // If you're streaming just a single stream (i.e., just from a single URL, once), then you can define and use just a single @@ -70,7 +71,7 @@ class StreamClientState { class CAXRTSPClient : public RTSPClient { public: static CAXRTSPClient *createNew(UsageEnvironment &env, char const *rtspURL, RtspClientCallback cb, int bufSize, int verbosityLevel = 0, - char const *applicationName = NULL, portNumBits tunnelOverHTTPPortNum = 0); + char const *applicationName = NULL, portNumBits tunnelOverHTTPPortNum = 0, AX_S32 cookie = -1); void Start(void); @@ -94,7 +95,7 @@ class CAXRTSPClient : public RTSPClient { protected: CAXRTSPClient(UsageEnvironment &env, char const *rtspURL, RtspClientCallback cb, int bufSize, int verbosityLevel, - char const *applicationName, portNumBits tunnelOverHTTPPortNum); + char const *applicationName, portNumBits tunnelOverHTTPPortNum, AX_S32 cookie); // called only by createNew(); virtual ~CAXRTSPClient(); @@ -111,10 +112,12 @@ class DummySink : public MediaSink { static DummySink *createNew(UsageEnvironment &env, MediaSubsession &subsession, // identifies the kind of data that's being received char const *streamId, // identifies the stream itself (optional) - RtspClientCallback cb, unsigned int bufSize); + RtspClientCallback cb, + unsigned int bufSize, + AX_S32 cookie); private: - DummySink(UsageEnvironment &env, MediaSubsession &subsession, char const *streamId, RtspClientCallback cb, unsigned int bufSize); + DummySink(UsageEnvironment &env, MediaSubsession &subsession, char const *streamId, RtspClientCallback cb, unsigned int bufSize, AX_S32 cookie); // called only by "createNew()" virtual ~DummySink(); @@ -149,4 +152,5 @@ class DummySink : public MediaSink { int firstFrame; RtspClientCallback m_cb; AX_PAYLOAD_TYPE_E m_ePayload; + AX_S32 m_cookie; }; diff --git a/app/demo/src/rtsp/AXRtspObserver.h b/app/demo/src/rtsp/AXRtspObserver.h index 09d758e..d6b39bf 100644 --- a/app/demo/src/rtsp/AXRtspObserver.h +++ b/app/demo/src/rtsp/AXRtspObserver.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/rtsp/AXRtspServer.cpp b/app/demo/src/rtsp/AXRtspServer.cpp index 3df5200..41fff01 100644 --- a/app/demo/src/rtsp/AXRtspServer.cpp +++ b/app/demo/src/rtsp/AXRtspServer.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/rtsp/AXRtspServer.h b/app/demo/src/rtsp/AXRtspServer.h index b722e00..2b072b9 100644 --- a/app/demo/src/rtsp/AXRtspServer.h +++ b/app/demo/src/rtsp/AXRtspServer.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/BaseSensor.cpp b/app/demo/src/sensor/BaseSensor.cpp index 5c92bd3..30f33b1 100644 --- a/app/demo/src/sensor/BaseSensor.cpp +++ b/app/demo/src/sensor/BaseSensor.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/BaseSensor.h b/app/demo/src/sensor/BaseSensor.h index e57b300..6f10726 100644 --- a/app/demo/src/sensor/BaseSensor.h +++ b/app/demo/src/sensor/BaseSensor.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/ISensor.hpp b/app/demo/src/sensor/ISensor.hpp index 2843c4e..6ec8fbd 100644 --- a/app/demo/src/sensor/ISensor.hpp +++ b/app/demo/src/sensor/ISensor.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/IspAlgoWrapper.cpp b/app/demo/src/sensor/IspAlgoWrapper.cpp index 9e1573c..42e05f4 100644 --- a/app/demo/src/sensor/IspAlgoWrapper.cpp +++ b/app/demo/src/sensor/IspAlgoWrapper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/IspAlgoWrapper.hpp b/app/demo/src/sensor/IspAlgoWrapper.hpp index f1492bb..3753747 100644 --- a/app/demo/src/sensor/IspAlgoWrapper.hpp +++ b/app/demo/src/sensor/IspAlgoWrapper.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/OS04a10.cpp b/app/demo/src/sensor/OS04a10.cpp index 01fbc79..3ba89bb 100644 --- a/app/demo/src/sensor/OS04a10.cpp +++ b/app/demo/src/sensor/OS04a10.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/OS04a10.h b/app/demo/src/sensor/OS04a10.h index 4370bb1..e37c240 100644 --- a/app/demo/src/sensor/OS04a10.h +++ b/app/demo/src/sensor/OS04a10.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/OS08a20.cpp b/app/demo/src/sensor/OS08a20.cpp index 756ef4a..6900861 100644 --- a/app/demo/src/sensor/OS08a20.cpp +++ b/app/demo/src/sensor/OS08a20.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/OS08a20.h b/app/demo/src/sensor/OS08a20.h index 88ade6d..1e59530 100644 --- a/app/demo/src/sensor/OS08a20.h +++ b/app/demo/src/sensor/OS08a20.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/OS08b10.cpp b/app/demo/src/sensor/OS08b10.cpp index e91eca8..72bfbeb 100644 --- a/app/demo/src/sensor/OS08b10.cpp +++ b/app/demo/src/sensor/OS08b10.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/OS08b10.h b/app/demo/src/sensor/OS08b10.h index 54dcefb..c28647f 100644 --- a/app/demo/src/sensor/OS08b10.h +++ b/app/demo/src/sensor/OS08b10.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/SC910gs.cpp b/app/demo/src/sensor/SC910gs.cpp index 3292c40..f87a8bc 100644 --- a/app/demo/src/sensor/SC910gs.cpp +++ b/app/demo/src/sensor/SC910gs.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/SC910gs.h b/app/demo/src/sensor/SC910gs.h index 1aadf48..3bcbc19 100644 --- a/app/demo/src/sensor/SC910gs.h +++ b/app/demo/src/sensor/SC910gs.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/SensorFactory.cpp b/app/demo/src/sensor/SensorFactory.cpp index 54c53fc..5f7e89c 100644 --- a/app/demo/src/sensor/SensorFactory.cpp +++ b/app/demo/src/sensor/SensorFactory.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/SensorFactory.hpp b/app/demo/src/sensor/SensorFactory.hpp index 5297277..800cf7e 100644 --- a/app/demo/src/sensor/SensorFactory.hpp +++ b/app/demo/src/sensor/SensorFactory.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/sensor/Uxe.cpp b/app/demo/src/sensor/Uxe.cpp index 89d6588..c9bd9bd 100644 --- a/app/demo/src/sensor/Uxe.cpp +++ b/app/demo/src/sensor/Uxe.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "ax_global_type.h" diff --git a/app/demo/src/sensor/Uxe.h b/app/demo/src/sensor/Uxe.h index f6b4498..78f0d8a 100644 --- a/app/demo/src/sensor/Uxe.h +++ b/app/demo/src/sensor/Uxe.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/stage/AXStage.cpp b/app/demo/src/stage/AXStage.cpp index 335c4c8..4ffa84b 100644 --- a/app/demo/src/stage/AXStage.cpp +++ b/app/demo/src/stage/AXStage.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/stage/AXStage.hpp b/app/demo/src/stage/AXStage.hpp index 8e836b4..0abaaa9 100644 --- a/app/demo/src/stage/AXStage.hpp +++ b/app/demo/src/stage/AXStage.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/AXRingBuffer.h b/app/demo/src/utils/AXRingBuffer.h index d84760e..9c72cae 100644 --- a/app/demo/src/utils/AXRingBuffer.h +++ b/app/demo/src/utils/AXRingBuffer.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/AXSingleton.h b/app/demo/src/utils/AXSingleton.h index 4baf6a4..9ce8831 100644 --- a/app/demo/src/utils/AXSingleton.h +++ b/app/demo/src/utils/AXSingleton.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/AXStringHelper.hpp b/app/demo/src/utils/AXStringHelper.hpp index 4f1b144..bbd1a4b 100644 --- a/app/demo/src/utils/AXStringHelper.hpp +++ b/app/demo/src/utils/AXStringHelper.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/AXTypeConverter.hpp b/app/demo/src/utils/AXTypeConverter.hpp index bddaf46..a46ef9e 100644 --- a/app/demo/src/utils/AXTypeConverter.hpp +++ b/app/demo/src/utils/AXTypeConverter.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/CommonUtils.hpp b/app/demo/src/utils/CommonUtils.hpp index d230c0e..1a14918 100644 --- a/app/demo/src/utils/CommonUtils.hpp +++ b/app/demo/src/utils/CommonUtils.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/DiskHelper.cpp b/app/demo/src/utils/DiskHelper.cpp index fb5f8fd..08aa51f 100644 --- a/app/demo/src/utils/DiskHelper.cpp +++ b/app/demo/src/utils/DiskHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "DiskHelper.hpp" diff --git a/app/demo/src/utils/DiskHelper.hpp b/app/demo/src/utils/DiskHelper.hpp index 5775e89..b0ba2d5 100644 --- a/app/demo/src/utils/DiskHelper.hpp +++ b/app/demo/src/utils/DiskHelper.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/utils/ElapsedTimer.cpp b/app/demo/src/utils/ElapsedTimer.cpp index c5862dc..7c738af 100644 --- a/app/demo/src/utils/ElapsedTimer.cpp +++ b/app/demo/src/utils/ElapsedTimer.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/ElapsedTimer.hpp b/app/demo/src/utils/ElapsedTimer.hpp index a0b7eb2..b7dcaef 100644 --- a/app/demo/src/utils/ElapsedTimer.hpp +++ b/app/demo/src/utils/ElapsedTimer.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/FramerateCtrlHelper.cpp b/app/demo/src/utils/FramerateCtrlHelper.cpp index d515340..6147592 100644 --- a/app/demo/src/utils/FramerateCtrlHelper.cpp +++ b/app/demo/src/utils/FramerateCtrlHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/FramerateCtrlHelper.h b/app/demo/src/utils/FramerateCtrlHelper.h index ff4c319..8a094fc 100644 --- a/app/demo/src/utils/FramerateCtrlHelper.h +++ b/app/demo/src/utils/FramerateCtrlHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/IOPerf.hpp b/app/demo/src/utils/IOPerf.hpp index 87df7fb..1ee7265 100644 --- a/app/demo/src/utils/IOPerf.hpp +++ b/app/demo/src/utils/IOPerf.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/utils/PrintHelper.cpp b/app/demo/src/utils/PrintHelper.cpp index 4fe898f..6c88c86 100644 --- a/app/demo/src/utils/PrintHelper.cpp +++ b/app/demo/src/utils/PrintHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/PrintHelper.h b/app/demo/src/utils/PrintHelper.h index bbadc30..d920e16 100644 --- a/app/demo/src/utils/PrintHelper.h +++ b/app/demo/src/utils/PrintHelper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/SpsParser.cpp b/app/demo/src/utils/SpsParser.cpp index 8052b19..72d30a6 100644 --- a/app/demo/src/utils/SpsParser.cpp +++ b/app/demo/src/utils/SpsParser.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "SpsParser.hpp" diff --git a/app/demo/src/utils/SpsParser.hpp b/app/demo/src/utils/SpsParser.hpp index 6a242b1..fb2bacd 100644 --- a/app/demo/src/utils/SpsParser.hpp +++ b/app/demo/src/utils/SpsParser.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/utils/TimestampHelper.cpp b/app/demo/src/utils/TimestampHelper.cpp index 973a1b3..6a457b6 100644 --- a/app/demo/src/utils/TimestampHelper.cpp +++ b/app/demo/src/utils/TimestampHelper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "TimestampHelper.hpp" diff --git a/app/demo/src/utils/TimestampHelper.hpp b/app/demo/src/utils/TimestampHelper.hpp index 31a7858..da5faa1 100644 --- a/app/demo/src/utils/TimestampHelper.hpp +++ b/app/demo/src/utils/TimestampHelper.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/utils/fpsctrl.cpp b/app/demo/src/utils/fpsctrl.cpp index f270f77..9a1c81e 100644 --- a/app/demo/src/utils/fpsctrl.cpp +++ b/app/demo/src/utils/fpsctrl.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "fpsctrl.hpp" diff --git a/app/demo/src/utils/fpsctrl.hpp b/app/demo/src/utils/fpsctrl.hpp index c0ecd48..24b7faf 100644 --- a/app/demo/src/utils/fpsctrl.hpp +++ b/app/demo/src/utils/fpsctrl.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/utils/h264.hpp b/app/demo/src/utils/h264.hpp index 078d34b..60eb93d 100644 --- a/app/demo/src/utils/h264.hpp +++ b/app/demo/src/utils/h264.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/utils/hevc.hpp b/app/demo/src/utils/hevc.hpp index 9e4d85a..80449cc 100644 --- a/app/demo/src/utils/hevc.hpp +++ b/app/demo/src/utils/hevc.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/utils/nalu.hpp b/app/demo/src/utils/nalu.hpp index 673d3b8..333e1d5 100644 --- a/app/demo/src/utils/nalu.hpp +++ b/app/demo/src/utils/nalu.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #pragma once diff --git a/app/demo/src/utils/ping4.cpp b/app/demo/src/utils/ping4.cpp index 5add67b..3cb987e 100644 --- a/app/demo/src/utils/ping4.cpp +++ b/app/demo/src/utils/ping4.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include @@ -76,7 +76,7 @@ static int __ping4(const char *ip, int timeout /* seconds */) { c = sendto(sock, packet, sizeof(packet), 0, (struct sockaddr *)&saddr, sizeof(struct sockaddr_in)); if (c < 0 || c != sizeof(packet)) { - LOG("sendto socket fail, %s", strerror(errno)); + //LOG("sendto socket fail, %s", strerror(errno)); close(sock); return -1; } diff --git a/app/demo/src/utils/yuv/BmpOSD.cpp b/app/demo/src/utils/yuv/BmpOSD.cpp index c145802..421aaf2 100644 --- a/app/demo/src/utils/yuv/BmpOSD.cpp +++ b/app/demo/src/utils/yuv/BmpOSD.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/yuv/BmpOSD.hpp b/app/demo/src/utils/yuv/BmpOSD.hpp index 206b003..0cd3842 100644 --- a/app/demo/src/utils/yuv/BmpOSD.hpp +++ b/app/demo/src/utils/yuv/BmpOSD.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/yuv/YuvHandler.cpp b/app/demo/src/utils/yuv/YuvHandler.cpp index 09de745..de93d77 100644 --- a/app/demo/src/utils/yuv/YuvHandler.cpp +++ b/app/demo/src/utils/yuv/YuvHandler.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/utils/yuv/YuvHandler.hpp b/app/demo/src/utils/yuv/YuvHandler.hpp index 560b2d4..0d4355c 100644 --- a/app/demo/src/utils/yuv/YuvHandler.hpp +++ b/app/demo/src/utils/yuv/YuvHandler.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/vdec/VideoDecoder.cpp b/app/demo/src/vdec/VideoDecoder.cpp index 6fde2e5..3c130d9 100644 --- a/app/demo/src/vdec/VideoDecoder.cpp +++ b/app/demo/src/vdec/VideoDecoder.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/vdec/VideoDecoder.hpp b/app/demo/src/vdec/VideoDecoder.hpp index 9032f51..788d940 100644 --- a/app/demo/src/vdec/VideoDecoder.hpp +++ b/app/demo/src/vdec/VideoDecoder.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/vdec/stream/FileStreamer.cpp b/app/demo/src/vdec/stream/FileStreamer.cpp index 07806c0..fbd1621 100644 --- a/app/demo/src/vdec/stream/FileStreamer.cpp +++ b/app/demo/src/vdec/stream/FileStreamer.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/vdec/stream/FileStreamer.hpp b/app/demo/src/vdec/stream/FileStreamer.hpp index e159874..e43807e 100644 --- a/app/demo/src/vdec/stream/FileStreamer.hpp +++ b/app/demo/src/vdec/stream/FileStreamer.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/vdec/stream/IStreamHandler.hpp b/app/demo/src/vdec/stream/IStreamHandler.hpp index be3c854..1b9d26d 100644 --- a/app/demo/src/vdec/stream/IStreamHandler.hpp +++ b/app/demo/src/vdec/stream/IStreamHandler.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/vdec/stream/RtspStreamer.cpp b/app/demo/src/vdec/stream/RtspStreamer.cpp index d5a7a51..2954d7b 100644 --- a/app/demo/src/vdec/stream/RtspStreamer.cpp +++ b/app/demo/src/vdec/stream/RtspStreamer.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/vdec/stream/RtspStreamer.hpp b/app/demo/src/vdec/stream/RtspStreamer.hpp index 249ab4b..a89716a 100644 --- a/app/demo/src/vdec/stream/RtspStreamer.hpp +++ b/app/demo/src/vdec/stream/RtspStreamer.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/vdec/stream/StreamerFactory.hpp b/app/demo/src/vdec/stream/StreamerFactory.hpp index c4f0a7e..cf2c784 100644 --- a/app/demo/src/vdec/stream/StreamerFactory.hpp +++ b/app/demo/src/vdec/stream/StreamerFactory.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/vo/Vo.cpp b/app/demo/src/vo/Vo.cpp index cc6713c..c6bc6b7 100644 --- a/app/demo/src/vo/Vo.cpp +++ b/app/demo/src/vo/Vo.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/vo/Vo.hpp b/app/demo/src/vo/Vo.hpp index 8b590c7..9271e07 100644 --- a/app/demo/src/vo/Vo.hpp +++ b/app/demo/src/vo/Vo.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/webserver/WebObserver.h b/app/demo/src/webserver/WebObserver.h index 1f751c9..7249613 100644 --- a/app/demo/src/webserver/WebObserver.h +++ b/app/demo/src/webserver/WebObserver.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/webserver/WebServer.cpp b/app/demo/src/webserver/WebServer.cpp index a803c23..eca7bd9 100644 --- a/app/demo/src/webserver/WebServer.cpp +++ b/app/demo/src/webserver/WebServer.cpp @@ -1,11 +1,11 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/app/demo/src/webserver/WebServer.h b/app/demo/src/webserver/WebServer.h index 637deff..4d4d075 100644 --- a/app/demo/src/webserver/WebServer.h +++ b/app/demo/src/webserver/WebServer.h @@ -1,11 +1,11 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/build/axp_make.sh b/build/axp_make.sh index 21b7060..dc60744 100644 --- a/build/axp_make.sh +++ b/build/axp_make.sh @@ -4,16 +4,37 @@ set -e echo "make axp ..." -PROJECT=$1 -VERSION=$2 -SUPPORT_OPTEE=$3 -SUPPORT_AB_PART=$4 + +while getopts "a:o:p:u:v:" arg +do + case "$arg" in + o) + echo "support optee: $OPTARG" + SUPPORT_OPTEE=$OPTARG + ;; + p) + echo "project: $OPTARG" + PROJECT=$OPTARG + ;; + u) + echo "build ubuntu axp: $OPTARG" + BUILD_UBUNTU_AXP=$OPTARG + ;; + v) + echo "sdk version: $OPTARG" + VERSION=$OPTARG + ;; + a) + echo "enable ab part: $OPTARG" + SUPPORT_AB_PART=$OPTARG + ;; + esac +done + CHIP_NAME=${PROJECT%\_*} CHIP_GROUP=${CHIP_NAME:0:5}X VERSION_EXT=${VERSION}_$(date "+%Y%m%d%H%M%S") -echo $1 $2 $3 $4 - AXP_NAME=${PROJECT}_${VERSION_EXT}.axp LOCAL_PATH=$(pwd) @@ -22,10 +43,11 @@ OUTPUT_PATH=$LOCAL_PATH/out IMG_PATH=$OUTPUT_PATH/$PROJECT/images AXP_PATH=$OUTPUT_PATH/$AXP_NAME UBUNTU_AXP_PATH=${OUTPUT_PATH}/${PROJECT}_ubuntu_rootfs_${VERSION_EXT}.axp +UBUNTU_DESKTOP_AXP_PATH=${OUTPUT_PATH}/${PROJECT}_ubuntu_rootfs_desktop_${VERSION_EXT}.axp cp $HOME_PATH/tools/imgsign/eip.bin $IMG_PATH/eip.bin TOOL_PATH=$HOME_PATH/tools/mkaxp/make_axp.py -if [ "$PROJECT" = "AX650_emmc" ] || [ "$PROJECT" = "AX650_pipro_box" ] || [ "$PROJECT" = "AX650_master" ] || [ "$PROJECT" = "AX650_xpilot_6v" ]; then +if [ "$PROJECT" = "AX650_emmc" ] || [ "$PROJECT" = "AX650_xpilot_6v" ]; then if [ "$SUPPORT_OPTEE" = "false" ]; then XML_PATH=$HOME_PATH/tools/mkaxp/$CHIP_GROUP.xml optee="false" @@ -33,8 +55,6 @@ else XML_PATH=$HOME_PATH/tools/mkaxp/${CHIP_GROUP}_optee.xml optee="true" fi -elif [ "$PROJECT" = "AX650_nand" ]; then -XML_PATH=$HOME_PATH/tools/mkaxp/${CHIP_GROUP}_NAND.xml elif [ "$PROJECT" = "AX650_slave" ]; then XML_PATH=$HOME_PATH/tools/mkaxp/${CHIP_GROUP}_SLAVE.xml elif [ "$PROJECT" = "AX650_ssd" ]; then @@ -45,6 +65,22 @@ else XML_PATH=$HOME_PATH/tools/mkaxp/${CHIP_GROUP}_ssd_optee.xml optee="true" fi +elif [ "$PROJECT" = "AX650_pipro_box" ]; then +if [ "$SUPPORT_OPTEE" = "false" ]; then +XML_PATH=$HOME_PATH/tools/mkaxp/${CHIP_GROUP}_pipro.xml +optee="false" +else +XML_PATH=$HOME_PATH/tools/mkaxp/${CHIP_GROUP}_pipro_optee.xml +optee="true" +fi +elif [ "$PROJECT" = "AX650_master" ]; then +if [ "$SUPPORT_OPTEE" = "false" ]; then +XML_PATH=$HOME_PATH/tools/mkaxp/${CHIP_GROUP}_master.xml +optee="false" +else +XML_PATH=$HOME_PATH/tools/mkaxp/${CHIP_GROUP}_master_optee.xml +optee="true" +fi else XML_PATH=$HOME_PATH/tools/mkaxp/$CHIP_GROUP.xml fi @@ -65,6 +101,7 @@ if [ "$PROJECT" = "AX650_emmc" ] || [ "$PROJECT" = "AX650_pipro_box" ] || [ "$PR KERNEL_PATH=$IMG_PATH/Image ROOTFS_PATH=$IMG_PATH/rootfs_sparse.ext4 UBUNTU_ROOTFS_PATH=$IMG_PATH/ubuntu_rootfs_sparse.ext4 + UBUNTU_ROOTFS_DESKTOP_PATH=$IMG_PATH/ubuntu_rootfs_desktop_sparse.ext4 PARAM_PATH=$IMG_PATH/param_sparse.ext4 SOC_PATH=$IMG_PATH/soc_sparse.ext4 OPT_PATH=$IMG_PATH/opt_sparse.ext4 @@ -96,25 +133,14 @@ if [ "$PROJECT" = "AX650_emmc" ] || [ "$PROJECT" = "AX650_pipro_box" ] || [ "$PR UBUNTU_BIN_LIST="$BIN_LIST $UBUNTU_ROOTFS_PATH $PARAM_PATH $SOC_PATH $OPT_UBUNTU_ROOTFS_PATH" else UBUNTU_BIN_LIST="$BIN_LIST $UBUNTU_ROOTFS_PATH $PARAM_PATH $SOC_PATH $OPT_PATH" + if [ -e $UBUNTU_ROOTFS_DESKTOP_PATH ]; then + UBUNTU_DESKTOP_BIN_LIST="$BIN_LIST $UBUNTU_ROOTFS_DESKTOP_PATH $PARAM_PATH $SOC_PATH $OPT_PATH" + fi fi BIN_LIST="$BIN_LIST $ROOTFS_PATH $PARAM_PATH $SOC_PATH $OPT_PATH" fi ENABLE_SD_PACK=TRUE -elif [ "$PROJECT" = "AX650_nand" ]; then - DTB_PATH=$IMG_PATH/${PROJECT}.dtb - EIP_PATH=$IMG_PATH/eip.bin - FDL2_PATH=$IMG_PATH/fdl2_signed.bin - UBOOT_PATH=$IMG_PATH/u-boot_signed.bin - KERNEL_PATH=$IMG_PATH/Image - ROOTFS_PATH=$IMG_PATH/rootfs_soc_opt.ubi - BOOT_PATH=$IMG_PATH/boot.img - ATF_PATH=$IMG_PATH/atf_bl31.img - if [ ! -f $BOOT_PATH ];then - echo "make boot.img file..." - python3 $HOME_PATH/tools/imgsign/boot_AX650_sign.py -i $KERNEL_PATH -o $BOOT_PATH - fi - BIN_LIST="$EIP_PATH $FDL2_PATH $UBOOT_PATH $DTB_PATH $BOOT_PATH $ATF_PATH $ROOTFS_PATH" elif [ "$PROJECT" = "AX650_slave" ]; then SPL_PATH=$IMG_PATH/spl_${PROJECT}_signed.bin EIP_PATH=$IMG_PATH/eip.bin @@ -145,9 +171,16 @@ fi echo "make boot.img 2 file..." python3 $TOOL_PATH -p $CHIP_GROUP -v $VERSION_EXT -x $XML_PATH -o $AXP_PATH $BIN_LIST + +if [[ "$BUILD_UBUNTU_AXP" = "yes" ]]; then if [ "$UBUNTU_BIN_LIST" ]; then python3 $TOOL_PATH -p $CHIP_GROUP -v $VERSION_EXT -x $XML_PATH -o $UBUNTU_AXP_PATH $UBUNTU_BIN_LIST fi +if [ "$UBUNTU_DESKTOP_BIN_LIST" ]; then + python3 $TOOL_PATH -p $CHIP_GROUP -v $VERSION_EXT -x $XML_PATH -o $UBUNTU_DESKTOP_AXP_PATH $UBUNTU_DESKTOP_BIN_LIST +fi +fi + if [ "$ENABLE_SD_PACK" ]; then python3 $HOME_PATH/tools/mkaxp/sd_upgrade_pack.py -type sd_update -path $HOME_PATH/build/out/$PROJECT/images -xml $XML_PATH -optee $optee python3 $HOME_PATH/tools/mkaxp/sd_upgrade_pack.py -type sd_boot -path $HOME_PATH/build/out/$PROJECT/images -xml $XML_PATH -optee $optee diff --git a/build/projects/AX650_pipro_box.mak b/build/projects/AX650_pipro_box.mak index b0ed95a..f4a009b 100644 --- a/build/projects/AX650_pipro_box.mak +++ b/build/projects/AX650_pipro_box.mak @@ -1,7 +1,11 @@ BUILD_BUSYBOX := FALSE SUPPORT_UBIFS := FALSE -SUPPORT_OPTEE := false +ROOTFS_PART_SIZE := 24576M +SOC_PART_SIZE := 512M +OPT_PART_SIZE := 4096M + +#SUPPORT_OPTEE := false ifneq ($(strip $(SUPPORT_OPTEE)),false) OPTEE_IMAGE_ADDR := 0x134000000 OPTEE_RESERVED_SIZE := 0x2000000 @@ -10,9 +14,9 @@ endif #SECURE_ENABLE := true # linux OS memory config -OS_MEM := mem=2048M +OS_MEM := mem=4096M # cmm memory config -CMM_POOL_PARAM := anonymous,0,0x180000000,4096M +CMM_POOL_PARAM := anonymous,0,0x200000000,4096M # dsp mempory config # if build with asan=yes or debugkconfig=yes, change OS memory to 3GB @@ -20,3 +24,6 @@ ifneq ($(findstring yes, $(asan) $(debugkconfig)),) OS_MEM := mem=3072M CMM_POOL_PARAM := anonymous,0,0x1C0000000,4096M endif + +# if you want use ubuntu rootfs, uncomment the statement below +# use_ubuntu_rootfs := yes diff --git a/build/version.mak b/build/version.mak index 6260aec..46ea6d3 100644 --- a/build/version.mak +++ b/build/version.mak @@ -1 +1 @@ -SDK_VERSION=V1.45.0_P1_20230922094955 +SDK_VERSION=V1.45.0_P39_20240830020829 diff --git a/msp/component/dsp/xtos/include/ax630x_api.h b/msp/component/dsp/xtos/include/ax630x_api.h index 1e79f50..5c46124 100644 --- a/msp/component/dsp/xtos/include/ax630x_api.h +++ b/msp/component/dsp/xtos/include/ax630x_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/dsp/xtos/include/ax650x_api.h b/msp/component/dsp/xtos/include/ax650x_api.h index 7eb8819..315c09c 100644 --- a/msp/component/dsp/xtos/include/ax650x_api.h +++ b/msp/component/dsp/xtos/include/ax650x_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/dsp/xtos/include/ax_base_type.h b/msp/component/dsp/xtos/include/ax_base_type.h index fb151dc..b0fdcf7 100644 --- a/msp/component/dsp/xtos/include/ax_base_type.h +++ b/msp/component/dsp/xtos/include/ax_base_type.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/dsp/xtos/include/ax_dsp_common.h b/msp/component/dsp/xtos/include/ax_dsp_common.h index e8ff755..e55684d 100644 --- a/msp/component/dsp/xtos/include/ax_dsp_common.h +++ b/msp/component/dsp/xtos/include/ax_dsp_common.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/dsp/xtos/include/ax_dsp_def.h b/msp/component/dsp/xtos/include/ax_dsp_def.h index 1de7575..ba35259 100644 --- a/msp/component/dsp/xtos/include/ax_dsp_def.h +++ b/msp/component/dsp/xtos/include/ax_dsp_def.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/dsp/xtos/include/ax_dsp_tm.h b/msp/component/dsp/xtos/include/ax_dsp_tm.h index 5834e11..ae1acae 100644 --- a/msp/component/dsp/xtos/include/ax_dsp_tm.h +++ b/msp/component/dsp/xtos/include/ax_dsp_tm.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/dsp/xtos/include/ax_dsp_trace.h b/msp/component/dsp/xtos/include/ax_dsp_trace.h index e2d4f7a..dc58c7a 100644 --- a/msp/component/dsp/xtos/include/ax_dsp_trace.h +++ b/msp/component/dsp/xtos/include/ax_dsp_trace.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/dsp/xtos/sample_code/dsp_algo/ax_dsp_trace.c b/msp/component/dsp/xtos/sample_code/dsp_algo/ax_dsp_trace.c index 64325a9..4e96dd9 100644 --- a/msp/component/dsp/xtos/sample_code/dsp_algo/ax_dsp_trace.c +++ b/msp/component/dsp/xtos/sample_code/dsp_algo/ax_dsp_trace.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/dsp/xtos/sample_code/dsp_algo/dsp_algo.c b/msp/component/dsp/xtos/sample_code/dsp_algo/dsp_algo.c index a289941..a4da8be 100644 --- a/msp/component/dsp/xtos/sample_code/dsp_algo/dsp_algo.c +++ b/msp/component/dsp/xtos/sample_code/dsp_algo/dsp_algo.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/dsp/xtos/sample_code/dsp_algo/sample_add.c b/msp/component/dsp/xtos/sample_code/dsp_algo/sample_add.c index a96c550..57ac031 100644 --- a/msp/component/dsp/xtos/sample_code/dsp_algo/sample_add.c +++ b/msp/component/dsp/xtos/sample_code/dsp_algo/sample_add.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/dsp/xtos/sample_code/dsp_algo/sample_idma.c b/msp/component/dsp/xtos/sample_code/dsp_algo/sample_idma.c index 2309ab9..9547690 100644 --- a/msp/component/dsp/xtos/sample_code/dsp_algo/sample_idma.c +++ b/msp/component/dsp/xtos/sample_code/dsp_algo/sample_idma.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/dsp/xtos/sample_code/dsp_algo/sample_tile_manager.c b/msp/component/dsp/xtos/sample_code/dsp_algo/sample_tile_manager.c index 504703a..7671ca2 100644 --- a/msp/component/dsp/xtos/sample_code/dsp_algo/sample_tile_manager.c +++ b/msp/component/dsp/xtos/sample_code/dsp_algo/sample_tile_manager.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/common/include/isp_sensor_internal.h b/msp/component/isp_proton/sensor/common/include/isp_sensor_internal.h index 09fedee..2f1aaa3 100644 --- a/msp/component/isp_proton/sensor/common/include/isp_sensor_internal.h +++ b/msp/component/isp_proton/sensor/common/include/isp_sensor_internal.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/common/include/isp_sensor_types.h b/msp/component/isp_proton/sensor/common/include/isp_sensor_types.h index 1250d4e..7daae77 100644 --- a/msp/component/isp_proton/sensor/common/include/isp_sensor_types.h +++ b/msp/component/isp_proton/sensor/common/include/isp_sensor_types.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/i2c/i2c.c b/msp/component/isp_proton/sensor/i2c/i2c.c index 4f1c63a..097bc16 100644 --- a/msp/component/isp_proton/sensor/i2c/i2c.c +++ b/msp/component/isp_proton/sensor/i2c/i2c.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/i2c/i2c.h b/msp/component/isp_proton/sensor/i2c/i2c.h index 399728f..66966fa 100644 --- a/msp/component/isp_proton/sensor/i2c/i2c.h +++ b/msp/component/isp_proton/sensor/i2c/i2c.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/include/Makefile b/msp/component/isp_proton/sensor/include/Makefile index 663a965..1c68c5e 100644 --- a/msp/component/isp_proton/sensor/include/Makefile +++ b/msp/component/isp_proton/sensor/include/Makefile @@ -21,11 +21,7 @@ DEPS := $(OBJS:%.o=%.d) # build flags CFLAGS := -shared -fPIC -ifeq ($(debug),yes) -CFLAGS += -Werror -Wall -O0 -g -else -CFLAGS += -Werror -Wall -O2 -endif +CFLAGS += -Wall -Werror -O2 -ggdb3 # dependency diff --git a/msp/component/isp_proton/sensor/include/ax_sensor_struct.h b/msp/component/isp_proton/sensor/include/ax_sensor_struct.h index 58a6d57..ea81cb9 100644 --- a/msp/component/isp_proton/sensor/include/ax_sensor_struct.h +++ b/msp/component/isp_proton/sensor/include/ax_sensor_struct.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/makebin/_makebin b/msp/component/isp_proton/sensor/makebin/_makebin index 1a80a47..fa30bd4 100644 Binary files a/msp/component/isp_proton/sensor/makebin/_makebin and b/msp/component/isp_proton/sensor/makebin/_makebin differ diff --git a/msp/component/isp_proton/sensor/makebin/ax_isp_params.c b/msp/component/isp_proton/sensor/makebin/ax_isp_params.c index 8dbaa4c..11102e5 100644 --- a/msp/component/isp_proton/sensor/makebin/ax_isp_params.c +++ b/msp/component/isp_proton/sensor/makebin/ax_isp_params.c @@ -1,18719 +1,22214 @@ #include "ax_sensor_struct.h" #include "_makebin.h" -#ifndef __SC910GS_SDR_H__ -#define __SC910GS_SDR_H__ - -/******************************************************************** -* Store the default parameters of the sdr mode -* warn: user need to add 'static' when defining global variables. - Limit the scope of the variable to this sensor -*********************************************************************/ - -#include "ax_isp_iq_api.h" -#include "ax_isp_api.h" - - - -static AX_ISP_VERSION_T ax_isp_version_param_sdr = { - - /* nIspMajor */ - 3, - /* nIspMinor1 */ - 8, - /* nIspMinor2 */ - 3, - /* szBuildTime */ - "", - - /* szIspVersion */ - "AX650_ISP_V3.8.3", -}; - -static AX_ISP_IQ_DEPURPLE_PARAM_T depurple_param_sdr = { - /* nEnable */ - 1, - /* nWorkMode */ - 0, - /* nRefMode */ - 0, - /* nDepurpleMode */ - 1, - /* tDetParam */ - { - /* nDetMode */ - 0, - /* nDetEdgeSlope */ - 0, - /* nDetEdgeOffset */ - 0, - /* nDetColorCenter[4][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nDetColorRadius[4][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nDetStrength */ - 0, - /* nDetGetcompcolorGrad[4][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - }, - /* tCmpParam */ - { - /* nCompTargetLuma[8] */ - {0, 16, 32, 48, 64, 80, 96, 128, /*0 - 7*/}, - /* nCompTargetHue[16] */ - {128, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 128, /*0 - 15*/}, - /* nCompTargetSat[6] */ - {0, 64, 96, 128, 128, 128, /*0 - 5*/}, - /* nCompUvLevel */ - 0, - }, - /* tManualParam */ - { - /* nManualCompStrength */ - 128, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 16, - /* nRefVal[16] */ - {0, /*0 - 0*/}, - /* nAutoCompStrength[16] */ - {0, /*0 - 0*/}, - }, -}; - -static AX_ISP_IQ_BLC_PARAM_T blc_param_sdr = { - /* nBlcEnable */ - 1, - /* nAutoMode */ - 0, - /* tManualParam */ - { - /* nSblRValue, nSblGrValue, nSblGbValue, nSblBValue */ - {135424, 135424, 135424, 135424,}, - /* */ - {0, 0, 0, 0,}, - /* */ - {0, 0, 0, 0,}, - /* */ - {0, 0, 0, 0,}, - }, - /* tAutoParam */ - { - /* tHcgAutoTable */ - { - /* nGainGrpNum */ - 16, - /* nExposeTimeGrpNum */ - 6, - /* nGain[16] */ - {1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360, 15872, /*0 - 15*/}, - /* nExposeTime[10] */ - {1000, 5000, 10000, 20000, 30000, 32939, /*0 - 5*/}, - /* nAutoSblRValue[16][10] */ - { - {65576, 65558, 65581, 65566, 65568, 65562, /*0 - 5*/}, - {65573, 65586, 65565, 65562, 65579, 65568, /*0 - 5*/}, - {65567, 65571, 65556, 65563, 65557, 65567, /*0 - 5*/}, - {65598, 65551, 65566, 65567, 65571, 65558, /*0 - 5*/}, - {65580, 65556, 65559, 65557, 65551, 65571, /*0 - 5*/}, - {65567, 65565, 65552, 65569, 65579, 65547, /*0 - 5*/}, - {65592, 65544, 65543, 65558, 65580, 65580, /*0 - 5*/}, - {65575, 65582, 65545, 65550, 65555, 65567, /*0 - 5*/}, - {65569, 65558, 65553, 65553, 65537, 65572, /*0 - 5*/}, - {65570, 65567, 65575, 65531, 65561, 65555, /*0 - 5*/}, - {65552, 65575, 65555, 65524, 65567, 65575, /*0 - 5*/}, - {65558, 65548, 65550, 65576, 65552, 65594, /*0 - 5*/}, - {65542, 65533, 65571, 65553, 65552, 65574, /*0 - 5*/}, - {65566, 65563, 65569, 65547, 65598, 65566, /*0 - 5*/}, - {65550, 65525, 65576, 65518, 64350, 65582, /*0 - 5*/}, - {65540, 65548, 65555, 65551, 64350, 64350, /*0 - 5*/}, - }, - /* nAutoSblGrValue[16][10] */ - { - {65563, 65539, 65568, 65565, 65568, 65562, /*0 - 5*/}, - {65560, 65593, 65564, 65574, 65584, 65593, /*0 - 5*/}, - {65560, 65583, 65562, 65574, 65581, 65579, /*0 - 5*/}, - {65572, 65569, 65577, 65571, 65576, 65569, /*0 - 5*/}, - {65572, 65569, 65589, 65594, 65561, 65588, /*0 - 5*/}, - {65592, 65601, 65577, 65587, 65603, 65590, /*0 - 5*/}, - {65616, 65595, 65600, 65582, 65603, 65605, /*0 - 5*/}, - {65605, 65598, 65592, 65593, 65586, 65583, /*0 - 5*/}, - {65605, 65614, 65594, 65602, 65600, 65606, /*0 - 5*/}, - {65607, 65583, 65596, 65600, 65590, 65608, /*0 - 5*/}, - {65601, 65603, 65602, 65580, 65609, 65610, /*0 - 5*/}, - {65607, 65577, 65590, 65575, 65611, 65628, /*0 - 5*/}, - {65597, 65573, 65611, 65595, 65599, 65649, /*0 - 5*/}, - {65583, 65579, 65620, 65622, 65666, 65651, /*0 - 5*/}, - {65598, 65586, 65624, 65622, 64411, 65627, /*0 - 5*/}, - {65603, 65603, 65610, 65605, 64411, 64411, /*0 - 5*/}, - }, - /* nAutoSblGbValue[16][10] */ - { - {65547, 65542, 65572, 65570, 65579, 65586, /*0 - 5*/}, - {65572, 65568, 65565, 65571, 65574, 65581, /*0 - 5*/}, - {65555, 65568, 65587, 65575, 65566, 65583, /*0 - 5*/}, - {65566, 65588, 65591, 65570, 65563, 65583, /*0 - 5*/}, - {65568, 65573, 65575, 65576, 65565, 65591, /*0 - 5*/}, - {65569, 65579, 65599, 65573, 65578, 65567, /*0 - 5*/}, - {65571, 65574, 65584, 65581, 65567, 65615, /*0 - 5*/}, - {65598, 65601, 65588, 65575, 65563, 65604, /*0 - 5*/}, - {65595, 65603, 65580, 65592, 65601, 65620, /*0 - 5*/}, - {65580, 65573, 65577, 65569, 65554, 65600, /*0 - 5*/}, - {65597, 65628, 65591, 65599, 65599, 65572, /*0 - 5*/}, - {65581, 65576, 65596, 65576, 65616, 65599, /*0 - 5*/}, - {65577, 65592, 65593, 65581, 65588, 65611, /*0 - 5*/}, - {65600, 65596, 65603, 65588, 65577, 65615, /*0 - 5*/}, - {65609, 65589, 65593, 65592, 64360, 65612, /*0 - 5*/}, - {65602, 65618, 65592, 65614, 64360, 64360, /*0 - 5*/}, - }, - /* nAutoSblBValue[16][10] */ - { - {65554, 65556, 65560, 65564, 65580, 65580, /*0 - 5*/}, - {65580, 65575, 65566, 65578, 65586, 65581, /*0 - 5*/}, - {65563, 65575, 65581, 65574, 65578, 65583, /*0 - 5*/}, - {65572, 65583, 65585, 65576, 65557, 65596, /*0 - 5*/}, - {65589, 65573, 65562, 65577, 65579, 65597, /*0 - 5*/}, - {65595, 65585, 65599, 65586, 65584, 65580, /*0 - 5*/}, - {65591, 65562, 65603, 65581, 65594, 65627, /*0 - 5*/}, - {65597, 65596, 65595, 65581, 65566, 65624, /*0 - 5*/}, - {65596, 65603, 65574, 65573, 65594, 65603, /*0 - 5*/}, - {65593, 65592, 65596, 65564, 65579, 65595, /*0 - 5*/}, - {65583, 65603, 65629, 65613, 65608, 65593, /*0 - 5*/}, - {65595, 65593, 65610, 65579, 65617, 65573, /*0 - 5*/}, - {65583, 65604, 65639, 65590, 65619, 65608, /*0 - 5*/}, - {65595, 65613, 65636, 65588, 65615, 65650, /*0 - 5*/}, - {65628, 65615, 65588, 65623, 64393, 65638, /*0 - 5*/}, - {65617, 65612, 65586, 65594, 64393, 64393, /*0 - 5*/}, - }, - }, - /* tLcgAutoTable */ - { - /* nGainGrpNum */ - 16, - /* nExposeTimeGrpNum */ - 6, - /* nGain[16] */ - {1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360, 15872, /*0 - 15*/}, - /* nExposeTime[10] */ - {1000, 5000, 10000, 20000, 30000, 32939, /*0 - 5*/}, - /* nAutoSblRValue[16][10] */ - { - {65561, 65557, 65569, 65565, 65567, 65567, /*0 - 5*/}, - {65567, 65570, 65564, 65583, 65583, 65583, /*0 - 5*/}, - {65586, 65574, 65591, 65564, 65585, 65554, /*0 - 5*/}, - {65564, 65582, 65555, 65576, 65592, 65571, /*0 - 5*/}, - {65583, 65590, 65583, 65577, 65566, 65601, /*0 - 5*/}, - {65588, 65588, 65571, 65577, 65594, 65577, /*0 - 5*/}, - {65582, 65593, 65529, 65593, 65550, 65568, /*0 - 5*/}, - {65582, 65613, 65572, 65580, 65588, 65608, /*0 - 5*/}, - {65600, 65601, 65581, 65591, 65606, 65630, /*0 - 5*/}, - {65617, 65591, 65576, 65597, 65580, 65613, /*0 - 5*/}, - {65565, 65586, 65615, 65601, 65598, 65616, /*0 - 5*/}, - {65572, 65585, 65581, 65567, 65558, 65612, /*0 - 5*/}, - {65613, 65569, 65566, 65598, 65612, 65616, /*0 - 5*/}, - {65585, 65572, 65583, 65577, 65589, 65567, /*0 - 5*/}, - {65589, 65596, 65598, 65567, 65576, 65584, /*0 - 5*/}, - {65632, 65596, 65581, 65603, 65590, 65585, /*0 - 5*/}, - }, - /* nAutoSblGrValue[16][10] */ - { - {65562, 65556, 65555, 65558, 65567, 65566, /*0 - 5*/}, - {65573, 65576, 65551, 65589, 65584, 65583, /*0 - 5*/}, - {65587, 65562, 65586, 65559, 65579, 65561, /*0 - 5*/}, - {65564, 65562, 65568, 65569, 65598, 65577, /*0 - 5*/}, - {65557, 65590, 65576, 65571, 65572, 65600, /*0 - 5*/}, - {65587, 65589, 65571, 65576, 65600, 65583, /*0 - 5*/}, - {65588, 65592, 65541, 65593, 65543, 65581, /*0 - 5*/}, - {65569, 65606, 65596, 65593, 65579, 65613, /*0 - 5*/}, - {65605, 65595, 65581, 65597, 65604, 65628, /*0 - 5*/}, - {65617, 65603, 65575, 65596, 65599, 65624, /*0 - 5*/}, - {65558, 65586, 65621, 65588, 65603, 65621, /*0 - 5*/}, - {65574, 65578, 65587, 65572, 65576, 65637, /*0 - 5*/}, - {65612, 65599, 65580, 65602, 65617, 65634, /*0 - 5*/}, - {65578, 65577, 65601, 65602, 65608, 65598, /*0 - 5*/}, - {65583, 65622, 65617, 65581, 65568, 65590, /*0 - 5*/}, - {65617, 65584, 65580, 65615, 65583, 65577, /*0 - 5*/}, - }, - /* nAutoSblGbValue[16][10] */ - { - {65554, 65549, 65553, 65549, 65569, 65564, /*0 - 5*/}, - {65562, 65565, 65567, 65574, 65584, 65586, /*0 - 5*/}, - {65556, 65567, 65574, 65564, 65591, 65554, /*0 - 5*/}, - {65574, 65568, 65572, 65613, 65572, 65592, /*0 - 5*/}, - {65585, 65581, 65617, 65580, 65584, 65570, /*0 - 5*/}, - {65543, 65588, 65589, 65563, 65567, 65588, /*0 - 5*/}, - {65586, 65599, 65579, 65555, 65601, 65569, /*0 - 5*/}, - {65589, 65573, 65594, 65586, 65594, 65628, /*0 - 5*/}, - {65553, 65582, 65573, 65585, 65586, 65568, /*0 - 5*/}, - {65577, 65582, 65594, 65594, 65624, 65590, /*0 - 5*/}, - {65580, 65568, 65590, 65620, 65596, 65592, /*0 - 5*/}, - {65583, 65591, 65591, 65600, 65594, 65592, /*0 - 5*/}, - {65555, 65593, 65620, 65593, 65596, 65585, /*0 - 5*/}, - {65597, 65596, 65588, 65642, 65586, 65601, /*0 - 5*/}, - {65588, 65605, 65560, 65611, 65595, 65609, /*0 - 5*/}, - {65559, 65593, 65613, 65588, 65610, 65637, /*0 - 5*/}, - }, - /* nAutoSblBValue[16][10] */ - { - {65560, 65563, 65554, 65556, 65577, 65565, /*0 - 5*/}, - {65569, 65565, 65574, 65588, 65578, 65581, /*0 - 5*/}, - {65557, 65581, 65574, 65551, 65585, 65548, /*0 - 5*/}, - {65587, 65574, 65579, 65608, 65565, 65579, /*0 - 5*/}, - {65592, 65587, 65585, 65573, 65577, 65562, /*0 - 5*/}, - {65556, 65607, 65595, 65557, 65572, 65588, /*0 - 5*/}, - {65593, 65605, 65580, 65555, 65588, 65568, /*0 - 5*/}, - {65596, 65561, 65602, 65593, 65588, 65627, /*0 - 5*/}, - {65559, 65583, 65562, 65566, 65598, 65588, /*0 - 5*/}, - {65591, 65577, 65588, 65594, 65604, 65590, /*0 - 5*/}, - {65586, 65582, 65591, 65619, 65602, 65592, /*0 - 5*/}, - {65571, 65592, 65579, 65606, 65619, 65592, /*0 - 5*/}, - {65569, 65594, 65588, 65604, 65596, 65598, /*0 - 5*/}, - {65598, 65609, 65593, 65635, 65593, 65590, /*0 - 5*/}, - {65592, 65599, 65565, 65616, 65602, 65602, /*0 - 5*/}, - {65577, 65586, 65619, 65580, 65591, 65631, /*0 - 5*/}, - }, - }, - }, -}; - -static AX_ISP_IQ_GAMMA_PARAM_T gamma_param_sdr = { - /* nGammaEn */ - 1, - /* nAutoMode */ - 0, - /* nRefMode */ - 0, - /* eGammaMode */ - AX_ISP_GAM_PRESET_GAMMA, - /* ePresetGammaType */ - AX_ISP_GAM_AX_GAM0, - /* eLutMode */ - AX_ISP_GAM_EXPONENTIAL, - /* tManualParam */ - { - /* tGammaLut */ - { - /* nLut[129] */ - { - 0, 26, 52, 79, 105, 132, 158, 185, 211, 238, 264, 291, 317, 344, 370, 397, 423, 450, 476, - 503, 529, 556, 582, 609, 635, 662, 688, 715, 741, 768, 794, 821, 847, 900, 953, 1006, 1059, - 1112, 1165, 1218, 1271, 1324, 1377, 1430, 1483, 1536, 1589, 1642, 1695, 1800, 1906, 2012, 2118, - 2224, 2330, 2436, 2542, 2648, 2754, 2860, 2966, 3072, 3178, 3284, 3390, 3597, 3794, 3983, 4165, - 4340, 4508, 4671, 4828, 4980, 5128, 5271, 5410, 5545, 5677, 5805, 5930, 6171, 6402, 6623, 6835, - 7039, 7235, 7425, 7608, 7786, 7958, 8124, 8287, 8444, 8598, 8748, 8894, 9175, 9444, 9702, 9949, - 10187, 10416, 10637, 10851, 11058, 11259, 11453, 11643, 11827, 12006, 12180, 12351, 12679, 12993, - 13293, 13582, 13859, 14127, 14385, 14634, 14876, 15110, 15337, 15558, 15772, 15981, 16185, 16383, /*0 - 128*/ - }, - }, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 3, - /* nRefValStart[3] */ - {0, 100, 500, /*0 - 2*/}, - /* nRefValEnd[3] */ - {50, 200, 1000, /*0 - 2*/}, - /* tGammaLut[3] */ - { - /* 0 */ - { - /* nLut[129] */ - { - 0, 26, 52, 79, 105, 132, 158, 185, 211, 238, 264, 291, 317, 344, 370, 397, 423, 450, 476, - 503, 529, 556, 582, 609, 635, 662, 688, 715, 741, 768, 794, 821, 847, 900, 953, 1006, 1059, - 1112, 1165, 1218, 1271, 1324, 1377, 1430, 1483, 1536, 1589, 1642, 1695, 1800, 1906, 2012, 2118, - 2224, 2330, 2436, 2542, 2648, 2754, 2860, 2966, 3072, 3178, 3284, 3390, 3597, 3794, 3983, 4165, - 4340, 4508, 4671, 4828, 4980, 5128, 5271, 5410, 5545, 5677, 5805, 5930, 6171, 6402, 6623, 6835, - 7039, 7235, 7425, 7608, 7786, 7958, 8124, 8287, 8444, 8598, 8748, 8894, 9175, 9444, 9702, 9949, - 10187, 10416, 10637, 10851, 11058, 11259, 11453, 11643, 11827, 12006, 12180, 12351, 12679, 12993, - 13293, 13582, 13859, 14127, 14385, 14634, 14876, 15110, 15337, 15558, 15772, 15981, 16185, 16383, /*0 - 128*/ - }, - }, - /* 1 */ - { - /* nLut[129] */ - { - 0, 21, 43, 65, 87, 109, 131, 153, 175, 197, 219, 242, 264, 286, 308, 331, 353, 375, 397, 420, - 442, 465, 487, 510, 532, 555, 577, 600, 623, 645, 668, 691, 714, 759, 805, 851, 897, 943, 989, - 1035, 1081, 1128, 1175, 1221, 1268, 1315, 1362, 1409, 1457, 1552, 1647, 1743, 1839, 1936, 2033, - 2130, 2228, 2326, 2425, 2524, 2624, 2724, 2824, 2924, 3026, 3224, 3416, 3600, 3779, 3952, 4119, - 4282, 4441, 4595, 4745, 4891, 5034, 5173, 5309, 5443, 5573, 5825, 6068, 6302, 6527, 6744, 6954, - 7158, 7355, 7547, 7733, 7913, 8089, 8260, 8427, 8590, 8748, 9054, 9347, 9627, 9895, 10153, 10401, - 10640, 10870, 11092, 11306, 11514, 11715, 11910, 12099, 12282, 12460, 12801, 13124, 13430, 13721, - 13999, 14264, 14516, 14759, 14990, 15213, 15427, 15633, 15831, 16021, 16206, 16383, /*0 - 128*/ - }, - }, - /* 2 */ - { - /* nLut[129] */ - { - 0, 13, 26, 40, 53, 67, 81, 95, 109, 123, 137, 152, 166, 181, 195, 210, 225, 240, 255, 270, 285, 301, - 316, 332, 348, 364, 379, 395, 412, 428, 444, 461, 477, 511, 544, 579, 613, 649, 684, 720, 756, 793, 830, - 868, 906, 944, 983, 1022, 1061, 1142, 1224, 1307, 1392, 1479, 1567, 1657, 1748, 1841, 1935, 2031, 2128, - 2226, 2326, 2427, 2530, 2734, 2934, 3130, 3321, 3508, 3692, 3871, 4047, 4220, 4389, 4555, 4718, 4878, 5035, - 5189, 5340, 5634, 5919, 6194, 6460, 6717, 6966, 7208, 7442, 7670, 7891, 8105, 8314, 8517, 8714, 8906, 9092, - 9451, 9792, 10116, 10425, 10718, 10998, 11266, 11521, 11764, 11998, 12221, 12434, 12639, 12834, 13022, 13202, - 13541, 13853, 14140, 14406, 14651, 14877, 15087, 15280, 15459, 15625, 15778, 15919, 16050, 16170, 16281, 16383, /*0 - 128*/ - }, - }, - }, - }, -}; - -static AX_ISP_IQ_DEMOSAIC_PARAM_T demosaic_param_sdr = { - /* nDemosaicEn */ - 1, - /* nEdgeDirectEstStrength */ - 64, - /* nFcCorEnable */ - 1, - /* nFcCorUvLevel */ - 16, - /* nFcCorLevel */ - 0, -}; - -static AX_ISP_IQ_GIC_PARAM_T gic_param_sdr = { - /* nGicEnable */ - 0, - /* nGicStrengthLut[9] */ - {128, 128, 128, 128, 128, 128, 128, 128, 128}, - -}; - -static AX_ISP_IQ_CSC_PARAM_T csc_param_sdr = { - /* nMatrix[3][3] */ - { - {76, 150, 29, /*0 - 2*/}, - {-43, -85, 128, /*0 - 2*/}, - {128, -107, -21, /*0 - 2*/}, - }, - /* eColorSpaceMode */ - AX_ISP_CSC_USER, /* 0:rgb2yuv_matrix(customized), 1:BT601, 2:BT709, 3:BT2020(1~3 is nMatrix, can not be modified) */ - /* eUvSeqSel */ - AX_ISP_NV12_SEL, /* 0:NV12, 1:NV21 */ -}; - -static AX_ISP_IQ_CC_PARAM_T cc_param_sdr = { - /* nClcEn */ - 1, - /* nClcMode */ - 0, - /* nAutoMode */ - 0, - /* nRefMode */ - 0, - /* nLumaRatio */ - {32, 32, /*0 - 1*/}, - /* tManualParam */ - { - /* nCcmCtrlLevel */ - 256, - /* nCcmSat */ - 0, - /* nCcmHue */ - 0, - /* nCcmMatrix[6] */ - {-108, -122, -132, -123, -16, -218, /*0 - 5*/}, - /* nXcmCtrlLevel[16] */ - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, - /* nXcmSat[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nXcmHue[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - /* tAutoParam */ - { - /* nLightSourceRatio */ - 0, - /* tAutoParam0 */ - { - /* nCtNum */ - 0, - /* nRefValCt[12] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 11*/}, - /* nLuxGainNum */ - 0, - /* nRefValLuxGain[12][5] */ - { - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - }, - /* nCcmCtrlLevel[12][5] */ - { - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - }, - /* nCcmSat[12][5] */ - { - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - }, - /* nCcmHue[12][5] */ - { - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - {0, 0, 0, 0, 0 /*0 - 4*/}, - }, - /* nCcmMatrix[12][5][6] */ - { - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - }, - /* nXcmCtrlLevel[12][5][16] */ - { - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - }, - /* nXcmSat[12][5][16] */ - { - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - }, - /* nXcmHue[12][5][16] */ - { - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - }, - }, - /* tAutoParam1 */ - { - /* nLightSource */ - 0, - /* nLightSourceNum */ - 0, - /* nCcmCtrlLevel[12] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 12*/}, - /* nCcmSat[12] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 12*/}, - /* nCcmHue[12] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 12*/}, - /* nCcmMatrix[12][6] */ - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - /* nXcmCtrlLevel[12][16] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - /* nXcmSat[12][16] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - /* nXcmHue[12][16] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - } - } - } -}; - -static AX_ISP_IQ_SHARPEN_PARAM_T sharpen_param_sdr = { - /* nShpEn */ - 1, - /* nShpMotionEn */ - 0, - /* nColorTargetEn[3] */ - {0, 0, 0, /*0 - 2*/}, - /* nAutoMode */ - 0, - /* nRefMode */ - 0, - /* nIoFlag[3] */ - {0, 0, 0, /*0 - 2*/}, - /* tManualParam */ - { - /* nShpMotionStren */ - 0, - /* nShpStillStren */ - 0, - /* nShpCenter[3][3] */ - { - {3200, 2048, 2048, /*0 - 2*/}, - {-352, -224, -224, /*0 - 2*/}, - {288, 240, 240, /*0 - 2*/}, - }, - /* nShpRadius[3][3] */ - { - {256, 512, 512, /*0 - 2*/}, - {128, 96, 96, /*0 - 2*/}, - {128, 160, 160, /*0 - 2*/}, - }, - /* nShpSmooth[3][3] */ - { - {6, 6, 6, /*0 - 2*/}, - {3, 3, 3, /*0 - 2*/}, - {4, 4, 4, /*0 - 2*/}, - }, - /* nShpLevelLut0[51] */ - { - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*32 - 50*/ - }, - /* nShpCoring[3] */ - {88, 16, 8, /*0 - 2*/}, - /* nShpEdSlope[3] */ - {32, 8, 64, /*0 - 2*/}, - /* nShpEdOffset[3] */ - {-64, -64, -4, /*0 - 2*/}, - /* nShpEdLlimit[3] */ - {0, 77, 0, /*0 - 2*/}, - /* nShpGain[3][2] */ - { - {255, 255, /*0 - 1*/}, - {255, 255, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit[3][2] */ - { - {-960, 960, /*0 - 1*/}, - {-960, 960, /*0 - 1*/}, - {-320, 320, /*0 - 1*/}, - }, - /* nShpOsLimit[3][2] */ - { - {0, 0, /*0 - 1*/}, - {-80, 80, /*0 - 1*/}, - {-40, 40, /*0 - 1*/}, - }, - /* nShpOsGain[3] */ - {2, 2, 2, /*0 - 2*/}, - /* nShpHpfBsigma[3] */ - {16, 16, 16, /*0 - 2*/}, - /* nShpHpfDsigma[3] */ - {32, 32, 32, /*0 - 2*/}, - /* nShpHpfScale[3] */ - {128, 128, 128, /*0 - 2*/}, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 16, - /* nRefVal[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nShpMotionStren[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nShpStillStren[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* tShpCenter[16][3][3] */ - { - /* tShpCenter 0 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 1 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 2 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 3 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 4 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 5 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 6 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 7 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 8 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 9 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 10 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 11 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 12 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 13 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 14 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpCenter 15 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - }, - /* tShpRadius[16][3][3] */ - { - /* tShpRadius 0 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 1 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 2 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 3 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 4 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 5 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 6 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 7 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 8 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 9 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 10 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 11 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 12 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 13 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 14 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpRadius 15 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - }, - /* tShpSmooth[16][3][3] */ - { - /* tShpSmooth 0 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 1 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 2 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 3 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 4 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 5 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 6 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 7 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 8 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 9 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 10 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 11 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 12 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 13 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 14 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* tShpSmooth 15 */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - }, - /* nShpLevelLut0[16][51] */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 50*/ - }, - }, - /* nShpCoring[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nShpEdSlope[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nShpEdOffset[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nShpEdLlimit[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nShpGain[16][3][2] */ - { - /* nShpGain 0 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 1 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 2 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 3 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 4 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 5 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 6 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 7 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 8 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 9 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 10 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 11 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 12 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 13 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 14 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpGain 15 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - }, - /* nShpLimit[16][3][2] */ - { - /* nShpLimit 0 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 1 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 2 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 3 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 4 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 5 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 6 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 7 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 8 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 9 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 10 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 11 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 12 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 13 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 14 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpLimit 15 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - }, - /* nShpOsLimit[16][3][2] */ - { - /* nShpOsLimit 0 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 1 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 2 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 3 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 4 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 5 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 6 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 7 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 8 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 9 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 10 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 11 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 12 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 13 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 14 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nShpOsLimit 15 */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - }, - /* nShpOsGain[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nShpHpfBsigma[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nShpHpfDsigma[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nShpHpfScale[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - }, -}; - -static AX_ISP_IQ_MDE_PARAM_T mde_param_sdr = { - /* nColorTargetEn[8] */ - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - /* nAutoMode */ - 0, - /* nRefMode */ - 0, - /* nIoFlag[8] */ - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - /* tManualParam */ - { - /* tMdeCenter[3][8] */ - { - {1216, 1872, 352, 1408, 656, 1120, 1200, 2400, /*0 - 7*/}, - {-704, -1072, 1600, -800, 528, 256, 0, 0, /*0 - 7*/}, - {1152, -1408, -272, 128, 656, -800, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius[3][8] */ - { - {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, - {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, - {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, - }, - /* tMdeSmooth[3][8] */ - { - {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, - {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, - {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, - }, - /* nMdeStrength0[4][9] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1[4][9] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2[4][9] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength3[4][5] */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4[4][5] */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5[4][5] */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength6[4] */ - {0, 0, 0, 0, /*0 - 3*/}, - /* nMdeStrength7[4] */ - {0, 0, 0, 0, /*0 - 3*/}, - /* nMdeLumaLut[4][129] */ - { - { - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ - 256, /*128 - 128*/ - }, - { - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ - 256, /*128 - 128*/ - }, - { - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ - 256, /*128 - 128*/ - }, - { - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ - 256, /*128 - 128*/ - }, - }, - /* nMdeLevelLut[4][129] */ - { - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, /* 0 ~ 21*/ - 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, /* 22 ~ 40*/ - 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, /* 41 ~ 57*/ - 1856, 1888, 1920, 1952, 1984, 2016, 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, /* 58 ~ 74*/ - 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, /* 75 ~ 91*/ - 2944, 2976, 3008, 3040, 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, /* 92 ~ 108*/ - 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, /* 109 ~ 125*/ - 4032, 4064, 4095 /* 126 ~ 128*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, /* 0 ~ 21*/ - 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, /* 22 ~ 40*/ - 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, /* 41 ~ 57*/ - 1856, 1888, 1920, 1952, 1984, 2016, 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, /* 58 ~ 74*/ - 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, /* 75 ~ 91*/ - 2944, 2976, 3008, 3040, 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, /* 92 ~ 108*/ - 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, /* 109 ~ 125*/ - 4032, 4064, 4095 /* 126 ~ 128*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, /* 0 ~ 21*/ - 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, /* 22 ~ 40*/ - 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, /* 41 ~ 57*/ - 1856, 1888, 1920, 1952, 1984, 2016, 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, /* 58 ~ 74*/ - 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, /* 75 ~ 91*/ - 2944, 2976, 3008, 3040, 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, /* 92 ~ 108*/ - 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, /* 109 ~ 125*/ - 4032, 4064, 4095 /* 126 ~ 128*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, /* 0 ~ 21*/ - 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, /* 22 ~ 40*/ - 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, /* 41 ~ 57*/ - 1856, 1888, 1920, 1952, 1984, 2016, 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, /* 58 ~ 74*/ - 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, /* 75 ~ 91*/ - 2944, 2976, 3008, 3040, 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, /* 92 ~ 108*/ - 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, /* 109 ~ 125*/ - 4032, 4064, 4095 /* 126 ~ 128*/ - }, - }, - /* nMdeGain[4] */ - {256, 256, 256, 256, /*0 - 3*/}, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 16, - /* nRefVal[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* tMdeCenter[16][3][8] */ - { - /* tMdeCenter 0 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 1 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 2 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 3 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 4 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 5 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 6 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 7 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 8 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 9 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 10 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 11 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 12 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 13 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 14 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeCenter 15 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - }, - /* tMdeRadius[16][3][8] */ - { - /* tMdeRadius 0 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 1 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 2 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 3 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 4 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 5 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 6 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 7 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 8 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 9 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 10 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 11 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 12 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 13 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 14 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeRadius 15 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - }, - /* tMdeSmooth[16][3][8] */ - { - /* tMdeSmooth 0 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 1 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 2 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 3 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 4 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 5 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 6 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 7 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 8 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 9 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 10 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 11 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 12 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 13 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 14 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* tMdeSmooth 15 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - }, - /* nMdeStrength0[16][4][9] */ - { - /* nMdeStrength0 0 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 1 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 2 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 3 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 4 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 5 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 6 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 7 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 8 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 9 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 10 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 11 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 12 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 13 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 14 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength0 15 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - }, - /* nMdeStrength1[16][4][9] */ - { - /* nMdeStrength1 0 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 1 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 2 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 3 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 4 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 5 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 6 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 7 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 8 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 9 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 10 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 11 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 12 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 13 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 14 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength1 15 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - }, - /* nMdeStrength2[16][4][9] */ - { - /* nMdeStrength2 0 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 1 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 2 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 3 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 4 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 5 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 6 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 7 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 8 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 9 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 10 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 11 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 12 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 13 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 14 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - /* nMdeStrength2 15 */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, - }, - }, - /* nMdeStrength3[16][4][5] */ - { - /* nMdeStrength3 0 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 1 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 2 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 3 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 4 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 5 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 6 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 7 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 8 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 9 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 10 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 11 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 12 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 13 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 14 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength3 15 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - }, - /* nMdeStrength4[16][4][5] */ - { - /* nMdeStrength4 0 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 1 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 2 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 3 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 4 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 5 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 6 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 7 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 8 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 9 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 10 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 11 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 12 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 13 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 14 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength4 15 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - }, - /* nMdeStrength5[16][4][5] */ - { - /* nMdeStrength5 0 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 1 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 2 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 3 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 4 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 5 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 6 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 7 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 8 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 9 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 10 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 11 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 12 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 13 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 14 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nMdeStrength5 15 */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - }, - /* nMdeStrength6[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nMdeStrength7[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nMdeLumaLut[16][4][129] */ - { - /* nMdeLumaLut 0 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 1 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 2 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 3 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 4 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 5 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 6 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 7 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 8 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 9 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 10 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 11 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 12 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 13 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 14 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLumaLut 15 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - }, - /* nMdeLevelLut[16][4][129] */ - { - /* nMdeLevelLut 0 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 1 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 2 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 3 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 4 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 5 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 6 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 7 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 8 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 9 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 10 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 11 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 12 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 13 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 14 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - /* nMdeLevelLut 15 */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, /*128 - 128*/ - }, - }, - }, - /* nMdeGain[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - }, -}; - -static AX_ISP_IQ_YNR_PARAM_T ynr_param_sdr = { - /* nYnrEn */ - 1, - /* nDbpcEn */ - 0, - /* nColorTargetEn */ - 0, - /* nAutoMode */ - 0, - /* nRefMode */ - 0, - /* nIoFlag */ - 0, - /* tManualParam */ - { - /* nYnrCenter[3] */ - {0, 0, 0, /*0 - 2*/}, - /* nYnrRadius[3] */ - {0, 0, 0, /*0 - 2*/}, - /* nYnrSmooth[3] */ - {0, 0, 0, /*0 - 2*/}, - /* nYnrLevel[2] */ - {255, 0, /*0 - 1*/}, - /* nYnrInvNrLut[4] */ - {128, 128, 128, 128, /*0 - 3*/}, - /* nDbpcEdSlope */ - 0, - /* nDbpcEdOffsetLut[4] */ - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 16, - /* nRefVal[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nYnrCenter[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nYnrRadius[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nYnrSmooth[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nYnrLevel[16][2] */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nYnrInvNrLut[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nDbpcEdSlope[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nDbpcEdOffsetLut[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - }, -}; - -static AX_ISP_IQ_AYNR_PARAM_T aynr_param_sdr = { - /* nAutoMode */ - 0, - /* nRefMode */ - 0, - /* nFilterMode[4] */ - {1, 1, 1, 1, /*0 - 3*/}, - /* tManualParam */ - { - /* nAYnrEdDeteThre[4] */ - {0, 0, 0, 0, /*0 - 3*/}, - /* nAYnrEdDeteSlope[4] */ - {1280, 1280, 1280, 1280, /*0 - 3*/}, - /* nAYnrIddDetStren[4] */ - {224, 224, 224, 224, /*0 - 3*/}, - /* tAYnrFilterCoef[4] */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 1, 1, 1, 0, 1, 11, 30, 11, 1, 1, 30, 80, 30, 1, 1, 11, 30, 11, 1, 0, 1, 1, 1, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 56, 136, 56, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 4, 0, 0, 0, 0, 56, 0, 0, 0, 0, 136, 0, 0, 0, 0, 56, 0, 0, 0, 0, 4, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 192, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 1, 1, 1, 0, 1, 11, 30, 11, 1, 1, 30, 80, 30, 1, 1, 11, 30, 11, 1, 0, 1, 1, 1, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 56, 136, 56, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 4, 0, 0, 0, 0, 56, 0, 0, 0, 0, 136, 0, 0, 0, 0, 56, 0, 0, 0, 0, 4, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 192, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 1, 1, 1, 0, 1, 11, 30, 11, 1, 1, 30, 80, 30, 1, 1, 11, 30, 11, 1, 0, 1, 1, 1, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 56, 136, 56, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 4, 0, 0, 0, 0, 56, 0, 0, 0, 0, 136, 0, 0, 0, 0, 56, 0, 0, 0, 0, 4, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 192, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 1, 1, 1, 0, 1, 11, 30, 11, 1, 1, 30, 80, 30, 1, 1, 11, 30, 11, 1, 0, 1, 1, 1, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 56, 136, 56, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 4, 0, 0, 0, 0, 56, 0, 0, 0, 0, 136, 0, 0, 0, 0, 56, 0, 0, 0, 0, 4, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 192, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* tAYnrFilterStrength[4] */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 128, - /* nAYnrFilter1Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {128, 64, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 128, - /* nAYnrFilter1Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {128, 64, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 128, - /* nAYnrFilter1Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {128, 64, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 128, - /* nAYnrFilter1Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {128, 64, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {128, 64, /*0 - 1*/}, - }, - }, - /* nAYnrStrength[4] */ - {256, 0, 0, 0, /*0 - 3*/}, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 16, - /* nRefVal[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nAYnrEdDeteThre[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nAYnrEdDeteSlope[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nAYnrIddDetStren[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* tAYnrFilterCoef */ - { - /* 0 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 1 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 2 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 3 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 4 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 5 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 6 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 7 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 8 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 9 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 10 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 11 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 12 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 13 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 14 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - /* 15 */ - { - /* 0 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter1Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter2Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter3Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - /* nAYnrFilter4Coef[25] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, - }, - }, - }, - /* tAYnrFilterStrength */ - { - /* 0 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 1 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 2 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 3 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 4 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 5 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 6 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 7 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 8 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 9 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 10 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 11 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 12 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 13 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 14 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - /* 15 */ - { - /* 0 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 1 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 2 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - /* 3 */ - { - /* nAYnrFilter0Strength */ - 0, - /* nAYnrFilter1Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter2Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter3Strength[2] */ - {0, 0, /*0 - 1*/}, - /* nAYnrFilter4Strength[2] */ - {0, 0, /*0 - 1*/}, - }, - }, - }, - /* nAYnrStrength[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - }, -}; - -static AX_ISP_IQ_CNR_PARAM_T cnr_param_sdr = { - /* nCnrEn */ - 1, - /* nAutoMode */ - 0, - /* nRefMode */ - 0, - /* tManualParam */ - { - /* nCnrLevel */ - 16, - /* nCnrInvNrLut[4] */ - {128, 128, 128, 128, /*0 - 3*/}, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 16, - /* nRefVal[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nCnrLevel[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nCnrInvNrLut[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - }, -}; - -static AX_ISP_IQ_ACNR_PARAM_T acnr_param_sdr = { - /* nAutoMode */ - 0, - /* nRefMode */ - 0, - /* tManualParam */ - { - /* nACnrCoringThre[4] */ - {80, 80, 80, 80, /*0 - 3*/}, - /* nACnrCoringSlope[4] */ - {3, 3, 3, 3, /*0 - 3*/}, - /* nACnrEdgeThre[4] */ - {1024, 1024, 1024, 1024, /*0 - 3*/}, - /* nACnrEdgeSlope[4] */ - {0, 0, 0, 0, /*0 - 3*/}, - /* nACnrNvLut[36] */ - { - 48, 64, 80, 96, 112, 160, 192, 224, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - /* nACnrStrength[4] */ - {256, 0, 0, 0, /*0 - 3*/}, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 16, - /* nRefVal[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nACnrCoringThre[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nACnrCoringSlope[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nACnrEdgeThre[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nACnrEdgeSlope[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nACnrNvLut[16][36] */ - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ - 0, 0, 0, 0, /*32 - 35*/ - }, - }, - /* nACnrStrength[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - }, -}; - -static AX_ISP_IQ_SCM_PARAM_T scm_param_sdr = { - /* nScmEn */ - 1, - /* nAutoMode */ - 0, - /* nRefMode */ - 0, - /* nScmIoFlag */ - 0, - /* tManualParam */ - { - /* nScmColor[2] */ - {0, 0, /*0 - 1*/}, - /* nScmCenterY */ - 0, - /* nScmCenterUv[2] */ - {0, 0, /*0 - 1*/}, - /* nScmRadius[3] */ - {0, 0, 0, /*0 - 2*/}, - /* nScmSmooth[3] */ - {0, 0, 0, /*0 - 2*/}, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 16, - /* nRefVal[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nScmColor[16][2] */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nScmCenterY[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nScmCenterUv[16][2] */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nScmRadius[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nScmSmooth[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - }, -}; - -static AX_ISP_IQ_YCPROC_PARAM_T ycproc_param_sdr = { - /* nYCprocEn */ - 1, - /* nBrightness */ - 256, - /* nContrast */ - 256, - /* nSaturation */ - 4096, - /* nHue */ - 0, -}; - -static AX_ISP_IQ_CCMP_PARAM_T ccmp_param_sdr = { - /* nChromaCompEn */ - 1, - /* nAutoMode */ - 0, - /* nRefMode */ - 0, - /* tManualParam */ - { - /* nChromaCompY[29] */ - {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 28*/}, - /* nChromaCompSat[23] */ - {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 22*/}, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 16, - /* nRefVal[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nChromaCompY[16][29] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 28*/}, - }, - /* nChromaCompSat[16][23] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 22*/}, - }, - }, -}; - -static AX_ISP_IQ_YCRT_PARAM_T ycrt_param_sdr = { - /* nYcrtEn */ - 1, - /* nSignalRangeMode */ - 1, - /* nYrtInputRange[2] */ - {256, 4095, /*0 - 1*/}, - /* nYrtOutputRange[2] */ - {256, 3840, /*0 - 1*/}, - /* nCrtInputRange[2] */ - {256, 3840, /*0 - 1*/}, - /* nCrtOutputRange[2] */ - {256, 3840, /*0 - 1*/}, - /* nClipLevelY[2] */ - {0, 4095, /*0 - 1*/}, - /* nClipLevelUV[2] */ - {-2048, 2047, /*0 - 1*/}, -}; - -static AX_ISP_IQ_AINR_PARAM_T ainr_param_sdr = { - /* nEnable */ - 0, - /* nAutoMode */ - 0, - /* bUpdateTable */ - 1, - /* nRefMode */ - 1, - /* nHdrMode */ - 1, - /* tManualParam */ - { - /* szModelPath */ - "/opt/etc/SC910_SDR_3840x2336_12b_LCG_ISP1_A4-8X_0000_00000412258_230721_AX650.axmodel", - /* szModelName */ - "SC910_SDR_3840x2336_12b_LCG_ISP1_A4-8X_0000_00000412258_230721_AX650.axmodel", - /* szTemporalBaseNrName */ - "", - /* szSpatialBaseNrName */ - "", - /* nBiasIn */ - {1200, 1200, 1200, 1200}, - /* nBiasOut */ - {0, 0, 0, 0}, - /* tNonSensParam */ - { - /* nTNRStrLut */ - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - /* nShpStrLut */ - {{0, 255}, {15, 240}, {20, 235}, {25, 230}, {127, 128}, {229, 25}, {242, 13}, {255, 0}}, - /* nTemporalFilterStrLut */ - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - /* nTemporalFilterStrLut2 */ - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - }, - /* tSensParam */ - { - /* nLumaStrLut */ - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - /* nMotionNRStrLut */ - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - }, - /* tFreqAffineParam */ - { - /* nLowFreqNRAffine */ - {0, 0, 0, 0}, - /* nMidFreqNRAffine */ - {0, 0, 0, 0}, - /* nHighFreqNRAffine */ - {0, 0, 0, 0}, - }, - /* tFreqLutParam */ - { - /* nLowFreqNRStrLut */ - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - /* nMidFreqNRStrLut */ - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - /* nHighFreqNRStrLut */ - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - }, - }, - /* tAutoParam */ - { - /* nAutoModelNum */ - 1, - /* tAutoModelTable */ - { - /* tAutoModelTable[0] */ - { - /* tMeta */ - { - /* szModelPath */ - "/opt/etc/SC910_SDR_3840x2336_12b_LCG_ISP1_A4-8X_0000_00000412258_230721_AX650.axmodel", - /* szModelName */ - "SC910_SDR_3840x2336_12b_LCG_ISP1_A4-8X_0000_00000412258_230721_AX650.axmodel", - /* szTemporalBaseNrName */ - "", - /* szSpatialBaseNrName */ - "", - /* nBiasIn */ - {1200, 1200, 1200, 1200}, - /* nBiasOut */ - {0, 0, 0, 0}, - /* nHcgMode */ - 0, - /* nIsoThresholdMin */ - 400, - /* nIsoThresholdMax */ - 800, - }, - /* tParam */ - { - /* tNonSensParam */ - { - /* nParamGrpNum */ - 4, - /* nRefValStart */ - {100, 100, 100, 100}, - /* nRefValEnd */ - {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, - /* nTNRStrLut total 4 */ - { - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - }, - /* nShpStrLut total 4 */ - { - {{0, 255}, {15, 240}, {20, 235}, {25, 230}, {127, 128}, {229, 25}, {242, 13}, {255, 0}}, - {{0, 255}, {15, 240}, {20, 235}, {25, 230}, {127, 128}, {229, 25}, {242, 13}, {255, 0}}, - {{0, 255}, {15, 240}, {20, 235}, {25, 230}, {127, 128}, {229, 25}, {242, 13}, {255, 0}}, - {{0, 255}, {15, 240}, {20, 235}, {25, 230}, {127, 128}, {229, 25}, {242, 13}, {255, 0}}, - }, - /* nTemporalFilterStrLut total 4 */ - { - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - }, - /* nTemporalFilterStrLut2 total 4 */ - { - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - }, - }, - /* tSensParam */ - { - /* nParamGrpNum */ - 8, - /* nRefValStart */ - {100, 100, 100, 100, 100, 100, 100, 100}, - /* nRefValEnd */ - {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, - /* nLumaStrLut total 8 */ - { - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - }, - /* nMotionNRStrLut total 8 */ - { - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - }, - }, - /* tFreqAffineParam */ - { - /* nParamGrpNum */ - 8, - /* nRefVal */ - {0x400, 0x500, 0x600, 0x700, 0x800, 0x900, 0x1000, 0xFFFFFFFF}, - /* nLowFreqNRAffine total 8 */ - { - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - }, - /* nMidFreqNRAffine total 8 */ - { - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - }, - /* nHighFreqNRAffine total 8 */ - { - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - }, - }, - /* tFreqLutParam */ - { - /* nParamGrpNum */ - 8, - /* nRefValStart */ - {100, 100, 100, 100, 100, 100, 100, 100}, - /* nRefValEnd */ - {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, - /* nLowFreqNRStrLut total 8 */ - { - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - }, - /* nMidFreqNRStrLut total 8 */ - { - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - }, - /* nHighFreqNRStrLut total 8 */ - { - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - }, - }, - }, - }, - }, - }, - /* tDummyParam */ - { - /* nModelNum */ - 0, - /* tModelTable */ - { - /* tModelTable[0] */ - { - /* tMeta */ - { - /* szModelPath */ - "", - /* szModelName */ - "", - /* szTemporalBaseNrName */ - "", - /* szSpatialBaseNrName */ - "", - /* nBiasIn */ - {1200, 1200, 1200, 1200}, - /* nBiasOut */ - {0, 0, 0, 0}, - /* nHcgMode */ - 0, - /* nIsoThresholdMin */ - 1, - /* nIsoThresholdMax */ - 1000000, - }, - }, - }, - }, -}; - -static AX_ISP_IQ_AICE_PARAM_T aice_param_sdr = { - /* nEnable */ - 0, - /* nAutoMode */ - 0, - /* bUpdateTable */ - 1, - /* nRefMode */ - 1, - /* tManualParam */ - { - /* tMeta */ - { - /* szModelPath */ - "/opt/etc/SC910_SDR_3840x2336_12b_LCG_ISP1_A4-8X_0000_00000412258_230721_AX650.axmodel", - /* szModelName */ - "SC910_SDR_3840x2336_12b_LCG_ISP1_A4-8X_0000_00000412258_230721_AX650.axmodel", - /* szTemporalBaseNrName */ - "", - /* szSpatialBaseNrName */ - "", - /* nBiasIn */ - {0, 0, 0, 0}, - /* nBiasOut */ - {0, 0, 0, 0}, - }, - /* tParams */ - { - /* tNr */ - { - /* tNonSensParam */ - { - /* nTNRStrLut */ - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - /* nShpStrLut */ - {{0, 255}, {15, 240}, {20, 235}, {25, 230}, {127, 128}, {229, 25}, {242, 13}, {255, 0}}, - /* nTemporalFilterStrLut */ - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - /* nTemporalFilterStrLut2 */ - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - }, - /* tSensParam */ - { - /* nLumaStrLut */ - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - /* nMotionNRStrLut */ - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - }, - /* tFreqAffineParam */ - { - /* nLowFreqNRAffine */ - {0, 0, 0, 0}, - /* nMidFreqNRAffine */ - {0, 0, 0, 0}, - /* nHighFreqNRAffine */ - {0, 0, 0, 0}, - }, - /* tFreqLutParam */ - { - /* nLowFreqNRStrLut */ - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - /* nMidFreqNRStrLut */ - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - /* nHighFreqNRStrLut */ - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - }, - }, - /* tCe */ - { - /* nLumaStrLut */ - {{0, 255}, {25, 255}, {50, 255}, {75, 255}, {100, 255}, {125, 255}, {150, 255}, {175, 255}, {180, 255}, {190, 255}, {200, 255}, {210, 255}, {220, 255}, {230, 255}, {240, 255}, {250, 255}}, - /* nLowFreqAffine */ - 0, - /* nMidFreqAffine */ - 0, - /* nHighFreqAffine */ - 0, - }, - }, - }, - /* tAutoParam */ - { - /* nAutoModelNum */ - 0, - /* tAutoModelTable */ - { - /* tAutoModelTable[0] */ - { - /* tMeta */ - { - /* szModelPath */ - "", - /* szModelName */ - "", - /* szTemporalBaseNrName */ - "", - /* szSpatialBaseNrName */ - "", - /* nHcgMode */ - 0, - /* nIsoThresholdMin */ - 1, - /* nIsoThresholdMax */ - 1000000, - /* nBiasIn */ - {0, 0, 0, 0}, - /* nBiasOut */ - {0, 0, 0, 0}, - }, - /* tParam */ - { - /* tNr */ - { - /* tNonSensParam */ - { - /* nParamGrpNum */ - 4, - /* nRefValStart */ - {100, 100, 100, 100}, - /* nRefValEnd */ - {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, - /* nTNRStrLut total 4 */ - { - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - {{0, 0}, {15, 15}, {20, 20}, {25, 25}, {127, 127}, {229, 229}, {242, 242}, {255, 255}}, - }, - /* nShpStrLut total 4 */ - { - {{0, 255}, {15, 240}, {20, 235}, {25, 230}, {127, 128}, {229, 25}, {242, 13}, {255, 0}}, - {{0, 255}, {15, 240}, {20, 235}, {25, 230}, {127, 128}, {229, 25}, {242, 13}, {255, 0}}, - {{0, 255}, {15, 240}, {20, 235}, {25, 230}, {127, 128}, {229, 25}, {242, 13}, {255, 0}}, - {{0, 255}, {15, 240}, {20, 235}, {25, 230}, {127, 128}, {229, 25}, {242, 13}, {255, 0}}, - }, - /* nTemporalFilterStrLut total 4 */ - { - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - }, - /* nTemporalFilterStrLut2 total 4 */ - { - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - }, - }, - /* tSensParam */ - { - /* nParamGrpNum */ - 8, - /* nRefValStart */ - {100, 100, 100, 100, 100, 100, 100, 100}, - /* nRefValEnd */ - {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, - /* nLumaStrLut total 8 */ - { - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - }, - /* nMotionNRStrLut total 8 */ - { - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - }, - }, - /* tFreqAffineParam */ - { - /* nParamGrpNum */ - 8, - /* nRefVal */ - {0x400, 0x500, 0x600, 0x700, 0x800, 0x900, 0x1000, 0xFFFFFFFF}, - /* nLowFreqNRAffine total 8 */ - { - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - }, - /* nMidFreqNRAffine total 8 */ - { - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - }, - /* nHighFreqNRAffine total 8 */ - { - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - }, - }, - /* tFreqLutParam */ - { - /* nParamGrpNum */ - 8, - /* nRefValStart */ - {100, 100, 100, 100, 100, 100, 100, 100}, - /* nRefValEnd */ - {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, - /* nLowFreqNRStrLut total 8 */ - { - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 255}, {15, 255}, {20, 255}, {25, 255}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - }, - /* nMidFreqNRStrLut total 8 */ - { - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - {{0, 63}, {15, 63}, {20, 63}, {25, 102}, {127, 255}, {229, 255}, {242, 255}, {255, 255}}, - }, - /* nHighFreqNRStrLut total 8 */ - { - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - {{0, 0}, {15, 0}, {20, 0}, {25, 4}, {127, 96}, {229, 189}, {242, 201}, {255, 213}}, - }, - }, - }, - /* tCe */ - { - /* tLumaLut */ - { - /* nParamGrpNum */ - 8, - /* nRefValStart */ - {100, 100, 100, 100, 100, 100, 100, 100}, - /* nRefValEnd */ - {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, - /* nTNRStrLut total 8 */ - { - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - {{0, 25}, {25, 50}, {50, 75}, {75, 100}, {100, 125}, {125, 150}, {150, 175}, {175, 200}, {180, 180}, {190, 190}, {200, 200}, {210, 210}, {220, 220}, {230, 230}, {240, 240}, {250, 250}}, - }, - }, - /* tFreqAffine */ - { - /* nParamGrpNum */ - 8, - /* nRefVal */ - {0x400, 0x500, 0x600, 0x700, 0x800, 0x900, 0x1000, 0xFFFFFFFF}, - /* nLowFreqAffine total 8 */ - {0, 0, 0, 0, 0, 0, 0, 0}, - /* nMidFreqAffine total 8 */ - {0, 0, 0, 0, 0, 0, 0, 0}, - /* nHighFreqAffine total 8 */ - {0, 0, 0, 0, 0, 0, 0, 0}, - }, - }, - }, - }, - }, - }, - /* tDummyParam */ - { - /* nModelNum */ - 0, - /* tModelTable */ - { - /* tModelTable[0] */ - { - /* tMeta */ - { - /* szModelPath */ - "", - /* szModelName */ - "", - /* szTemporalBaseNrName */ - "", - /* szSpatialBaseNrName */ - "", - /* nHcgMode */ - 0, - /* nIsoThresholdMin */ - 1, - /* nIsoThresholdMax */ - 1000000, - /* nBiasIn */ - {0, 0, 0, 0}, - /* nBiasOut */ - {0, 0, 0, 0}, - }, - }, - }, - }, -}; - -static AX_ISP_IQ_AWB_PARAM_T awb_param_sdr = { - /* nEnable */ - 1, - /* tManualParam */ - { - /* nManualMode */ - 0, - /* tGain */ - { - /* nGainR */ - 434, - /* nGainGr */ - 256, - /* nGainGb */ - 256, - /* nGainB */ - 492, - }, - /* tManualLightSource */ - { - /* nLightSourceIndex */ - 0, - /* tLightSource[15] */ - { - /* 0 */ - { - /* szName[32] */ - "Shade", - /* nColorTemperature */ - 7500, - /* nGreenShift */ - 0, - }, - /* 1 */ - { - /* szName[32] */ - "Day", - /* nColorTemperature */ - 6500, - /* nGreenShift */ - 0, - }, - /* 2 */ - { - /* szName[32] */ - "Cloudy", - /* nColorTemperature */ - 5000, - /* nGreenShift */ - 0, - }, - /* 3 */ - { - /* szName[32] */ - "Flourescent", - /* nColorTemperature */ - 5000, - /* nGreenShift */ - 0, - }, - /* 4 */ - { - /* szName[32] */ - "Sunset", - /* nColorTemperature */ - 3500, - /* nGreenShift */ - 0, - }, - /* 5 */ - { - /* szName[32] */ - "Incandescent", - /* nColorTemperature */ - 2800, - /* nGreenShift */ - 0, - }, - /* 6 */ - { - /* szName[32] */ - "Candle", - /* nColorTemperature */ - 2000, - /* nGreenShift */ - 0, - }, - /* 7 */ - { - /* szName[32] */ - "Flash", - /* nColorTemperature */ - 3500, - /* nGreenShift */ - 0, - }, - /* 8 */ - { - /* szName[32] */ - "UserDefined-1", - /* nColorTemperature */ - 2800, - /* nGreenShift */ - 0, - }, - /* 9 */ - { - /* szName[32] */ - "UserDefined-2", - /* nColorTemperature */ - 2000, - /* nGreenShift */ - 0, - }, - /* 10 */ - { - /* szName[32] */ - "UserDefined-3", - /* nColorTemperature */ - 5000, - /* nGreenShift */ - 0, - }, - /* 11 */ - { - /* szName[32] */ - "UserDefined-4", - /* nColorTemperature */ - 5000, - /* nGreenShift */ - 0, - }, - /* 12 */ - { - /* szName[32] */ - "UserDefined-5", - /* nColorTemperature */ - 5000, - /* nGreenShift */ - 0, - }, - /* 13 */ - { - /* szName[32] */ - "UserDefined-6", - /* nColorTemperature */ - 5000, - /* nGreenShift */ - 0, - }, - /* 14 */ - { - /* szName[32] */ - "UserDefined-7", - /* nColorTemperature */ - 5000, - /* nGreenShift */ - 0, - }, - }, - }, - }, - /* tAutoParam */ - { - /* tCenterPnt */ - { - /* nRg */ - 1567212, - /* nBg */ - 1351200, - }, - /* nCenterPntRadius */ - 1237574, - /* nLowCut */ - 1, - /* nHighCut */ - 1, - /* nCctMax */ - 10500, - /* nCctMin */ - 1800, - /* nPartCtrlPntNum */ - 8, - /* nCtrlPntNum */ - 57, - /* nCtrlSegKbNum */ - 56, - /* nCctList[512] */ - { - 1800, 1862, 1925, 1987, 2050, 2112, 2175, 2237, 2300, 2369, 2439, 2508, 2578, 2647, 2717, 2786, 2856, 2974, 3092, 3210, 3328, 3446, 3564, 3682, 3800, 3950, 4100, 4250, 4400, 4550, 4700, 4850, /* 0 - 31*/ - 5000, 5187, 5375, 5562, 5750, 5937, 6125, 6312, 6500, 6625, 6750, 6875, 7000, 7125, 7250, 7375, 7500, 7875, 8250, 8625, 9000, 9375, 9750, 10125, 10500, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 128 - 159*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 160 - 191*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 192 - 223*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 224 - 255*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 256 - 287*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 288 - 319*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 320 - 351*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 352 - 383*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 384 - 415*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 416 - 447*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 448 - 479*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 480 - 511*/ - }, - /* tChordKB */ - { - /* nK */ - -1327, - /* nB */ - 1599, - }, - /* tChordPntList[512] */ - { - /* 0 */ - { - /* nRg */ - 1107495, - /* nBg */ - 202176, - }, - /* 1 */ - { - /* nRg */ - 1094105, - /* nBg */ - 219530, - }, - /* 2 */ - { - /* nRg */ - 1080956, - /* nBg */ - 236590, - }, - /* 3 */ - { - /* nRg */ - 1068027, - /* nBg */ - 253357, - }, - /* 4 */ - { - /* nRg */ - 1055297, - /* nBg */ - 269851, - }, - /* 5 */ - { - /* nRg */ - 1042777, - /* nBg */ - 286093, - }, - /* 6 */ - { - /* nRg */ - 1030436, - /* nBg */ - 302084, - }, - /* 7 */ - { - /* nRg */ - 1018283, - /* nBg */ - 317855, - }, - /* 8 */ - { - /* nRg */ - 1006287, - /* nBg */ - 333395, - }, - /* 9 */ - { - /* nRg */ - 993138, - /* nBg */ - 350445, - }, - /* 10 */ - { - /* nRg */ - 980177, - /* nBg */ - 367253, - }, - /* 11 */ - { - /* nRg */ - 967395, - /* nBg */ - 383831, - }, - /* 12 */ - { - /* nRg */ - 954770, - /* nBg */ - 400200, - }, - /* 13 */ - { - /* nRg */ - 942292, - /* nBg */ - 416369, - }, - /* 14 */ - { - /* nRg */ - 929961, - /* nBg */ - 432349, - }, - /* 15 */ - { - /* nRg */ - 917766, - /* nBg */ - 448161, - }, - /* 16 */ - { - /* nRg */ - 905697, - /* nBg */ - 463817, - }, - /* 17 */ - { - /* nRg */ - 895505, - /* nBg */ - 477039, - }, - /* 18 */ - { - /* nRg */ - 885386, - /* nBg */ - 490157, - }, - /* 19 */ - { - /* nRg */ - 875341, - /* nBg */ - 503180, - }, - /* 20 */ - { - /* nRg */ - 865358, - /* nBg */ - 516120, - }, - /* 21 */ - { - /* nRg */ - 855449, - /* nBg */ - 528965, - }, - /* 22 */ - { - /* nRg */ - 845593, - /* nBg */ - 541747, - }, - /* 23 */ - { - /* nRg */ - 835788, - /* nBg */ - 554456, - }, - /* 24 */ - { - /* nRg */ - 826037, - /* nBg */ - 567101, - }, - /* 25 */ - { - /* nRg */ - 808253, - /* nBg */ - 590149, - }, - /* 26 */ - { - /* nRg */ - 790595, - /* nBg */ - 613050, - }, - /* 27 */ - { - /* nRg */ - 773031, - /* nBg */ - 635815, - }, - /* 28 */ - { - /* nRg */ - 755541, - /* nBg */ - 658495, - }, - /* 29 */ - { - /* nRg */ - 738103, - /* nBg */ - 681113, - }, - /* 30 */ - { - /* nRg */ - 720676, - /* nBg */ - 703699, - }, - /* 31 */ - { - /* nRg */ - 703248, - /* nBg */ - 726296, - }, - /* 32 */ - { - /* nRg */ - 685800, - /* nBg */ - 748924, - }, - /* 33 */ - { - /* nRg */ - 680830, - /* nBg */ - 755363, - }, - /* 34 */ - { - /* nRg */ - 675860, - /* nBg */ - 761811, - }, - /* 35 */ - { - /* nRg */ - 670879, - /* nBg */ - 768271, - }, - /* 36 */ - { - /* nRg */ - 665898, - /* nBg */ - 774730, - }, - /* 37 */ - { - /* nRg */ - 660907, - /* nBg */ - 781200, - }, - /* 38 */ - { - /* nRg */ - 655905, - /* nBg */ - 787680, - }, - /* 39 */ - { - /* nRg */ - 650893, - /* nBg */ - 794170, - }, - /* 40 */ - { - /* nRg */ - 645881, - /* nBg */ - 800672, - }, - /* 41 */ - { - /* nRg */ - 637314, - /* nBg */ - 811787, - }, - /* 42 */ - { - /* nRg */ - 628716, - /* nBg */ - 822943, - }, - /* 43 */ - { - /* nRg */ - 620075, - /* nBg */ - 834132, - }, - /* 44 */ - { - /* nRg */ - 611414, - /* nBg */ - 845372, - }, - /* 45 */ - { - /* nRg */ - 602701, - /* nBg */ - 856655, - }, - /* 46 */ - { - /* nRg */ - 593955, - /* nBg */ - 868001, - }, - /* 47 */ - { - /* nRg */ - 585158, - /* nBg */ - 879409, - }, - /* 48 */ - { - /* nRg */ - 576318, - /* nBg */ - 890870, - }, - /* 49 */ - { - /* nRg */ - 549464, - /* nBg */ - 925693, - }, - /* 50 */ - { - /* nRg */ - 522044, - /* nBg */ - 961240, - }, - /* 51 */ - { - /* nRg */ - 493953, - /* nBg */ - 997657, - }, - /* 52 */ - { - /* nRg */ - 465085, - /* nBg */ - 1035081, - }, - /* 53 */ - { - /* nRg */ - 435316, - /* nBg */ - 1073679, - }, - /* 54 */ - { - /* nRg */ - 404499, - /* nBg */ - 1113630, - }, - /* 55 */ - { - /* nRg */ - 372486, - /* nBg */ - 1155143, - }, - /* 56 */ - { - /* nRg */ - 339099, - /* nBg */ - 1198428, - }, - }, - /* tArcPointList[512] */ - { - /* 0 */ - { - /* nRg */ - 1107495, - /* nBg */ - 202176, - }, - /* 1 */ - { - /* nRg */ - 1089869, - /* nBg */ - 209390, - }, - /* 2 */ - { - /* nRg */ - 1072358, - /* nBg */ - 216866, - }, - /* 3 */ - { - /* nRg */ - 1054962, - /* nBg */ - 224615, - }, - /* 4 */ - { - /* nRg */ - 1037681, - /* nBg */ - 232637, - }, - /* 5 */ - { - /* nRg */ - 1020537, - /* nBg */ - 240910, - }, - /* 6 */ - { - /* nRg */ - 1003508, - /* nBg */ - 249456, - }, - /* 7 */ - { - /* nRg */ - 986626, - /* nBg */ - 258264, - }, - /* 8 */ - { - /* nRg */ - 969880, - /* nBg */ - 267324, - }, - /* 9 */ - { - /* nRg */ - 951415, - /* nBg */ - 277705, - }, - /* 10 */ - { - /* nRg */ - 933138, - /* nBg */ - 288400, - }, - /* 11 */ - { - /* nRg */ - 915050, - /* nBg */ - 299410, - }, - /* 12 */ - { - /* nRg */ - 897141, - /* nBg */ - 310725, - }, - /* 13 */ - { - /* nRg */ - 879441, - /* nBg */ - 322343, - }, - /* 14 */ - { - /* nRg */ - 861929, - /* nBg */ - 334255, - }, - /* 15 */ - { - /* nRg */ - 844638, - /* nBg */ - 346470, - }, - /* 16 */ - { - /* nRg */ - 827547, - /* nBg */ - 358990, - }, - /* 17 */ - { - /* nRg */ - 813160, - /* nBg */ - 369875, - }, - /* 18 */ - { - /* nRg */ - 798931, - /* nBg */ - 380979, - }, - /* 19 */ - { - /* nRg */ - 784859, - /* nBg */ - 392283, - }, - /* 20 */ - { - /* nRg */ - 770966, - /* nBg */ - 403796, - }, - /* 21 */ - { - /* nRg */ - 757229, - /* nBg */ - 415509, - }, - /* 22 */ - { - /* nRg */ - 743671, - /* nBg */ - 427421, - }, - /* 23 */ - { - /* nRg */ - 730291, - /* nBg */ - 439532, - }, - /* 24 */ - { - /* nRg */ - 717079, - /* nBg */ - 451831, - }, - /* 25 */ - { - /* nRg */ - 693318, - /* nBg */ - 474900, - }, - /* 26 */ - { - /* nRg */ - 670187, - /* nBg */ - 498598, - }, - /* 27 */ - { - /* nRg */ - 647684, - /* nBg */ - 522904, - }, - /* 28 */ - { - /* nRg */ - 625853, - /* nBg */ - 547808, - }, - /* 29 */ - { - /* nRg */ - 604693, - /* nBg */ - 573288, - }, - /* 30 */ - { - /* nRg */ - 584214, - /* nBg */ - 599324, - }, - /* 31 */ - { - /* nRg */ - 564448, - /* nBg */ - 625895, - }, - /* 32 */ - { - /* nRg */ - 545406, - /* nBg */ - 652990, - }, - /* 33 */ - { - /* nRg */ - 540121, - /* nBg */ - 660781, - }, - /* 34 */ - { - /* nRg */ - 534900, - /* nBg */ - 668614, - }, - /* 35 */ - { - /* nRg */ - 529741, - /* nBg */ - 676478, - }, - /* 36 */ - { - /* nRg */ - 524645, - /* nBg */ - 684385, - }, - /* 37 */ - { - /* nRg */ - 519601, - /* nBg */ - 692333, - }, - /* 38 */ - { - /* nRg */ - 514620, - /* nBg */ - 700323, - }, - /* 39 */ - { - /* nRg */ - 509702, - /* nBg */ - 708345, - }, - /* 40 */ - { - /* nRg */ - 504847, - /* nBg */ - 716398, - }, - /* 41 */ - { - /* nRg */ - 496710, - /* nBg */ - 730228, - }, - /* 42 */ - { - /* nRg */ - 488752, - /* nBg */ - 744153, - }, - /* 43 */ - { - /* nRg */ - 480971, - /* nBg */ - 758183, - }, - /* 44 */ - { - /* nRg */ - 473369, - /* nBg */ - 772318, - }, - /* 45 */ - { - /* nRg */ - 465956, - /* nBg */ - 786547, - }, - /* 46 */ - { - /* nRg */ - 458731, - /* nBg */ - 800871, - }, - /* 47 */ - { - /* nRg */ - 451695, - /* nBg */ - 815289, - }, - /* 48 */ - { - /* nRg */ - 444837, - /* nBg */ - 829791, - }, - /* 49 */ - { - /* nRg */ - 425418, - /* nBg */ - 873831, - }, - /* 50 */ - { - /* nRg */ - 407718, - /* nBg */ - 918584, - }, - /* 51 */ - { - /* nRg */ - 391769, - /* nBg */ - 963987, - }, - /* 52 */ - { - /* nRg */ - 377603, - /* nBg */ - 1009988, - }, - /* 53 */ - { - /* nRg */ - 365240, - /* nBg */ - 1056503, - }, - /* 54 */ - { - /* nRg */ - 354691, - /* nBg */ - 1103458, - }, - /* 55 */ - { - /* nRg */ - 345978, - /* nBg */ - 1150791, - }, - /* 56 */ - { - /* nRg */ - 339099, - /* nBg */ - 1198428, - }, - }, - /* tRadiusLineList[512] */ - { - /* 0 */ - { - /* nK */ - 2559, - /* nB */ - -2505, - }, - /* 1 */ - { - /* nK */ - 2449, - /* nB */ - -2341, - }, - /* 2 */ - { - /* nK */ - 2347, - /* nB */ - -2188, - }, - /* 3 */ - { - /* nK */ - 2252, - /* nB */ - -2046, - }, - /* 4 */ - { - /* nK */ - 2163, - /* nB */ - -1913, - }, - /* 5 */ - { - /* nK */ - 2079, - /* nB */ - -1788, - }, - /* 6 */ - { - /* nK */ - 2001, - /* nB */ - -1671, - }, - /* 7 */ - { - /* nK */ - 1927, - /* nB */ - -1561, - }, - /* 8 */ - { - /* nK */ - 1858, - /* nB */ - -1457, - }, - /* 9 */ - { - /* nK */ - 1785, - /* nB */ - -1348, - }, - /* 10 */ - { - /* nK */ - 1716, - /* nB */ - -1245, - }, - /* 11 */ - { - /* nK */ - 1651, - /* nB */ - -1148, - }, - /* 12 */ - { - /* nK */ - 1590, - /* nB */ - -1056, - }, - /* 13 */ - { - /* nK */ - 1531, - /* nB */ - -969, - }, - /* 14 */ - { - /* nK */ - 1476, - /* nB */ - -887, - }, - /* 15 */ - { - /* nK */ - 1423, - /* nB */ - -808, - }, - /* 16 */ - { - /* nK */ - 1373, - /* nB */ - -733, - }, - /* 17 */ - { - /* nK */ - 1332, - /* nB */ - -672, - }, - /* 18 */ - { - /* nK */ - 1293, - /* nB */ - -613, - }, - /* 19 */ - { - /* nK */ - 1255, - /* nB */ - -556, - }, - /* 20 */ - { - /* nK */ - 1218, - /* nB */ - -501, - }, - /* 21 */ - { - /* nK */ - 1182, - /* nB */ - -448, - }, - /* 22 */ - { - /* nK */ - 1148, - /* nB */ - -397, - }, - /* 23 */ - { - /* nK */ - 1115, - /* nB */ - -347, - }, - /* 24 */ - { - /* nK */ - 1083, - /* nB */ - -299, - }, - /* 25 */ - { - /* nK */ - 1026, - /* nB */ - -215, - }, - /* 26 */ - { - /* nK */ - 973, - /* nB */ - -135, - }, - /* 27 */ - { - /* nK */ - 922, - /* nB */ - -59, - }, - /* 28 */ - { - /* nK */ - 873, - /* nB */ - 13, - }, - /* 29 */ - { - /* nK */ - 827, - /* nB */ - 82, - }, - /* 30 */ - { - /* nK */ - 783, - /* nB */ - 148, - }, - /* 31 */ - { - /* nK */ - 740, - /* nB */ - 212, - }, - /* 32 */ - { - /* nK */ - 699, - /* nB */ - 273, - }, - /* 33 */ - { - /* nK */ - 688, - /* nB */ - 290, - }, - /* 34 */ - { - /* nK */ - 677, - /* nB */ - 307, - }, - /* 35 */ - { - /* nK */ - 665, - /* nB */ - 324, - }, - /* 36 */ - { - /* nK */ - 654, - /* nB */ - 340, - }, - /* 37 */ - { - /* nK */ - 644, - /* nB */ - 356, - }, - /* 38 */ - { - /* nK */ - 633, - /* nB */ - 373, - }, - /* 39 */ - { - /* nK */ - 622, - /* nB */ - 389, - }, - /* 40 */ - { - /* nK */ - 611, - /* nB */ - 405, - }, - /* 41 */ - { - /* nK */ - 594, - /* nB */ - 431, - }, - /* 42 */ - { - /* nK */ - 576, - /* nB */ - 458, - }, - /* 43 */ - { - /* nK */ - 559, - /* nB */ - 483, - }, - /* 44 */ - { - /* nK */ - 541, - /* nB */ - 509, - }, - /* 45 */ - { - /* nK */ - 525, - /* nB */ - 534, - }, - /* 46 */ - { - /* nK */ - 508, - /* nB */ - 559, - }, - /* 47 */ - { - /* nK */ - 491, - /* nB */ - 584, - }, - /* 48 */ - { - /* nK */ - 475, - /* nB */ - 608, - }, - /* 49 */ - { - /* nK */ - 428, - /* nB */ - 679, - }, - /* 50 */ - { - /* nK */ - 382, - /* nB */ - 748, - }, - /* 51 */ - { - /* nK */ - 337, - /* nB */ - 815, - }, - /* 52 */ - { - /* nK */ - 293, - /* nB */ - 880, - }, - /* 53 */ - { - /* nK */ - 251, - /* nB */ - 944, - }, - /* 54 */ - { - /* nK */ - 209, - /* nB */ - 1006, - }, - /* 55 */ - { - /* nK */ - 168, - /* nB */ - 1068, - }, - /* 56 */ - { - /* nK */ - 127, - /* nB */ - 1129, - }, - }, - /* tInLeftBorderPntList[512] */ - { - /* 0 */ - { - /* nRg */ - 1068541, - /* nBg */ - 104826, - }, - /* 1 */ - { - /* nRg */ - 1049425, - /* nBg */ - 112649, - }, - /* 2 */ - { - /* nRg */ - 1030425, - /* nBg */ - 120754, - }, - /* 3 */ - { - /* nRg */ - 1011561, - /* nBg */ - 129164, - }, - /* 4 */ - { - /* nRg */ - 992813, - /* nBg */ - 137856, - }, - /* 5 */ - { - /* nRg */ - 974211, - /* nBg */ - 146843, - }, - /* 6 */ - { - /* nRg */ - 955756, - /* nBg */ - 156112, - }, - /* 7 */ - { - /* nRg */ - 937437, - /* nBg */ - 165665, - }, - /* 8 */ - { - /* nRg */ - 919266, - /* nBg */ - 175490, - }, - /* 9 */ - { - /* nRg */ - 899238, - /* nBg */ - 186751, - }, - /* 10 */ - { - /* nRg */ - 879420, - /* nBg */ - 198349, - }, - /* 11 */ - { - /* nRg */ - 859790, - /* nBg */ - 210292, - }, - /* 12 */ - { - /* nRg */ - 840371, - /* nBg */ - 222560, - }, - /* 13 */ - { - /* nRg */ - 821161, - /* nBg */ - 235164, - }, - /* 14 */ - { - /* nRg */ - 802171, - /* nBg */ - 248093, - }, - /* 15 */ - { - /* nRg */ - 783412, - /* nBg */ - 261347, - }, - /* 16 */ - { - /* nRg */ - 764873, - /* nBg */ - 274916, - }, - /* 17 */ - { - /* nRg */ - 749270, - /* nBg */ - 286733, - }, - /* 18 */ - { - /* nRg */ - 733835, - /* nBg */ - 298771, - }, - /* 19 */ - { - /* nRg */ - 718579, - /* nBg */ - 311039, - }, - /* 20 */ - { - /* nRg */ - 703500, - /* nBg */ - 323528, - }, - /* 21 */ - { - /* nRg */ - 688600, - /* nBg */ - 336226, - }, - /* 22 */ - { - /* nRg */ - 673899, - /* nBg */ - 349144, - }, - /* 23 */ - { - /* nRg */ - 659376, - /* nBg */ - 362283, - }, - /* 24 */ - { - /* nRg */ - 645052, - /* nBg */ - 375631, - }, - /* 25 */ - { - /* nRg */ - 634126, - /* nBg */ - 415540, - }, - /* 26 */ - { - /* nRg */ - 616416, - /* nBg */ - 447490, - }, - /* 27 */ - { - /* nRg */ - 584088, - /* nBg */ - 465620, - }, - /* 28 */ - { - /* nRg */ - 546088, - /* nBg */ - 479744, - }, - /* 29 */ - { - /* nRg */ - 523135, - /* nBg */ - 507374, - }, - /* 30 */ - { - /* nRg */ - 500936, - /* nBg */ - 535623, - }, - /* 31 */ - { - /* nRg */ - 479493, - /* nBg */ - 564448, - }, - /* 32 */ - { - /* nRg */ - 458825, - /* nBg */ - 593840, - }, - /* 33 */ - { - /* nRg */ - 453100, - /* nBg */ - 602281, - }, - /* 34 */ - { - /* nRg */ - 447438, - /* nBg */ - 610775, - }, - /* 35 */ - { - /* nRg */ - 441838, - /* nBg */ - 619310, - }, - /* 36 */ - { - /* nRg */ - 436302, - /* nBg */ - 627887, - }, - /* 37 */ - { - /* nRg */ - 430839, - /* nBg */ - 636507, - }, - /* 38 */ - { - /* nRg */ - 425439, - /* nBg */ - 645168, - }, - /* 39 */ - { - /* nRg */ - 420101, - /* nBg */ - 653871, - }, - /* 40 */ - { - /* nRg */ - 414838, - /* nBg */ - 662616, - }, - /* 41 */ - { - /* nRg */ - 406009, - /* nBg */ - 677611, - }, - /* 42 */ - { - /* nRg */ - 397368, - /* nBg */ - 692721, - }, - /* 43 */ - { - /* nRg */ - 388938, - /* nBg */ - 707946, - }, - /* 44 */ - { - /* nRg */ - 380696, - /* nBg */ - 723266, - }, - /* 45 */ - { - /* nRg */ - 372653, - /* nBg */ - 738701, - }, - /* 46 */ - { - /* nRg */ - 364810, - /* nBg */ - 754241, - }, - /* 47 */ - { - /* nRg */ - 357176, - /* nBg */ - 769875, - }, - /* 48 */ - { - /* nRg */ - 349742, - /* nBg */ - 785614, - }, - /* 49 */ - { - /* nRg */ - 328666, - /* nBg */ - 833377, - }, - /* 50 */ - { - /* nRg */ - 309477, - /* nBg */ - 881926, - }, - /* 51 */ - { - /* nRg */ - 292175, - /* nBg */ - 931188, - }, - /* 52 */ - { - /* nRg */ - 276814, - /* nBg */ - 981079, - }, - /* 53 */ - { - /* nRg */ - 263392, - /* nBg */ - 1031526, - }, - /* 54 */ - { - /* nRg */ - 251952, - /* nBg */ - 1082466, - }, - /* 55 */ - { - /* nRg */ - 242504, - /* nBg */ - 1133804, - }, - /* 56 */ - { - /* nRg */ - 235049, - /* nBg */ - 1185478, - }, - }, - /* tInRightBorderPntList[512] */ - { - /* 0 */ - { - /* nRg */ - 1146450, - /* nBg */ - 299536, - }, - /* 1 */ - { - /* nRg */ - 1130312, - /* nBg */ - 306132, - }, - /* 2 */ - { - /* nRg */ - 1114280, - /* nBg */ - 312979, - }, - /* 3 */ - { - /* nRg */ - 1098362, - /* nBg */ - 320067, - }, - /* 4 */ - { - /* nRg */ - 1082550, - /* nBg */ - 327407, - }, - /* 5 */ - { - /* nRg */ - 1066853, - /* nBg */ - 334989, - }, - /* 6 */ - { - /* nRg */ - 1051271, - /* nBg */ - 342811, - }, - /* 7 */ - { - /* nRg */ - 1035815, - /* nBg */ - 350864, - }, - /* 8 */ - { - /* nRg */ - 1020485, - /* nBg */ - 359158, - }, - /* 9 */ - { - /* nRg */ - 1003592, - /* nBg */ - 368658, - }, - /* 10 */ - { - /* nRg */ - 986867, - /* nBg */ - 378452, - }, - /* 11 */ - { - /* nRg */ - 970300, - /* nBg */ - 388518, - }, - /* 12 */ - { - /* nRg */ - 953921, - /* nBg */ - 398878, - }, - /* 13 */ - { - /* nRg */ - 937710, - /* nBg */ - 409511, - }, - /* 14 */ - { - /* nRg */ - 921688, - /* nBg */ - 420427, - }, - /* 15 */ - { - /* nRg */ - 905854, - /* nBg */ - 431604, - }, - /* 16 */ - { - /* nRg */ - 890220, - /* nBg */ - 443055, - }, - /* 17 */ - { - /* nRg */ - 877050, - /* nBg */ - 453027, - }, - /* 18 */ - { - /* nRg */ - 864027, - /* nBg */ - 463187, - }, - /* 19 */ - { - /* nRg */ - 851150, - /* nBg */ - 473537, - }, - /* 20 */ - { - /* nRg */ - 838431, - /* nBg */ - 484065, - }, - /* 21 */ - { - /* nRg */ - 825858, - /* nBg */ - 494792, - }, - /* 22 */ - { - /* nRg */ - 813443, - /* nBg */ - 505686, - }, - /* 23 */ - { - /* nRg */ - 801196, - /* nBg */ - 516770, - }, - /* 24 */ - { - /* nRg */ - 789116, - /* nBg */ - 528031, - }, - /* 25 */ - { - /* nRg */ - 767358, - /* nBg */ - 549150, - }, - /* 26 */ - { - /* nRg */ - 746188, - /* nBg */ - 570834, - }, - /* 27 */ - { - /* nRg */ - 725594, - /* nBg */ - 593085, - }, - /* 28 */ - { - /* nRg */ - 705608, - /* nBg */ - 615881, - }, - /* 29 */ - { - /* nRg */ - 686241, - /* nBg */ - 639201, - }, - /* 30 */ - { - /* nRg */ - 667503, - /* nBg */ - 663036, - }, - /* 31 */ - { - /* nRg */ - 649415, - /* nBg */ - 687352, - }, - /* 32 */ - { - /* nRg */ - 631977, - /* nBg */ - 712151, - }, - /* 33 */ - { - /* nRg */ - 627143, - /* nBg */ - 719281, - }, - /* 34 */ - { - /* nRg */ - 622372, - /* nBg */ - 726443, - }, - /* 35 */ - { - /* nRg */ - 617643, - /* nBg */ - 733647, - }, - /* 36 */ - { - /* nRg */ - 612977, - /* nBg */ - 740882, - }, - /* 37 */ - { - /* nRg */ - 608363, - /* nBg */ - 748159, - }, - /* 38 */ - { - /* nRg */ - 603812, - /* nBg */ - 755468, - }, - /* 39 */ - { - /* nRg */ - 599303, - /* nBg */ - 762808, - }, - /* 40 */ - { - /* nRg */ - 594857, - /* nBg */ - 770190, - }, - /* 41 */ - { - /* nRg */ - 587412, - /* nBg */ - 782835, - }, - /* 42 */ - { - /* nRg */ - 580125, - /* nBg */ - 795586, - }, - /* 43 */ - { - /* nRg */ - 573005, - /* nBg */ - 808431, - }, - /* 44 */ - { - /* nRg */ - 566053, - /* nBg */ - 821371, - }, - /* 45 */ - { - /* nRg */ - 559268, - /* nBg */ - 834394, - }, - /* 46 */ - { - /* nRg */ - 552652, - /* nBg */ - 847501, - }, - /* 47 */ - { - /* nRg */ - 546203, - /* nBg */ - 860692, - }, - /* 48 */ - { - /* nRg */ - 539933, - /* nBg */ - 873967, - }, - /* 49 */ - { - /* nRg */ - 522159, - /* nBg */ - 914274, - }, - /* 50 */ - { - /* nRg */ - 505959, - /* nBg */ - 955232, - }, - /* 51 */ - { - /* nRg */ - 491363, - /* nBg */ - 996797, - }, - /* 52 */ - { - /* nRg */ - 478402, - /* nBg */ - 1038898, - }, - /* 53 */ - { - /* nRg */ - 467078, - /* nBg */ - 1081470, - }, - /* 54 */ - { - /* nRg */ - 457420, - /* nBg */ - 1124451, - }, - /* 55 */ - { - /* nRg */ - 449451, - /* nBg */ - 1167768, - }, - /* 56 */ - { - /* nRg */ - 443160, - /* nBg */ - 1211367, - }, - }, - /* tOutLeftBorderPntList[512] */ - { - /* 0 */ - { - /* nRg */ - 1047118, - /* nBg */ - 51275, - }, - /* 1 */ - { - /* nRg */ - 1027185, - /* nBg */ - 59433, - }, - /* 2 */ - { - /* nRg */ - 1007367, - /* nBg */ - 67895, - }, - /* 3 */ - { - /* nRg */ - 987685, - /* nBg */ - 76661, - }, - /* 4 */ - { - /* nRg */ - 968140, - /* nBg */ - 85732, - }, - /* 5 */ - { - /* nRg */ - 948741, - /* nBg */ - 95106, - }, - /* 6 */ - { - /* nRg */ - 929479, - /* nBg */ - 104763, - }, - /* 7 */ - { - /* nRg */ - 910374, - /* nBg */ - 114725, - }, - /* 8 */ - { - /* nRg */ - 891426, - /* nBg */ - 124980, - }, - /* 9 */ - { - /* nRg */ - 870549, - /* nBg */ - 136724, - }, - /* 10 */ - { - /* nRg */ - 849871, - /* nBg */ - 148824, - }, - /* 11 */ - { - /* nRg */ - 829392, - /* nBg */ - 161271, - }, - /* 12 */ - { - /* nRg */ - 809144, - /* nBg */ - 174074, - }, - /* 13 */ - { - /* nRg */ - 789116, - /* nBg */ - 187223, - }, - /* 14 */ - { - /* nRg */ - 769309, - /* nBg */ - 200708, - }, - /* 15 */ - { - /* nRg */ - 749742, - /* nBg */ - 214528, - }, - /* 16 */ - { - /* nRg */ - 730407, - /* nBg */ - 228684, - }, - /* 17 */ - { - /* nRg */ - 714133, - /* nBg */ - 241005, - }, - /* 18 */ - { - /* nRg */ - 698027, - /* nBg */ - 253556, - }, - /* 19 */ - { - /* nRg */ - 682120, - /* nBg */ - 266349, - }, - /* 20 */ - { - /* nRg */ - 666391, - /* nBg */ - 279372, - }, - /* 21 */ - { - /* nRg */ - 650851, - /* nBg */ - 292626, - }, - /* 22 */ - { - /* nRg */ - 635521, - /* nBg */ - 306100, - }, - /* 23 */ - { - /* nRg */ - 620380, - /* nBg */ - 319795, - }, - /* 24 */ - { - /* nRg */ - 605437, - /* nBg */ - 333720, - }, - /* 25 */ - { - /* nRg */ - 578552, - /* nBg */ - 359819, - }, - /* 26 */ - { - /* nRg */ - 552379, - /* nBg */ - 386631, - }, - /* 27 */ - { - /* nRg */ - 526930, - /* nBg */ - 414135, - }, - /* 28 */ - { - /* nRg */ - 502226, - /* nBg */ - 442300, - }, - /* 29 */ - { - /* nRg */ - 478287, - /* nBg */ - 471125, - }, - /* 30 */ - { - /* nRg */ - 455124, - /* nBg */ - 500580, - }, - /* 31 */ - { - /* nRg */ - 432758, - /* nBg */ - 530642, - }, - /* 32 */ - { - /* nRg */ - 411210, - /* nBg */ - 561303, - }, - /* 33 */ - { - /* nRg */ - 405233, - /* nBg */ - 570111, - }, - /* 34 */ - { - /* nRg */ - 399329, - /* nBg */ - 578971, - }, - /* 35 */ - { - /* nRg */ - 393489, - /* nBg */ - 587874, - }, - /* 36 */ - { - /* nRg */ - 387721, - /* nBg */ - 596818, - }, - /* 37 */ - { - /* nRg */ - 382017, - /* nBg */ - 605804, - }, - /* 38 */ - { - /* nRg */ - 376386, - /* nBg */ - 614843, - }, - /* 39 */ - { - /* nRg */ - 370818, - /* nBg */ - 623913, - }, - /* 40 */ - { - /* nRg */ - 365324, - /* nBg */ - 633036, - }, - /* 41 */ - { - /* nRg */ - 356117, - /* nBg */ - 648670, - }, - /* 42 */ - { - /* nRg */ - 347110, - /* nBg */ - 664430, - }, - /* 43 */ - { - /* nRg */ - 338313, - /* nBg */ - 680306, - }, - /* 44 */ - { - /* nRg */ - 329714, - /* nBg */ - 696296, - }, - /* 45 */ - { - /* nRg */ - 321336, - /* nBg */ - 712392, - }, - /* 46 */ - { - /* nRg */ - 313157, - /* nBg */ - 728593, - }, - /* 47 */ - { - /* nRg */ - 305188, - /* nBg */ - 744908, - }, - /* 48 */ - { - /* nRg */ - 297439, - /* nBg */ - 761319, - }, - /* 49 */ - { - /* nRg */ - 275461, - /* nBg */ - 811136, - }, - /* 50 */ - { - /* nRg */ - 255444, - /* nBg */ - 861762, - }, - /* 51 */ - { - /* nRg */ - 237398, - /* nBg */ - 913142, - }, - /* 52 */ - { - /* nRg */ - 221375, - /* nBg */ - 965172, - }, - /* 53 */ - { - /* nRg */ - 207387, - /* nBg */ - 1017800, - }, - /* 54 */ - { - /* nRg */ - 195444, - /* nBg */ - 1070921, - }, - /* 55 */ - { - /* nRg */ - 185587, - /* nBg */ - 1124472, - }, - /* 56 */ - { - /* nRg */ - 177818, - /* nBg */ - 1178358, - }, - }, - /* tOutRightBorderPntList[512] */ - { - /* 0 */ - { - /* nRg */ - 1165922, - /* nBg */ - 348211, - }, - /* 1 */ - { - /* nRg */ - 1150540, - /* nBg */ - 354503, - }, - /* 2 */ - { - /* nRg */ - 1135251, - /* nBg */ - 361035, - }, - /* 3 */ - { - /* nRg */ - 1120057, - /* nBg */ - 367799, - }, - /* 4 */ - { - /* nRg */ - 1104979, - /* nBg */ - 374793, - }, - /* 5 */ - { - /* nRg */ - 1090016, - /* nBg */ - 382028, - }, - /* 6 */ - { - /* nRg */ - 1075157, - /* nBg */ - 389483, - }, - /* 7 */ - { - /* nRg */ - 1060414, - /* nBg */ - 397169, - }, - /* 8 */ - { - /* nRg */ - 1045797, - /* nBg */ - 405075, - }, - /* 9 */ - { - /* nRg */ - 1029681, - /* nBg */ - 414135, - }, - /* 10 */ - { - /* nRg */ - 1013721, - /* nBg */ - 423478, - }, - /* 11 */ - { - /* nRg */ - 997930, - /* nBg */ - 433083, - }, - /* 12 */ - { - /* nRg */ - 982306, - /* nBg */ - 442960, - }, - /* 13 */ - { - /* nRg */ - 966850, - /* nBg */ - 453100, - }, - /* 14 */ - { - /* nRg */ - 951572, - /* nBg */ - 463502, - }, - /* 15 */ - { - /* nRg */ - 936473, - /* nBg */ - 474166, - }, - /* 16 */ - { - /* nRg */ - 921552, - /* nBg */ - 485092, - }, - /* 17 */ - { - /* nRg */ - 908990, - /* nBg */ - 494592, - }, - /* 18 */ - { - /* nRg */ - 896574, - /* nBg */ - 504292, - }, - /* 19 */ - { - /* nRg */ - 884296, - /* nBg */ - 514159, - }, - /* 20 */ - { - /* nRg */ - 872153, - /* nBg */ - 524204, - }, - /* 21 */ - { - /* nRg */ - 860168, - /* nBg */ - 534428, - }, - /* 22 */ - { - /* nRg */ - 848340, - /* nBg */ - 544830, - }, - /* 23 */ - { - /* nRg */ - 836659, - /* nBg */ - 555389, - }, - /* 24 */ - { - /* nRg */ - 825124, - /* nBg */ - 566137, - }, - /* 25 */ - { - /* nRg */ - 804384, - /* nBg */ - 586269, - }, - /* 26 */ - { - /* nRg */ - 784188, - /* nBg */ - 606958, - }, - /* 27 */ - { - /* nRg */ - 764548, - /* nBg */ - 628181, - }, - /* 28 */ - { - /* nRg */ - 745496, - /* nBg */ - 649918, - }, - /* 29 */ - { - /* nRg */ - 727020, - /* nBg */ - 672158, - }, - /* 30 */ - { - /* nRg */ - 709152, - /* nBg */ - 694881, - }, - /* 31 */ - { - /* nRg */ - 691892, - /* nBg */ - 718075, - }, - /* 32 */ - { - /* nRg */ - 675262, - /* nBg */ - 741731, - }, - /* 33 */ - { - /* nRg */ - 670659, - /* nBg */ - 748526, - }, - /* 34 */ - { - /* nRg */ - 666097, - /* nBg */ - 755363, - }, - /* 35 */ - { - /* nRg */ - 661599, - /* nBg */ - 762231, - }, - /* 36 */ - { - /* nRg */ - 657143, - /* nBg */ - 769130, - }, - /* 37 */ - { - /* nRg */ - 652749, - /* nBg */ - 776072, - }, - /* 38 */ - { - /* nRg */ - 648397, - /* nBg */ - 783045, - }, - /* 39 */ - { - /* nRg */ - 644109, - /* nBg */ - 790039, - }, - /* 40 */ - { - /* nRg */ - 639862, - /* nBg */ - 797075, - }, - /* 41 */ - { - /* nRg */ - 632763, - /* nBg */ - 809144, - }, - /* 42 */ - { - /* nRg */ - 625811, - /* nBg */ - 821308, - }, - /* 43 */ - { - /* nRg */ - 619027, - /* nBg */ - 833555, - }, - /* 44 */ - { - /* nRg */ - 612389, - /* nBg */ - 845886, - }, - /* 45 */ - { - /* nRg */ - 605920, - /* nBg */ - 858312, - }, - /* 46 */ - { - /* nRg */ - 599607, - /* nBg */ - 870811, - }, - /* 47 */ - { - /* nRg */ - 593463, - /* nBg */ - 883394, - }, - /* 48 */ - { - /* nRg */ - 587486, - /* nBg */ - 896061, - }, - /* 49 */ - { - /* nRg */ - 570530, - /* nBg */ - 934501, - }, - /* 50 */ - { - /* nRg */ - 555074, - /* nBg */ - 973561, - }, - /* 51 */ - { - /* nRg */ - 541160, - /* nBg */ - 1013208, - }, - /* 52 */ - { - /* nRg */ - 528797, - /* nBg */ - 1053358, - }, - /* 53 */ - { - /* nRg */ - 517997, - /* nBg */ - 1093958, - }, - /* 54 */ - { - /* nRg */ - 508790, - /* nBg */ - 1134947, - }, - /* 55 */ - { - /* nRg */ - 501188, - /* nBg */ - 1176261, - }, - /* 56 */ - { - /* nRg */ - 495190, - /* nBg */ - 1217837, - }, - }, - /* nIllumNum */ - 6, - /* tIllumList[16] */ - { - /* 0 */ - { - /* szName[32] */ - "H", - /* nCct */ - 2300, - /* nRadius */ - 0, - /* tCoord */ - { - /* nRg */ - 981467, - /* nBg */ - 288358, - }, - }, - /* 1 */ - { - /* szName[32] */ - "A", - /* nCct */ - 2856, - /* nRadius */ - 0, - /* tCoord */ - { - /* nRg */ - 817889, - /* nBg */ - 346030, - }, - }, - /* 2 */ - { - /* szName[32] */ - "TL84", - /* nCct */ - 3800, - /* nRadius */ - 0, - /* tCoord */ - { - /* nRg */ - 698352, - /* nBg */ - 432013, - }, - }, - /* 3 */ - { - /* szName[32] */ - "D50", - /* nCct */ - 5000, - /* nRadius */ - 0, - /* tCoord */ - { - /* nRg */ - 567280, - /* nBg */ - 667943, - }, - }, - /* 4 */ - { - /* szName[32] */ - "D65", - /* nCct */ - 6500, - /* nRadius */ - 0, - /* tCoord */ - { - /* nRg */ - 478151, - /* nBg */ - 700449, - }, - }, - /* 5 */ - { - /* szName[32] */ - "D75", - /* nCct */ - 7500, - /* nRadius */ - 0, - /* tCoord */ - { - /* nRg */ - 466616, - /* nBg */ - 839909, - }, - }, - }, - /* nExtIllumNum */ - 1, - /* tExtIllumList[32] */ - { - /* 0 */ - { - /* szName[32] */ - "CWF", - /* nCct */ - 4100, - /* nRadius */ - 31457, - /* tCoord */ - { - /* nRg */ - 584057, - /* nBg */ - 409993, - }, - }, - }, - /* nPolyNum */ - 0, - /* tPolyList[32] */ - { - /* 0 */ - { - /* nMinX */ - 0, - /* nMaxX */ - 0, - /* nMinY */ - 0, - /* nMaxY */ - 0, - /* nPntCnt */ - 0, - /* tPntArray[64] */ - { - /* 0 */ - { - /* nRg */ - 0, - /* nBg */ - 0, - }, - }, - }, - }, - /* tInitParam */ - { - /* tGains */ - { - /* nGainR */ - 500, - /* nGainGr */ - 256, - /* nGainGb */ - 256, - /* nGainB */ - 500, - }, - /* nDampRatio */ - 10000, - /* nFrameSkipping */ - 2, - }, - /* nMode */ - 0, - /* nIndex */ - 0, - /* nColorDiffCnt */ - 10, - /* nColorDiffList[16] */ - {1, 20, 40, 80, 150, 200, 350, 500, 800, 1024, 0, 0, 0, 0, 0, 0,/*0 - 15*/}, - /* nDampRatioList[16] */ - {943718, 943718, 943718, 943718, 943718, 943718, 943718, 943718, 943718, 943718, 0, 0, 0, 0, 0, 0,/*0 - 15*/}, - /* nToleranceRg */ - 3145, - /* nToleranceBg */ - 3145, - /* nLuxVeryDarkStart */ - 0, - /* nLuxVeryDarkEnd */ - 8192, - /* nLuxDarkStart */ - 10240, - /* nLuxDarkEnd */ - 51200, - /* nLuxIndoorStart */ - 61440, - /* nLuxIndoorEnd */ - 409600, - /* nLuxTransInStart */ - 460800, - /* nLuxTransInEnd */ - 972800, - /* nLuxTransOutStart */ - 1024000, - /* nLuxTransOutEnd */ - 1894400, - /* nLuxOutdoorStart */ - 1945600, - /* nLuxOutdoorEnd */ - 4044800, - /* nLuxBrightStart */ - 4096000, - /* nLuxBrightEnd */ - 10137600, - /* nLuxVeryBrightStart */ - 10240000, - /* nCctMinInner */ - 2300, - /* nCctMaxInner */ - 7800, - /* nCctMinOuter */ - 1950, - /* nCctMaxOuter */ - 10000, - /* nCctSplitHtoA */ - 2800, - /* nCctSplitAtoF */ - 3300, - /* nCctSplitFtoD5 */ - 4600, - /* nCctSplitD5toD6 */ - 5600, - /* nCctSplitD6toS */ - 6600, - /* nGridWeightEnable */ - 0, - /* nGridWeightRow */ - 9, - /* nGridWeightColumn */ - 9, - /* nGridWeightTable[27][36] */ - { - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, /*32 - 35*/ - }, - }, - /* nGrayZoneLuxWeight[24][8] */ - { - {42, 42, 42, 24, 24, 6, 6, 6, /*0 - 7*/}, - {700, 700, 700, 400, 600, 100, 100, 100, /*0 - 7*/}, - {700, 700, 700, 400, 1000, 100, 100, 100, /*0 - 7*/}, - {42, 42, 42, 24, 24, 6, 6, 6, /*0 - 7*/}, - {140, 140, 140, 80, 80, 20, 20, 20, /*0 - 7*/}, - {700, 700, 700, 400, 400, 100, 100, 100, /*0 - 7*/}, - {700, 700, 700, 400, 400, 100, 100, 100, /*0 - 7*/}, - {140, 140, 140, 80, 80, 20, 20, 20, /*0 - 7*/}, - {200, 200, 200, 1000, 1000, 20, 20, 20, /*0 - 7*/}, - {1000, 1000, 1000, 1000, 1000, 100, 100, 100, /*0 - 7*/}, - {1000, 1000, 1000, 1000, 1000, 100, 100, 100, /*0 - 7*/}, - {200, 200, 200, 200, 200, 20, 20, 20, /*0 - 7*/}, - {200, 200, 200, 200, 200, 200, 200, 200, /*0 - 7*/}, - {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, /*0 - 7*/}, - {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, /*0 - 7*/}, - {200, 200, 200, 200, 200, 200, 200, 200, /*0 - 7*/}, - {200, 200, 200, 200, 200, 200, 200, 200, /*0 - 7*/}, - {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, /*0 - 7*/}, - {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, /*0 - 7*/}, - {200, 200, 200, 200, 200, 200, 200, 200, /*0 - 7*/}, - {60, 60, 60, 60, 60, 60, 60, 60, /*0 - 7*/}, - {300, 300, 300, 800, 600, 300, 300, 300, /*0 - 7*/}, - {300, 300, 300, 800, 600, 300, 300, 300, /*0 - 7*/}, - {60, 60, 60, 60, 60, 60, 60, 60, /*0 - 7*/}, - }, - /* nExtIlllumLuxWeight[32][8] */ - { - {1000, 1000, 1000, 200, 50, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - /* nLumaWeightNum */ - 8, - /* nLumaSplitList[32] */ - {51, 819, 3072, 8192, 20480, 40960, 92160, 215040, /*0 - 7*/}, - /* nLumaWeightList[8][32] */ - { - {512, 512, 1024, 1024, 1024, 1024, 1024, 820, /*0 - 7*/}, - {205, 205, 1024, 1024, 1024, 1024, 1024, 820, /*0 - 7*/}, - {0, 0, 0, 512, 1024, 1024, 1024, 820, /*0 - 7*/}, - {0, 0, 0, 512, 1024, 1024, 1024, 820, /*0 - 7*/}, - {0, 0, 0, 512, 1024, 1024, 1024, 820, /*0 - 7*/}, - {0, 0, 0, 512, 1024, 1024, 1024, 820, /*0 - 7*/}, - {0, 0, 0, 512, 1024, 1024, 1024, 820, /*0 - 7*/}, - {0, 0, 0, 512, 1024, 1024, 1024, 820, /*0 - 7*/}, - }, - /* bMixLightEn */ - 1, - /* nMixLightProba_0_CctStd[8] */ - {400, 400, 400, 450, 600, 9998, 9998, 9998, /*0 - 7*/}, - /* nMixLightProba_100_CctStd[8] */ - {600, 600, 600, 800, 1000, 9999, 9999, 9999, /*0 - 7*/}, - /* nMixLightProba_100_SatDiscnt[8] */ - {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, - /* nMixLightKneeNum */ - 8, - /* nMixLightKneeCctList[32] */ - {2300, 2800, 3500, 4600, 5500, 6500, 7500, 8500, /*0 - 7*/}, - /* nMixLightKneeWtList[8][32] */ - { - {820, 820, 820, 1024, 1024, 820, 410, 358, /*0 - 7*/}, - {614, 614, 614, 1024, 1024, 820, 410, 358, /*0 - 7*/}, - {205, 205, 307, 820, 1024, 820, 410, 358, /*0 - 7*/}, - {205, 205, 410, 922, 1024, 820, 410, 358, /*0 - 7*/}, - {307, 307, 512, 1024, 1024, 820, 410, 358, /*0 - 7*/}, - {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 7*/}, - {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 7*/}, - {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 7*/}, - }, - /* tDomParamList[4] */ - { - /* 0 */ - { - /* nDominantEnable */ - 1, - /* nDomMinCctThresh */ - 2000, - /* nDomMaxCctThresh */ - 2500, - /* nDom2AllRatioThresh */ - 409, - /* nDom2MinorRatioThresh */ - 4096, - /* nMinorWeight */ - 0, - /* nSmoothPercent */ - 204, - }, - /* 1 */ - { - /* nDominantEnable */ - 1, - /* nDomMinCctThresh */ - 2500, - /* nDomMaxCctThresh */ - 3300, - /* nDom2AllRatioThresh */ - 409, - /* nDom2MinorRatioThresh */ - 4096, - /* nMinorWeight */ - 0, - /* nSmoothPercent */ - 204, - }, - /* 2 */ - { - /* nDominantEnable */ - 1, - /* nDomMinCctThresh */ - 3300, - /* nDomMaxCctThresh */ - 4600, - /* nDom2AllRatioThresh */ - 409, - /* nDom2MinorRatioThresh */ - 4096, - /* nMinorWeight */ - 0, - /* nSmoothPercent */ - 204, - }, - /* 3 */ - { - /* nDominantEnable */ - 1, - /* nDomMinCctThresh */ - 4600, - /* nDomMaxCctThresh */ - 8500, - /* nDom2AllRatioThresh */ - 409, - /* nDom2MinorRatioThresh */ - 4096, - /* nMinorWeight */ - 0, - /* nSmoothPercent */ - 204, - }, - }, - /* nTmpoStabTriggerAvgBlkWt */ - 10, - /* nPlanckianLocusProjEn */ - 0, - /* nPlanckianLocusNotProjLux */ - 4096000, - /* nPlanckianLocusFullProjLux */ - 10240000, - /* nSpatialSegmetNum */ - 2, - /* nSpatialStartLux[32] */ - {4096000, 11264000, /*0 - 1*/}, - /* nSpatialEndLux[32] */ - {10240000, 1024000000, /*0 - 1*/}, - /* nSpatialRg[32] */ - {488636, 622854, /*0 - 1*/}, - /* nSpatialBg[32] */ - {636485, 615514, /*0 - 1*/}, - /* nFusionGrayZoneConfid_0_AvgBlkWeight */ - 20, - /* nFusionGrayZoneConfid_100_AvgBlkWeight */ - 500, - /* nFusionSpatialConfid_0_Lux */ - 5120000, - /* nFusionSpatialConfid_100_Lux */ - 15360000, - /* nFusionWeightGrayZone */ - 1024, - /* nFusionWeightSpatial */ - 0, - /* nPreferCctNum */ - 10, - /* nPreferSrcCctList[32] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - /* nPreferDstCct[8][32] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - }, - /* nPreferGrShift[8][32] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - }, - /* nMultiCamSyncMode */ - 0, - }, -}; - - -static AX_ISP_IQ_RLTM_PARAM_T rltm_param_sdr = { - /* nRltmEn */ - 1, - /* nMultiCamSyncMode */ - 0, - /* nAutoMode */ - 0, - /* nRefMode */ - 1, - /* tTempoFilter */ - { - /* nAlpha */ - 512, - /* nReset */ - 0, - /* nStopUpdating */ - 0, - }, - /* tLumaWt */ - { - /*R,Gr,Gb,B,max(R, Gr, Gb, B)*/ - {0, 0, 0, 0, 128}, - }, - /* tMultiHistWt */ - { - /*nMode*/ - 0, - /*nRegionNum*/ - 0, - /*nHistWtNum*/ - 1, - /*tRoi*/ - { - /*nTop*/ - 0, - /*nBottom*/ - 0, - /*nLeft*/ - 0, - /*nRight*/ - 0, - }, - /*tHWeight*/ - { - /*nHistogramWeight[63]*/ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*nFlagHistId[16][16]*/ - { - { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - }, - }, - /* tManualParam */ - { - /* nLocalFactor */ - 90, - /* nHighlightSup */ - 0, - /* nKMax */ - 39018, - /* nPreGamma */ - 64, - /* nPostGamma */ - 64, - /* nDynamicRangeUpper */ - 128, - /* nDynamicRangeLower */ - 0, - /* nExtraDgain */ - 16, - /* nWinSize */ - 512, - /* nRltmStrength */ - 102, - /* nLog10Offset */ - 0, - /* nContrastStrength */ - 42, - /* nBaseGain */ - 64, - /* nDitherMode */ - 0, - /* nDitherScale */ - 64, - /* nGtmSwEn */ - 1, - /* nGtmSwDgain */ - 256, - /*nHistWtBrightLow[4]*/ - { 0, 0, 0, 0, }, - /*nHistWtBrightHigh[4]*/ - { 0, 0, 0, 0, }, - /*nHistWtThreshold[4]*/ - { 129, 129, 129, 129, }, - /* nSCurveList[1025] */ - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - /*tHWeight*/ - { - /*0*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*1*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*2*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*3*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*4*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*5*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*6*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*7*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*8*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*9*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*10*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*11*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*12*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*13*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*14*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - /*15*/ - { - /* nHistogramWeight[63] */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - }, - }, - }, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 16, - /* nRefVal[16] */ - {1024, 2048, 4096, 8192, 12288, 15872, 31744, 63488, 95232, 126976, 190464, 253952, 404736, 674560, 944384, 1079296, /*0 - 15*/}, - /* nLocalFactor[16] */ - {90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, /*0 - 15*/}, - /* nHighlightSup[16] */ - {150, 150, 150, 150, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, /*0 - 15*/}, - /* nKMax[16] */ - {39018, 39018, 39018, 39018, 39018, 39018, 39018, 39018, 39018, 39018, 39018, 39018, 39018, 39018, 39018, 39018, /*0 - 15*/}, - /* nPreGamma[16] */ - {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /*0 - 15*/}, - /* nPostGamma[16] */ - {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /*0 - 15*/}, - /* nDynamicRangeUpper[16] */ - {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 15*/}, - /* nDynamicRangeLower[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nExtraDgain[16] */ - {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /*0 - 15*/}, - /* nWinSize[16] */ - {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 15*/}, - /* nRltmStrength[16] */ - {32, 32, 32, 32, 32, 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nLog10Offset[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nContrastStrength[16] */ - {55, 55, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, /*0 - 15*/}, - /* nBaseGain[16] */ - {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, /*0 - 15*/}, - /* nDitherMode[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nDitherScale[16] */ - {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, /*0 - 15*/}, - /* nGtmSwEn[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nGtmSwDgain[16] */ - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, - - /*nHistWtBrightLow[16][4]*/ - { - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - }, - /*nHistWtBrightHigh[16][4]*/ - { - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - { 0, 0, 0, 0, }, - }, - /*nHistWtThreshold[16][4]*/ - { - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - { 129, 129, 129, 129, }, - }, - /* nSCurveList[16][1025] */ - { - { - 0, 45, 91, 137, 184, 231, 278, 326, 374, 423, 472, 521, 570, 620, 670, 721, 771, 822, 874, 925, 977, 1029, 1081, 1134, 1186, 1239, 1292, 1345, 1399, 1453, 1506, 1560, /* 0 - 31*/ - 1614, 1669, 1723, 1778, 1832, 1887, 1942, 1997, 2052, 2107, 2162, 2217, 2273, 2328, 2384, 2439, 2494, 2550, 2605, 2660, 2716, 2771, 2826, 2880, 2935, 2990, 3044, 3098, 3152, 3205, 3258, 3311, /* 32 - 63*/ - 3364, 3416, 3468, 3519, 3570, 3620, 3671, 3720, 3769, 3817, 3865, 3912, 3959, 4004, 4049, 4093, 4136, 4178, 4219, 4260, 4299, 4337, 4374, 4410, 4445, 4478, 4510, 4541, 4571, 4599, 4625, 4651, /* 64 - 95*/ - 4675, 4699, 4721, 4742, 4762, 4782, 4800, 4819, 4836, 4853, 4869, 4885, 4901, 4916, 4932, 4947, 4962, 4977, 4992, 5008, 5023, 5039, 5055, 5071, 5087, 5104, 5120, 5137, 5154, 5170, 5187, 5204, /* 96 - 127*/ - 5221, 5238, 5254, 5271, 5288, 5304, 5320, 5336, 5352, 5368, 5384, 5399, 5414, 5429, 5444, 5458, 5473, 5488, 5503, 5517, 5532, 5548, 5563, 5579, 5595, 5611, 5628, 5645, 5663, 5681, 5699, 5719, /* 128 - 159*/ - 5739, 5759, 5781, 5803, 5825, 5848, 5872, 5896, 5920, 5944, 5969, 5994, 6018, 6042, 6067, 6091, 6114, 6138, 6161, 6183, 6205, 6226, 6246, 6265, 6284, 6301, 6317, 6333, 6348, 6362, 6376, 6389, /* 160 - 191*/ - 6402, 6415, 6427, 6439, 6451, 6463, 6475, 6488, 6500, 6513, 6527, 6541, 6555, 6571, 6587, 6603, 6621, 6640, 6660, 6680, 6702, 6724, 6747, 6770, 6795, 6820, 6846, 6872, 6899, 6927, 6955, 6984, /* 192 - 223*/ - 7013, 7043, 7073, 7104, 7135, 7167, 7199, 7231, 7263, 7296, 7329, 7362, 7396, 7430, 7464, 7498, 7533, 7567, 7602, 7637, 7672, 7708, 7743, 7779, 7814, 7850, 7886, 7922, 7958, 7994, 8029, 8065, /* 224 - 255*/ - 8101, 8137, 8173, 8209, 8245, 8281, 8317, 8352, 8388, 8424, 8459, 8495, 8530, 8565, 8600, 8635, 8670, 8705, 8740, 8774, 8809, 8843, 8877, 8910, 8944, 8978, 9011, 9044, 9078, 9111, 9144, 9176, /* 256 - 287*/ - 9209, 9242, 9274, 9307, 9339, 9371, 9403, 9436, 9468, 9500, 9532, 9564, 9595, 9627, 9659, 9691, 9723, 9754, 9786, 9818, 9849, 9881, 9913, 9944, 9976, 10007, 10039, 10070, 10102, 10133, 10165, 10196, /* 288 - 319*/ - 10228, 10259, 10291, 10322, 10353, 10385, 10416, 10448, 10479, 10511, 10542, 10574, 10605, 10637, 10668, 10700, 10731, 10763, 10794, 10826, 10857, 10889, 10921, 10952, 10984, 11016, 11047, 11079, 11111, 11142, 11174, 11206, /* 320 - 351*/ - 11238, 11270, 11302, 11334, 11366, 11398, 11430, 11462, 11494, 11526, 11558, 11590, 11622, 11654, 11686, 11718, 11751, 11783, 11815, 11847, 11879, 11912, 11944, 11976, 12009, 12041, 12073, 12105, 12138, 12170, 12202, 12234, /* 352 - 383*/ - 12267, 12299, 12331, 12363, 12396, 12428, 12460, 12492, 12524, 12556, 12588, 12620, 12652, 12684, 12716, 12748, 12780, 12811, 12843, 12875, 12906, 12938, 12969, 13001, 13032, 13064, 13095, 13127, 13158, 13189, 13221, 13252, /* 384 - 415*/ - 13283, 13315, 13346, 13377, 13409, 13440, 13471, 13503, 13534, 13566, 13597, 13628, 13660, 13691, 13723, 13754, 13786, 13817, 13849, 13881, 13912, 13944, 13976, 14008, 14039, 14071, 14103, 14135, 14168, 14200, 14232, 14264, /* 416 - 447*/ - 14297, 14329, 14361, 14394, 14426, 14459, 14492, 14524, 14557, 14590, 14622, 14655, 14688, 14721, 14753, 14786, 14819, 14852, 14885, 14917, 14950, 14983, 15016, 15049, 15081, 15114, 15147, 15179, 15212, 15245, 15277, 15310, /* 448 - 479*/ - 15342, 15375, 15407, 15440, 15472, 15504, 15536, 15568, 15601, 15632, 15664, 15696, 15728, 15760, 15792, 15823, 15855, 15886, 15918, 15949, 15981, 16012, 16043, 16075, 16106, 16137, 16169, 16200, 16231, 16262, 16293, 16325, /* 480 - 511*/ - 16356, 16387, 16418, 16449, 16481, 16512, 16543, 16574, 16606, 16637, 16668, 16700, 16731, 16762, 16794, 16825, 16857, 16888, 16920, 16952, 16984, 17015, 17047, 17079, 17111, 17143, 17175, 17207, 17239, 17271, 17304, 17336, /* 512 - 543*/ - 17368, 17400, 17433, 17465, 17498, 17530, 17562, 17595, 17627, 17660, 17693, 17725, 17758, 17790, 17823, 17856, 17888, 17921, 17953, 17986, 18019, 18051, 18084, 18117, 18149, 18182, 18214, 18247, 18279, 18312, 18345, 18377, /* 544 - 575*/ - 18410, 18442, 18474, 18507, 18539, 18572, 18604, 18636, 18669, 18701, 18733, 18765, 18798, 18830, 18862, 18894, 18926, 18959, 18991, 19023, 19055, 19087, 19119, 19151, 19184, 19216, 19248, 19280, 19312, 19344, 19376, 19408, /* 576 - 607*/ - 19440, 19472, 19504, 19537, 19569, 19601, 19633, 19665, 19697, 19729, 19761, 19793, 19826, 19858, 19890, 19922, 19954, 19986, 20018, 20051, 20083, 20115, 20147, 20179, 20212, 20244, 20276, 20308, 20340, 20373, 20405, 20437, /* 608 - 639*/ - 20469, 20501, 20534, 20566, 20598, 20630, 20662, 20694, 20727, 20759, 20791, 20823, 20855, 20887, 20919, 20951, 20983, 21016, 21048, 21080, 21112, 21144, 21176, 21208, 21240, 21271, 21303, 21335, 21367, 21399, 21431, 21463, /* 640 - 671*/ - 21495, 21526, 21558, 21590, 21622, 21654, 21685, 21717, 21749, 21781, 21812, 21844, 21876, 21907, 21939, 21971, 22003, 22034, 22066, 22098, 22129, 22161, 22193, 22225, 22256, 22288, 22320, 22352, 22383, 22415, 22447, 22479, /* 672 - 703*/ - 22510, 22542, 22574, 22606, 22637, 22669, 22701, 22733, 22765, 22797, 22829, 22860, 22892, 22924, 22956, 22987, 23019, 23051, 23082, 23114, 23145, 23177, 23208, 23240, 23271, 23302, 23333, 23364, 23395, 23426, 23457, 23488, /* 704 - 735*/ - 23518, 23549, 23579, 23609, 23639, 23669, 23699, 23729, 23759, 23788, 23818, 23847, 23876, 23905, 23933, 23962, 23990, 24019, 24047, 24075, 24103, 24130, 24158, 24185, 24212, 24240, 24267, 24293, 24320, 24347, 24374, 24400, /* 736 - 767*/ - 24427, 24454, 24480, 24506, 24533, 24559, 24586, 24612, 24638, 24665, 24691, 24717, 24744, 24770, 24797, 24823, 24850, 24876, 24903, 24930, 24957, 24984, 25011, 25038, 25065, 25093, 25120, 25148, 25176, 25204, 25232, 25260, /* 768 - 799*/ - 25289, 25317, 25346, 25375, 25404, 25433, 25463, 25493, 25523, 25553, 25583, 25614, 25644, 25675, 25706, 25737, 25769, 25800, 25832, 25864, 25896, 25929, 25961, 25994, 26027, 26060, 26093, 26127, 26160, 26194, 26229, 26263, /* 800 - 831*/ - 26297, 26332, 26367, 26402, 26437, 26473, 26509, 26545, 26581, 26617, 26654, 26690, 26727, 26765, 26802, 26839, 26877, 26915, 26953, 26991, 27030, 27068, 27107, 27145, 27184, 27223, 27262, 27300, 27339, 27378, 27417, 27456, /* 832 - 863*/ - 27495, 27533, 27572, 27611, 27649, 27688, 27726, 27764, 27802, 27840, 27878, 27915, 27953, 27990, 28027, 28063, 28100, 28136, 28172, 28207, 28242, 28277, 28312, 28346, 28380, 28413, 28447, 28479, 28512, 28543, 28575, 28606, /* 864 - 895*/ - 28637, 28667, 28698, 28727, 28757, 28786, 28815, 28844, 28872, 28900, 28928, 28955, 28982, 29009, 29036, 29062, 29089, 29115, 29141, 29166, 29192, 29217, 29242, 29267, 29292, 29317, 29342, 29366, 29390, 29415, 29439, 29463, /* 896 - 927*/ - 29487, 29511, 29535, 29559, 29582, 29606, 29630, 29653, 29677, 29701, 29725, 29748, 29772, 29796, 29820, 29844, 29868, 29892, 29916, 29940, 29964, 29989, 30013, 30038, 30063, 30088, 30113, 30138, 30163, 30189, 30215, 30241, /* 928 - 959*/ - 30267, 30293, 30320, 30347, 30374, 30401, 30429, 30456, 30484, 30513, 30542, 30571, 30600, 30629, 30659, 30690, 30720, 30751, 30783, 30814, 30846, 30879, 30912, 30945, 30979, 31013, 31047, 31082, 31118, 31154, 31190, 31227, /* 960 - 991*/ - 31264, 31302, 31340, 31379, 31419, 31459, 31499, 31540, 31581, 31624, 31666, 31709, 31753, 31798, 31843, 31888, 31935, 31982, 32029, 32077, 32126, 32176, 32226, 32277, 32329, 32381, 32434, 32488, 32542, 32597, 32653, 32710, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 45, 91, 137, 184, 231, 278, 326, 374, 423, 472, 521, 570, 620, 670, 721, 771, 822, 874, 925, 977, 1029, 1081, 1134, 1186, 1239, 1292, 1345, 1399, 1453, 1506, 1560, /* 0 - 31*/ - 1614, 1669, 1723, 1778, 1832, 1887, 1942, 1997, 2052, 2107, 2162, 2217, 2273, 2328, 2384, 2439, 2494, 2550, 2605, 2660, 2716, 2771, 2826, 2880, 2935, 2990, 3044, 3098, 3152, 3205, 3258, 3311, /* 32 - 63*/ - 3364, 3416, 3468, 3519, 3570, 3620, 3671, 3720, 3769, 3817, 3865, 3912, 3959, 4004, 4049, 4093, 4136, 4178, 4219, 4260, 4299, 4337, 4374, 4410, 4445, 4478, 4510, 4541, 4571, 4599, 4625, 4651, /* 64 - 95*/ - 4675, 4699, 4721, 4742, 4762, 4782, 4800, 4819, 4836, 4853, 4869, 4885, 4901, 4916, 4932, 4947, 4962, 4977, 4992, 5008, 5023, 5039, 5055, 5071, 5087, 5104, 5120, 5137, 5154, 5170, 5187, 5204, /* 96 - 127*/ - 5221, 5238, 5254, 5271, 5288, 5304, 5320, 5336, 5352, 5368, 5384, 5399, 5414, 5429, 5444, 5458, 5473, 5488, 5503, 5517, 5532, 5548, 5563, 5579, 5595, 5611, 5628, 5645, 5663, 5681, 5699, 5719, /* 128 - 159*/ - 5739, 5759, 5781, 5803, 5825, 5848, 5872, 5896, 5920, 5944, 5969, 5994, 6018, 6042, 6067, 6091, 6114, 6138, 6161, 6183, 6205, 6226, 6246, 6265, 6284, 6301, 6317, 6333, 6348, 6362, 6376, 6389, /* 160 - 191*/ - 6402, 6415, 6427, 6439, 6451, 6463, 6475, 6488, 6500, 6513, 6527, 6541, 6555, 6571, 6587, 6603, 6621, 6640, 6660, 6680, 6702, 6724, 6747, 6770, 6795, 6820, 6846, 6872, 6899, 6927, 6955, 6984, /* 192 - 223*/ - 7013, 7043, 7073, 7104, 7135, 7167, 7199, 7231, 7263, 7296, 7329, 7362, 7396, 7430, 7464, 7498, 7533, 7567, 7602, 7637, 7672, 7708, 7743, 7779, 7814, 7850, 7886, 7922, 7958, 7994, 8029, 8065, /* 224 - 255*/ - 8101, 8137, 8173, 8209, 8245, 8281, 8317, 8352, 8388, 8424, 8459, 8495, 8530, 8565, 8600, 8635, 8670, 8705, 8740, 8774, 8809, 8843, 8877, 8910, 8944, 8978, 9011, 9044, 9078, 9111, 9144, 9176, /* 256 - 287*/ - 9209, 9242, 9274, 9307, 9339, 9371, 9403, 9436, 9468, 9500, 9532, 9564, 9595, 9627, 9659, 9691, 9723, 9754, 9786, 9818, 9849, 9881, 9913, 9944, 9976, 10007, 10039, 10070, 10102, 10133, 10165, 10196, /* 288 - 319*/ - 10228, 10259, 10291, 10322, 10353, 10385, 10416, 10448, 10479, 10511, 10542, 10574, 10605, 10637, 10668, 10700, 10731, 10763, 10794, 10826, 10857, 10889, 10921, 10952, 10984, 11016, 11047, 11079, 11111, 11142, 11174, 11206, /* 320 - 351*/ - 11238, 11270, 11302, 11334, 11366, 11398, 11430, 11462, 11494, 11526, 11558, 11590, 11622, 11654, 11686, 11718, 11751, 11783, 11815, 11847, 11879, 11912, 11944, 11976, 12009, 12041, 12073, 12105, 12138, 12170, 12202, 12234, /* 352 - 383*/ - 12267, 12299, 12331, 12363, 12396, 12428, 12460, 12492, 12524, 12556, 12588, 12620, 12652, 12684, 12716, 12748, 12780, 12811, 12843, 12875, 12906, 12938, 12969, 13001, 13032, 13064, 13095, 13127, 13158, 13189, 13221, 13252, /* 384 - 415*/ - 13283, 13315, 13346, 13377, 13409, 13440, 13471, 13503, 13534, 13566, 13597, 13628, 13660, 13691, 13723, 13754, 13786, 13817, 13849, 13881, 13912, 13944, 13976, 14008, 14039, 14071, 14103, 14135, 14168, 14200, 14232, 14264, /* 416 - 447*/ - 14297, 14329, 14361, 14394, 14426, 14459, 14492, 14524, 14557, 14590, 14622, 14655, 14688, 14721, 14753, 14786, 14819, 14852, 14885, 14917, 14950, 14983, 15016, 15049, 15081, 15114, 15147, 15179, 15212, 15245, 15277, 15310, /* 448 - 479*/ - 15342, 15375, 15407, 15440, 15472, 15504, 15536, 15568, 15601, 15632, 15664, 15696, 15728, 15760, 15792, 15823, 15855, 15886, 15918, 15949, 15981, 16012, 16043, 16075, 16106, 16137, 16169, 16200, 16231, 16262, 16293, 16325, /* 480 - 511*/ - 16356, 16387, 16418, 16449, 16481, 16512, 16543, 16574, 16606, 16637, 16668, 16700, 16731, 16762, 16794, 16825, 16857, 16888, 16920, 16952, 16984, 17015, 17047, 17079, 17111, 17143, 17175, 17207, 17239, 17271, 17304, 17336, /* 512 - 543*/ - 17368, 17400, 17433, 17465, 17498, 17530, 17562, 17595, 17627, 17660, 17693, 17725, 17758, 17790, 17823, 17856, 17888, 17921, 17953, 17986, 18019, 18051, 18084, 18117, 18149, 18182, 18214, 18247, 18279, 18312, 18345, 18377, /* 544 - 575*/ - 18410, 18442, 18474, 18507, 18539, 18572, 18604, 18636, 18669, 18701, 18733, 18765, 18798, 18830, 18862, 18894, 18926, 18959, 18991, 19023, 19055, 19087, 19119, 19151, 19184, 19216, 19248, 19280, 19312, 19344, 19376, 19408, /* 576 - 607*/ - 19440, 19472, 19504, 19537, 19569, 19601, 19633, 19665, 19697, 19729, 19761, 19793, 19826, 19858, 19890, 19922, 19954, 19986, 20018, 20051, 20083, 20115, 20147, 20179, 20212, 20244, 20276, 20308, 20340, 20373, 20405, 20437, /* 608 - 639*/ - 20469, 20501, 20534, 20566, 20598, 20630, 20662, 20694, 20727, 20759, 20791, 20823, 20855, 20887, 20919, 20951, 20983, 21016, 21048, 21080, 21112, 21144, 21176, 21208, 21240, 21271, 21303, 21335, 21367, 21399, 21431, 21463, /* 640 - 671*/ - 21495, 21526, 21558, 21590, 21622, 21654, 21685, 21717, 21749, 21781, 21812, 21844, 21876, 21907, 21939, 21971, 22003, 22034, 22066, 22098, 22129, 22161, 22193, 22225, 22256, 22288, 22320, 22352, 22383, 22415, 22447, 22479, /* 672 - 703*/ - 22510, 22542, 22574, 22606, 22637, 22669, 22701, 22733, 22765, 22797, 22829, 22860, 22892, 22924, 22956, 22987, 23019, 23051, 23082, 23114, 23145, 23177, 23208, 23240, 23271, 23302, 23333, 23364, 23395, 23426, 23457, 23488, /* 704 - 735*/ - 23518, 23549, 23579, 23609, 23639, 23669, 23699, 23729, 23759, 23788, 23818, 23847, 23876, 23905, 23933, 23962, 23990, 24019, 24047, 24075, 24103, 24130, 24158, 24185, 24212, 24240, 24267, 24293, 24320, 24347, 24374, 24400, /* 736 - 767*/ - 24427, 24454, 24480, 24506, 24533, 24559, 24586, 24612, 24638, 24665, 24691, 24717, 24744, 24770, 24797, 24823, 24850, 24876, 24903, 24930, 24957, 24984, 25011, 25038, 25065, 25093, 25120, 25148, 25176, 25204, 25232, 25260, /* 768 - 799*/ - 25289, 25317, 25346, 25375, 25404, 25433, 25463, 25493, 25523, 25553, 25583, 25614, 25644, 25675, 25706, 25737, 25769, 25800, 25832, 25864, 25896, 25929, 25961, 25994, 26027, 26060, 26093, 26127, 26160, 26194, 26229, 26263, /* 800 - 831*/ - 26297, 26332, 26367, 26402, 26437, 26473, 26509, 26545, 26581, 26617, 26654, 26690, 26727, 26765, 26802, 26839, 26877, 26915, 26953, 26991, 27030, 27068, 27107, 27145, 27184, 27223, 27262, 27300, 27339, 27378, 27417, 27456, /* 832 - 863*/ - 27495, 27533, 27572, 27611, 27649, 27688, 27726, 27764, 27802, 27840, 27878, 27915, 27953, 27990, 28027, 28063, 28100, 28136, 28172, 28207, 28242, 28277, 28312, 28346, 28380, 28413, 28447, 28479, 28512, 28543, 28575, 28606, /* 864 - 895*/ - 28637, 28667, 28698, 28727, 28757, 28786, 28815, 28844, 28872, 28900, 28928, 28955, 28982, 29009, 29036, 29062, 29089, 29115, 29141, 29166, 29192, 29217, 29242, 29267, 29292, 29317, 29342, 29366, 29390, 29415, 29439, 29463, /* 896 - 927*/ - 29487, 29511, 29535, 29559, 29582, 29606, 29630, 29653, 29677, 29701, 29725, 29748, 29772, 29796, 29820, 29844, 29868, 29892, 29916, 29940, 29964, 29989, 30013, 30038, 30063, 30088, 30113, 30138, 30163, 30189, 30215, 30241, /* 928 - 959*/ - 30267, 30293, 30320, 30347, 30374, 30401, 30429, 30456, 30484, 30513, 30542, 30571, 30600, 30629, 30659, 30690, 30720, 30751, 30783, 30814, 30846, 30879, 30912, 30945, 30979, 31013, 31047, 31082, 31118, 31154, 31190, 31227, /* 960 - 991*/ - 31264, 31302, 31340, 31379, 31419, 31459, 31499, 31540, 31581, 31624, 31666, 31709, 31753, 31798, 31843, 31888, 31935, 31982, 32029, 32077, 32126, 32176, 32226, 32277, 32329, 32381, 32434, 32488, 32542, 32597, 32653, 32710, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - { - 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ - 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ - 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ - 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ - 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ - 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ - 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ - 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ - 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ - 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ - 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ - 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ - 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ - 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ - 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ - 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ - 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ - 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ - 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ - 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ - 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ - 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ - 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ - 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ - 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ - 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ - 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ - 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ - 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ - 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ - 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ - 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ - 32768, /*1024 - 1024*/ - }, - }, - /*tHWeight*/ - { - /*tHWeight[0]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[1]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[2]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[3]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[4]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[5]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[6]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[7]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[8]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[9]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[10]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[11]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[12]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[13]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[14]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - /*tHWeight[15]*/ - { - /*0*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*1*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*2*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*3*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*4*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*5*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*6*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*7*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*8*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*9*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*10*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*11*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*12*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*13*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*14*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - /*15*/ - { - /* nHistogramWeight */ - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 62*/ - - }, - }, - }, - }, - }, -}; - -static AX_ISP_IQ_RAW3DNR_PARAM_T raw3dnr_param_sdr = { - /* nRaw3dnrEn */ - 1, - /* nAutoMode */ - 0, - /* nRefMode */ - 1, - /* tGlb */ - { - /* eWorkMode */ - /* 0:AX_RAW3DNR_FIRST_3D, 1:AX_RAW3DNR_FIRST_2D, 2:AX_RAW3DNR_ONLY_2D */ - AX_RAW3DNR_ONLY_2D, - /* nSfMeshEnable */ - 0, - /* nRefMaskUpdMode */ - 1, - /* nReadNoiseCoeffsHcg[3] */ - {7931792, 32432480, 33930221, /*0 - 2*/}, - /* nReadNoiseCoeffsLcg[3] */ - {7931792, 32432480, 33930221, /*0 - 2*/}, - /* nShotNoiseCoeffsHcg[2] */ - {154236277, 2651599, /*0 - 1*/}, - /* nShotNoiseCoeffsLcg[2] */ - {154236277, 2651599, /*0 - 1*/}, - }, - /* tManual */ - { - /* nFpnRatio */ - 26, - /* tMtd */ - { - /* nAiMotionMaskEnable */ - 0, - /* eMtdMode */ - /* 0:AX_RAW3DNR_SOFT_THRES, 1:AX_RAW3DNR_HARD_THRES */ - AX_RAW3DNR_SOFT_THRES, - /* nMtdHardThres[3] */ - {512, 192, 128, /*0 - 2*/}, - /* nMtdLumaStrValue[17] */ - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, - /* nMtdLumaStrDelta[16] */ - {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /*0 - 15*/}, - /* nMtdStrTf */ - 0, - /* nMtdLf0KernelWt[3] */ - {85, 85, 85, /*0 - 2*/}, - /* nMtdLf1KernelWt[3] */ - {85, 85, 85, /*0 - 2*/}, - /* nMtdLf0Wt[4] */ - {256, 256, 256, 256, /*0 - 3*/}, - /* nMtdLf0Amp[4] */ - {256, 256, 256, 256, /*0 - 3*/}, - /* nMtdLf1Wt */ - 256, - /* nMtdLf1Amp */ - 256, - }, - /* tTd */ - { - /* nMtdSoftMode */ - 0, - /* nMtdLimit */ - 31, - /* nMtdMotionCurve[2] */ - {0, 0, /*0 - 1*/}, - /* nMtdMotionLut[15] */ - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 14 */}, - /* nMtdNoiseCoeffsL[17] */ - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, - /* nMtdNoiseCoeffsS[17] */ - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, - /* nMtdNoiseCoeffsVs[17] */ - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, - }, - /* tSd */ - { - /* nSfHighlightProtect */ - 64000, - /* nSfDetailPreserve */ - 32, - /* nSfLumaThresDelta[16] */ - {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /*0 - 15*/}, - /* nSfLumaThresValue[17] */ - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, - /* nSfNoiseCoeffsL[16] */ - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, - /* nSfNoiseCoeffsS[16] */ - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, - /* nSfNoiseCoeffsVs[16] */ - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, - /* nSfMotionStrL[6] */ - {256, 256, 256, 256, 256, 256, /*0 - 5*/}, - /* nSfMotionStrS[6] */ - {256, 256, 256, 256, 256, 256, /*0 - 5*/}, - /* nSfMotionStrVs[6] */ - {256, 256, 256, 256, 256, 256, /*0 - 5*/}, - /* nSfKernelWt0[3] */ - {128, 128, 128, /*0 - 2*/}, - /* nSfKernelWt1[2] */ - {128, 128, /*0 - 1*/}, - /* nSfSmoothStr */ - 96, - /* nDetailBackfillDelta[16] */ - {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /*0 - 15*/}, - /* nDetailBackfillResValue[17] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - /* nDetailBackfillRefValue[17] */ - {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, - /* nDetailBackfillRatioRes[4] */ - {128, 128, 128, 128, /*0 - 3*/}, - /* nDetailBackfillRatioRef[4] */ - {128, 128, 128, 128, /*0 - 3*/}, - /* tSfMeshStr */ - { - /* nSfMeshStr[11][11] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - }, - }, - }, - }, - /* tAuto */ - { - /* nParamGrpNum */ - 3, - /* nRefVal[16] */ - {0, 0, 0, /*0 - 2*/}, - /* nFpnRatio[16] */ - {0, 0, 0, /*0 - 2*/}, - /* tMtd */ - { - /* nAiMotionMaskEnable[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* eMtdMode[16] */ - /* 0:AX_RAW3DNR_SOFT_THRES, 1:AX_RAW3DNR_HARD_THRES */ - {AX_RAW3DNR_SOFT_THRES, AX_RAW3DNR_SOFT_THRES, AX_RAW3DNR_SOFT_THRES, /*0 - 2*/}, - /* nMtdHardThres[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nMtdLumaStrValue[16][17] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - }, - /* nMtdLumaStrDelta[16][16] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - /* nMtdStrTf[16] */ - {0, 0, 0, /*0 - 2*/}, - /* nMtdLf0KernelWt[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nMtdLf1KernelWt[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nMtdLf0Wt[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nMtdLf0Amp[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nMtdLf1Wt[16] */ - {0, 0, 0, /*0 - 2*/}, - /* nMtdLf1Amp[16] */ - {0, 0, 0, /*0 - 2*/}, - }, - /* tTd */ - { - /* nMtdSoftMode[16] */ - {0, 0, 0, /* 0 - 2 */}, - /* nMtdLimit[16] */ - {31, 31, 31, /* 0 - 2 */}, - /* nMtdMotionCurve[16][2] */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nMtdMotionLut[16][15] */ - { - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 14 */}, - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 14 */}, - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 14 */}, - }, - /* nMtdNoiseCoeffsL[16][17] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - }, - /* nMtdNoiseCoeffsS[16][17] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - }, - /* nMtdNoiseCoeffsVs[16][17] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - }, - }, - /* tSd */ - { - /* nSfHighlightProtect[16] */ - {64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, /*0 - 15*/}, - /* nSfDetailPreserve[16] */ - {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /*0 - 15*/}, - /* nSfLumaThresDelta[16][16] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - /* nSfLumaThresValue[16][17] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - }, - /* nSfNoiseCoeffsL[16][16] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - /* nSfNoiseCoeffsS[16][16] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - /* nSfNoiseCoeffsVs[16][16] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - /* nSfMotionStrL[16][6] */ - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - /* nSfMotionStrS[16][6] */ - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - /* nSfMotionStrVs[16][6] */ - { - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - {0, 0, 0, 0, 0, 0, /*0 - 5*/}, - }, - /* nSfKernelWt0[16][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - }, - /* nSfKernelWt1[16][2] */ - { - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - {0, 0, /*0 - 1*/}, - }, - /* nSfSmoothStr[16] */ - {0, 0, 0, /*0 - 2*/}, - /* nDetailBackfillDelta[16][16] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - }, - /* nDetailBackfillResValue[16][17] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - }, - /* nDetailBackfillRefValue[16][17] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, - }, - /* nDetailBackfillRatioRes[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* nDetailBackfillRatioRef[16][4] */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - /* tSfMeshStr[16] */ - { - /* 0 */ - { - /* nSfMeshStr[11][11] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - }, - }, - /* 1 */ - { - /* nSfMeshStr[11][11] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - }, - }, - /* 2 */ - { - /* nSfMeshStr[11][11] */ - { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, - }, - }, - }, - }, - }, -}; - -static AX_ISP_IQ_FPN_PARAM_T fpn_param_sdr = { - /* nFpnEnable */ - /* 0:AX_FALSE, 1:AX_TRUE */ - AX_FALSE, - /* nAutoMode */ - 0, - /* eFpnMode */ - /* 0:AX_ISP_IQ_FPN_MODE0, 1:AX_ISP_IQ_FPN_MODE1, 2:AX_ISP_IQ_FPN_MODE_MAX */ - AX_ISP_IQ_FPN_MODE0, - /* tManualParam */ - { - /* tFpnCaliFrame */ - { - /* szFpnFrmName[128] */ - "dark_HCG_exp_20000_again_1.125_temp_20_framesize_8294400_cali.raw", - /* nLcgHcgMode */ - 0, - /* nAgain */ - 288, - /* nIntTime */ - 20000, - /* nTemperature */ - 20, - /* nFrameSize */ - 8294400, - /* nFpnCorrGain */ - 32, - /* nFpnOffset */ - 48, - }, - }, - /* tAutoParam */ - { - /* tHcgFpnCaliFrame */ - { - /* nCaliFrameNum */ - 2, - /* tFpnCaliFrame[8] */ - { - /* 0 */ - { - /* szFpnFrmName[128] */ - "dark_HCG_exp_20000_again_1.125_temp_20_framesize_8294400_cali.raw", - /* nLcgHcgMode */ - 0, - /* nAgain */ - 288, - /* nIntTime */ - 20000, - /* nTemperature */ - 20, - /* nFrameSize */ - 8294400, - /* nFpnCorrGain */ - 32, - /* nFpnOffset */ - 48, - }, - /* 1 */ - { - /* szFpnFrmName[128] */ - "dark_HCG_exp_20000_again_15.5_temp_20_framesize_8294400_cali.raw", - /* nLcgHcgMode */ - 0, - /* nAgain */ - 3968, - /* nIntTime */ - 20000, - /* nTemperature */ - 20, - /* nFrameSize */ - 8294400, - /* nFpnCorrGain */ - 64, - /* nFpnOffset */ - 48, - }, - }, - }, - /* tLcgFpnCaliFrame */ - { - /* nCaliFrameNum */ - 2, - /* tFpnCaliFrame[8] */ - { - /* 0 */ - { - /* szFpnFrmName[128] */ - "dark_LCG_exp_20000_again_1.125_temp_20_framesize_8294400_cali.raw", - /* nLcgHcgMode */ - 1, - /* nAgain */ - 288, - /* nIntTime */ - 20000, - /* nTemperature */ - 20, - /* nFrameSize */ - 8294400, - /* nFpnCorrGain */ - 64, - /* nFpnOffset */ - 48, - }, - /* 1 */ - { - /* szFpnFrmName[128] */ - "dark_LCG_exp_20000_again_15.5_temp_20_framesize_8294400_cali.raw", - /* nLcgHcgMode */ - 1, - /* nAgain */ - 3968, - /* nIntTime */ - 20000, - /* nTemperature */ - 20, - /* nFrameSize */ - 8294400, - /* nFpnCorrGain */ - 64, - /* nFpnOffset */ - 48, - }, - }, - }, - }, -}; - -static AX_ISP_IQ_LSC_PARAM_T lsc_param_sdr = { - /* nLscEn */ - 1, - /* nRefMode */ - 0, - /* nMeshMode */ - 0, - /* nAutoMode */ - 0, - /* nMeshRows */ - 52, - /* nMeshCols */ - 45, - /* tManualParam */ - { - /* nLumaRatio */ - 50, - /* nColorRatio */ - 100, - /* nLumaMeshLut[52x98] */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* nRRMeshLut[52x98] */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* nGRMeshLut[52x98] */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* nGBMeshLut[52x98] */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* nBBMeshLut[52x98] */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - }, - /* tAuto */ - { - /* nDampRatio */ - 80, - /* nToleranceRatio */ - 10, - /* tLumaParam */ - { - /* nParamGrpNum */ - 3, - /* nRefValStart[16] */ - {2800, 5000, 6500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nRefValEnd[16] */ - {2800, 5000, 6500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, - /* nLumaRatio[16] */ - {50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, /*0 - 15*/}, - /* nLumaMeshLut[52x98] */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - }, - /* tColTempParam */ - { - /* nColTempNum */ - 3, - /* nRefColorTempStart[10] */ - {2800, 5000, 6500, 0, 0, 0, 0, 0, 0, 0,/*0 - 9*/}, - /* nRefColorTempEnd[10] */ - {2800, 5000, 6500, 0, 0, 0, 0, 0, 0, 0,/*0 - 9*/}, - /* nColorTemp[10] */ - {2800, 5000, 6500, 0, 0, 0, 0, 0, 0, 0,/*0 - 9*/}, - /* nColorRatio[10] */ - {100, 100, 100, 100, 100, 100, 100, 100, 100, 100,/*0 - 9*/}, - /* nRRMeshLut[10][52x98] */ - { - /* 0 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 1 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 2 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 3 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 4 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 5 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 6 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 7 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 8 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 9 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - }, - /* nGRMeshLut[10][52x98] */ - { - /* 0 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 1 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 2 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 3 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 4 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 5 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 6 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 7 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 8 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 9 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - }, - /* nGBMeshLut[10][52x98] */ - { - /* 0 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 1 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 2 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 3 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 4 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 5 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 6 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 7 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 8 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 9 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - }, - /* nBBMeshLut[10][52x98] */ - { - /* 0 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 1 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 2 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 3 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 4 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 5 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 6 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 7 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 8 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - /* 9 */ - { - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - {0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, /*0 - 97*/}, - }, - }, - }, - }, -}; - -//dpc -static AX_ISP_IQ_DPC_PARAM_T dpc_param_sdr = { - /* nDpcEnable */ - 1, - /* nStaticDpcEnable */ - 0, - /* nDynamicDpcEnable */ - 1, - /* nPreDetLevelSlope */ - 64, - /* nPreDetLevelOffset */ - 0, - /* nColorLimitEn */ - 1, - /* nAutoMode */ - 0, - /* nRefMode */ - 1, - /* tDpcParam */ - { - /* tHcgTable */ - { - /* nSdpcLength */ - 0, - /* nSdpcBuffer[8192] */ - {0, /*0 - 0*/}, - /* nShotNoiseCoeffsA[4] */ - {154236277, 153976128, 153931397, 154786328, /*0 - 3*/}, - /* nShotNoiseCoeffsB[4] */ - {2651599, 3324422, 3685411, 1774564, /*0 - 3*/}, - /* nReadNoiseCoeffsA[4] */ - {7931792, 7935557, 7971379, 8007012, /*0 - 3*/}, - /* nReadNoiseCoeffsB[4] */ - {32432480, 31663460, 32006577, 31866601, /*0 - 3*/}, - /* nReadNoiseCoeffsC[4] */ - {33930221, 36227242, 35804793, 35182579, /*0 - 3*/}, - }, - /* tLcgTable */ - { - /* nSdpcLength */ - 0, - /* nSdpcBuffer[8192] */ - {0, /*0 - 0*/}, - /* nShotNoiseCoeffsA[4] */ - {35416523, 35417714, 35423902, 35421682, /*0 - 3*/}, - /* nShotNoiseCoeffsB[4] */ - {-386665, -459927, -439376, -288491, /*0 - 3*/}, - /* nReadNoiseCoeffsA[4] */ - {2034207, 2001760, 1973960, 2031931, /*0 - 3*/}, - /* nReadNoiseCoeffsB[4] */ - {18168345, 18213528, 18883095, 17734840, /*0 - 3*/}, - /* nReadNoiseCoeffsC[4] */ - {49967466, 53292461, 51951927, 54656236, /*0 - 3*/}, - }, - }, - /* tManualParam */ - { - /* nNoiseRatio[2] */ - {1024, 1024, /*0 - 1*/}, - /* nDpType */ - 0, - /* nNonChwiseEn */ - 0, - /* nChwiseStr */ - 20, - /* nDetCoarseStr */ - 236, - /* nDetFineStr */ - 48, - /* nDynamicDpcStr */ - 128, - /* nEdgeStr */ - 102, - /* nHotColdTypeStr */ - 32, - /* nSupWinkStr */ - 16, - /* nDynamicDpClrLimOffset */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* nStaticDpClrLimOffset */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* nNormalPixDpClrLimOffset */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* nDynamicDpClrLimStr */ - 128, - /* nStaticDpClrLimStr */ - 128, - /* nNormalPixDpClrLimStr */ - 128, - }, - /* tAutoParam */ - { - /* nParamGrpNum */ - 16, - /* nRefVal[16] */ - {2048, 4096, 8192, 12288, 15360, 31744, 63488, 126976, 190464, 285696, 380928, 476160, 603136, 730112, 825344, 1015808, /*0 - 15*/}, - /* nNoiseRatio[2][16] */ - { - {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 15*/}, - {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 15*/}, - }, - /* nDpType[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,/*0 - 15*/}, - /* nNonChwiseEn[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,/*0 - 15*/}, - /* nChwiseStr[16] */ - {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, /*0 - 15*/}, - /* nDetCoarseStr[16] */ - {2, 4, 8, 8, 16, 16, 32, 32, 64, 64, 90, 90, 100, 102, 128, 128,/*0 - 15*/}, - /* nDetFineStr[16] */ - {48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /*0 - 15*/}, - /* nDynamicDpcStr[16] */ - {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 15*/}, - /* nEdgeStr[16] */ - {102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, /*0 - 15*/}, - /* nHotColdTypeStr[16] */ - {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /*0 - 15*/}, - /* nSupWinkStr[16] */ - {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /*0 - 15*/}, - /* nDynamicDpClrLimOffset[16] */ - { - /* 0 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 1 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 2 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 3 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 4 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 5 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 6 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 7 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 8 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 9 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 10 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 11 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 12 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 13 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 14 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 15 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - }, - /* nStaticDpClrLimOffset[16] */ - { - /* 0 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 1 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 2 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 3 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 4 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 5 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 6 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 7 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 8 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 9 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 10 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 11 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 12 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 13 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 14 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 15 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - }, - /* nNormalPixDpClrLimOffset[16] */ - { - /* 0 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 1 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 2 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 3 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 4 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 5 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 6 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 7 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 8 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 9 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 10 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 11 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 12 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 13 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 14 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - /* 15 */ - { - /* nUpperLimit */ - 256, - /* nLowerLimit */ - 256, - }, - }, - /* nDynamicDpClrLimStr[16] */ - {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 15*/}, - /* nStaticDpClrLimStr[16] */ - {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 15*/}, - /* nNormalPixDpClrLimStr[16] */ - {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 15*/}, - }, -}; - -static AX_ISP_IQ_CA_PARAM_T ca_param_sdr = { - /* nCppEn */ - 1, - /* nAutoMode */ - 0, - /* nRefMode */ - 0, - /* tManualParam */ - { - /* nCtrlLevel */ - 256, - /* nSat */ - 0, - /* nHue */ - 0, - /* nCmtx[2][2] */ - { - {256, 0, /*0 - 1*/}, - {0, 256, /*0 - 1*/}, - }, - }, - /* tAutoParam */ - { - /* nParamGrpNumCt */ - 0, - /* nParamGrpNumLG */ - 0, - /* nRefValCt[12] */ - {0, /*0 - 0*/}, - /* nRefValLG[12][5] */ - { - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - {0, 0, 0, 0, 0, /*0 - 4*/}, - }, - /* nCmtx[12][5][4] */ - { - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - - /* nCmtx 0 */ - { - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - {0, 0, 0, 0, /*0 - 3*/}, - }, - }, - }, -}; - -//ae -static AX_ISP_IQ_AE_PARAM_T ae_param_sdr = { - /* nEnable */ - 0, - /* tExpManual */ - { - /* nIspGain */ - 1024, - /* nAGain */ - 6024, - /* nDgain */ - 1024, - /* nHcgLcg */ - 0, - /* nSnsTotalAGain */ - 1024, - /* nSysTotalGain */ - 1024, - /* nShutter */ - 10000, - /* nIrisPwmDuty */ - 102400, - /* nHdrRealRatioLtoS */ - 1024, - /* nHdrRealRatioStoVS */ - 1024, - /* nSetPoint */ - 51200, - /* nShortAgain */ - 0, - /* nShortDgain */ - 0, - /* nShortShutter */ - 0, - /* nVsAgain */ - 0, - /* nVsDgain */ - 0, - /* nVsShutter */ - 0, - /* nHdrRatio */ - 1024, - /* nHdrMaxShutterHwLimit */ - 30887, - /* nRealMaxShutter */ - 30887, - }, - /* tAeAlgAuto */ - { - /* nSetPoint */ - 30720, - /* nTolerance */ - 10485760, - /* nAgainLcg2HcgTh */ - 4521, - /* nAgainHcg2LcgTh */ - 1097, - /* nAgainLcg2HcgRatio */ - 4076, - /* nAgainHcg2LcgRatio */ - 4076, - /* nLuxk */ - 93391, - /* nCompensationMode */ - 1, - /* nPreChargeSize */ - 0, - /* nPreCharge[25] */ - {0,/*0 - 0*/}, - /* nMaxIspGain */ - 16384, - /* nMinIspGain */ - 1024, - /* nMaxUserDgain */ - 2048, - /* nMinUserDgain */ - 1024, - /* nMaxUserTotalAgain */ - 128892, - /* nMinUserTotalAgain */ - 1024, - /* nMaxUserSysGain */ - 2201908, - /* nMinUserSysGain */ - 1024, - /* nMaxShutter */ - 33259, - /* nMinShutter */ - 14, - /* nPositionWeightMode */ - 1, - /* nRoiStartX */ - 0, - /* nRoiStartY */ - 0, - /* nRoiWidth */ - 0, - /* nRoiHeight */ - 0, - /* nWeightRoi */ - 1024, - /* nWeightBackgnd */ - 1024, - /* nGridWeightRow */ - 15, - /* nGridWeightColumn */ - 17, - /* nGridWeightTable[48][64] */ - { - { - 139, 175, 215, 255, 293, 327, 354, 371, 377, 371, 354, 327, 293, 255, 215, 175, 139, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 181, 228, 280, 332, 383, 427, 461, 484, 491, 484, 461, 427, 383, 332, 280, 228, 181, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 226, 286, 350, 416, 479, 534, 578, 605, 615, 605, 578, 534, 479, 416, 350, 286, 226, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 272, 344, 421, 500, 575, 642, 694, 727, 739, 727, 694, 642, 575, 500, 421, 344, 272, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 313, 396, 486, 577, 664, 740, 801, 839, 852, 839, 801, 740, 664, 577, 486, 396, 313, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 347, 439, 538, 639, 735, 820, 887, 929, 944, 929, 887, 820, 735, 639, 538, 439, 347, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 369, 467, 572, 679, 781, 872, 943, 988, 1003, 988, 943, 872, 781, 679, 572, 467, 369, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 377, 476, 583, 693, 797, 890, 962, 1008, 1024, 1008, 962, 890, 797, 693, 583, 476, 377, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 369, 467, 572, 679, 781, 872, 943, 988, 1003, 988, 943, 872, 781, 679, 572, 467, 369, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 347, 439, 538, 639, 735, 820, 887, 929, 944, 929, 887, 820, 735, 639, 538, 439, 347, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 313, 396, 486, 577, 664, 740, 801, 839, 852, 839, 801, 740, 664, 577, 486, 396, 313, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 272, 344, 421, 500, 575, 642, 694, 727, 739, 727, 694, 642, 575, 500, 421, 344, 272, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 226, 286, 350, 416, 479, 534, 578, 605, 615, 605, 578, 534, 479, 416, 350, 286, 226, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 181, 228, 280, 332, 383, 427, 461, 484, 491, 484, 461, 427, 383, 332, 280, 228, 181, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 139, 175, 215, 255, 293, 327, 354, 371, 377, 371, 354, 327, 293, 255, 215, 175, 139, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 0 - 31*/ - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /* 32 - 63*/ - }, - }, - /* tAntiFlickerParam */ - { - /* nEnable */ - 1, - /* nFlickerPeriod */ - 0, - /* nAntiFlickerTolerance */ - 0, - /* nOverExpMode */ - 1, - /* nUnderExpMode */ - 1, - }, - /* nSetPointMode */ - 2, - /* nStrategyMode */ - 0, - /* tAeRouteParam */ - { - /* nTableNum */ - 1, - /* nUsedTableId */ - 0, - /* tRouteTable[8] */ - { - /* 0 */ - { - /* sTableName[32] */ - "DefaultAeRoute", - /* nRouteCurveNum */ - 5, - /* tRouteCurveList[16] */ - { - /* 0 */ - { - /* nIntergrationTime */ - 40, - /* nGain */ - 1024, - /* nIncrementPriority */ - 0, - }, - /* 1 */ - { - /* nIntergrationTime */ - 10000, - /* nGain */ - 1024, - /* nIncrementPriority */ - 0, - }, - /* 2 */ - { - /* nIntergrationTime */ - 30000, - /* nGain */ - 6144, - /* nIncrementPriority */ - 0, - }, - /* 3 */ - { - /* nIntergrationTime */ - 30000, - /* nGain */ - 204800, - /* nIncrementPriority */ - 0, - }, - /* 4 */ - { - /* nIntergrationTime */ - 39500, - /* nGain */ - 225280, - /* nIncrementPriority */ - 0, - }, - }, - }, - }, - }, - /* tAeSetPointCurve */ - { - /* nSize */ - 5, - /* nRefList[10] */ - {205, 1024, 5120, 51200, 204800, /*0 - 4*/}, - /* nSetPointList[10] */ - {18432, 22528, 22528, 22528, 22528, /*0 - 4*/}, - }, - /* tAeHdrRatio */ - { - /* nHdrMode */ - 0, - /* tRatioStrategyParam */ - { - /* nMinRatio */ - 5120, - /* nMaxRatio */ - 16384, - /* nShortNonSatAreaPercent */ - 103284736, - /* nShortSatLuma */ - 153600, - /* nTolerance */ - 1048576, - /* nConvergeCntFrameNum */ - 3, - /* nDampRatio */ - 870, - }, - /* nFixedHdrRatio */ - 16384, - }, - /* nMultiCamSyncMode */ - 0, - /* nMultiCamSyncRatio */ - 1048576, - /* tSlowShutterParam */ - { - /* nFrameRateMode */ - 0, - /* nFpsIncreaseDelayFrame */ - 0, - }, - /* tIrisParam */ - { - /* nIrisType */ - 0, - /* tDcIrisParam */ - { - /* nBigStepFactor */ - 104858, - /* nSmallStepFactor */ - 10486, - /* nLumaDiffOverThresh */ - 35840, - /* nLumaDiffUnderThresh */ - 35840, - /* nLumaSpeedThresh */ - 205, - /* nSpeedDownFactor */ - 209715, - /* nMinUserPwmDuty */ - 30720, - /* nMaxUserPwmDuty */ - 66560, - /* nOpenPwmDuty */ - 61440, - /* nConvergeLumaDiffTolerance */ - 52429, - /* nConvergeFrameCntThresh */ - 10, - }, - }, - /* tLumaWeightParam */ - { - /* nEnable */ - 0, - /* nLumaWeightNum */ - 16, - /* nLumaSplitList[64] */ - {0, 16384, 32768, 49152, 65535, 81920, 98304, 114688, 131072, 147456, 163840, 180224, 196608, 212992, 229376, 245760, /*0 - 15*/}, - /* nWeightList[64] */ - {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 15*/}, - }, - /* tTimeSmoothParam */ - { - /* tStateMachineParam */ - { - /* nToFastLumaThOver */ - 1536, - /* nToFastLumaThUnder */ - 819, - /* nToSlowLumaThOver */ - 102, - /* nToSlowLumaThUnder */ - 102, - /* nToSlowFrameTh */ - 8, - /* nToConvergedFrameTh */ - 2, - }, - /* tConvergeSpeedParam */ - { - /* nFastOverKneeCnt */ - 10, - /* nFastOverLumaDiffList[16] */ - {10240, 20480, 30720, 51200, 71680, 92160, 122880, 153600, 209920, 262144, /*0 - 9*/}, - /* nFastOverStepFactorList[16] */ - {51, 51, 154, 205, 256, 307, 358, 410, 512, 819, /*0 - 9*/}, - /* nFastOverSpeedDownFactorList[16] */ - {0, 0, 0, 0, 0, 0, 102, 102, 307, 410, /*0 - 9*/}, - /* nFastOverSkipList[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, - /* nFastUnderKneeCnt */ - 8, - /* nFastUnderLumaDiffList[16] */ - {5120, 10240, 15360, 20480, 25600, 30720, 40960, 51200, /*0 - 7*/}, - /* nFastUnderStepFactorList[16] */ - {20, 20, 51, 51, 82, 82, 91, 102, /*0 - 7*/}, - /* nFastUnderSpeedDownFactorList[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - /* nFastUnderSkipList[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - /* nSlowOverKneeCnt */ - 14, - /* nSlowOverLumaDiffList[16] */ - {5120, 10240, 15360, 20480, 25600, 30720, 40960, 51200, 71680, 122880, 153600, 153600, 209920, 262144, /*0 - 13*/}, - /* nSlowOverStepFactorList[16] */ - {20, 20, 20, 20, 41, 51, 72, 102, 256, 358, 307, 410, 512, 819, /*0 - 13*/}, - /* nSlowOverSpeedDownFactorList[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 307, 410, /*0 - 13*/}, - /* nSlowOverSkipList[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 13*/}, - /* nSlowUnderKneeCnt */ - 8, - /* nSlowUnderLumaDiffList[16] */ - {5120, 10240, 15360, 20480, 25600, 30720, 40960, 51200, /*0 - 7*/}, - /* nSlowUnderStepFactorList[16] */ - {5, 5, 10, 10, 20, 41, 72, 102, /*0 - 7*/}, - /* nSlowUnderSpeedDownFactorList[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - /* nSlowUnderSkipList[16] */ - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, - }, - /* tSleepWakeUpParam */ - { - /* nNoiseLevel */ - 41, - /* nLinearLumaTh */ - 51, - /* nAeStatsDelayFrame */ - 4, - /* tSleepSetting */ - { - /* nAGain */ - 1024, - /* nDGain */ - 1024, - /* nIspGain */ - 1024, - /* nHcgLcg */ - 1, - /* nShutter */ - 1000, - }, - /* nOverExpCompLumaTh */ - 102400, - /* tOverExpCompLut */ - { - /* nLutNum */ - 5, - /* nLumaSplitList[8] */ - {179200, 220160, 225280, 240640, 244736, /*0 - 4*/}, - /* nCompFactorList[8] */ - {1024, 1208, 1352, 2324, 2560, /*0 - 4*/}, - }, - }, - /* tHistPointCtrlParam */ - { - /* nHistPointLutNum */ - 1, - /* tHistPointCtrlLut[10] */ - { - /* 0 */ - { - /* nLuxStart */ - 102400, - /* nLuxEnd */ - 204800, - /* tHistPointTh */ - { - /* nLumaThList[2] */ - {2048, 4096, /*0 - 1*/}, - /* nPercentThList[2] */ - {51200, 71680, /*0 - 1*/}, - }, - }, - }, - }, - }, - /* nLogLevel */ - 4, - /* nLogTarget */ - 2, -}; - -static AX_ISP_IQ_3DLUT_PARAM_T isp_3dlut_param_sdr = { - /* n3dlutEn */ - 0, - /* nAutoMode */ - 0, - /* nRefMode */ - 1, - /* nConvergeSpeed */ - 5, - /* nGainTrigger */ - 10240, - /* nLuxTrigger */ - 10240, - /* nCctTrigger */ - 50, - /* eLutSizeType */ - AX_ISP_3DLUT_LUT_SIZE_TYPE_17, - /* tManualParam */ - { - { - /* nHue Table[16][24]*/ - { - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - }, - /* nSat Table[16][24]*/ - { - {4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, /*0 - 23*/}, - {8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, /*0 - 23*/}, - {12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, /*0 - 23*/}, - {16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /*0 - 23*/}, - {20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, /*0 - 23*/}, - {24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, /*0 - 23*/}, - {28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, /*0 - 23*/}, - {32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, /*0 - 23*/}, - {36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, /*0 - 23*/}, - {40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, /*0 - 23*/}, - {45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, /*0 - 23*/}, - {49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, /*0 - 23*/}, - {53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, /*0 - 23*/}, - {57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, /*0 - 23*/}, - {61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, /*0 - 23*/}, - {65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, /*0 - 23*/}, - }, - }, - }, - /* tAutoParam */ - { - /* nRefListNum */ - 1, - /* tRefTbl[12] */ - { - /* 0 */ - { - /* nRefStartVal */ - 1, - /* nRefEndVal */ - 1, - /* nCctListNum */ - 1, - /* tCctTbl[16] */ - { - /* 0 */ - { - /* nCctStart */ - 1, - /* nCctEnd */ - 1, - /* tAnchorTbl */ - { - /* nHueTbl[16][24] */ - { - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, - }, - /* nSatTbl[16][24] */ - { - {4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, /*0 - 23*/}, - {8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, /*0 - 23*/}, - {12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, /*0 - 23*/}, - {16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /*0 - 23*/}, - {20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, /*0 - 23*/}, - {24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, /*0 - 23*/}, - {28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, /*0 - 23*/}, - {32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, /*0 - 23*/}, - {36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, /*0 - 23*/}, - {40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, /*0 - 23*/}, - {45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, /*0 - 23*/}, - {49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, /*0 - 23*/}, - {53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, /*0 - 23*/}, - {57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, /*0 - 23*/}, - {61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, /*0 - 23*/}, - {65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, /*0 - 23*/}, - }, - }, - }, - }, - }, - }, - }, -}; - -static AX_ISP_IQ_SCENE_PARAM_T scene_param_sdr = { - /* nAutoMode */ - 0, - /* tManualParam */ - { - /* eTnrWorkMode 0: AX_RAW3DNR_FIRST_3D, 1: AX_RAW3DNR_FIRST_2D, 2: AX_RAW3DNR_ONLY_2D */ - AX_RAW3DNR_ONLY_2D, - /* eAiWorkMode 0: AX_AI_CLOSE 1: AX_AI_SDR_NR 2: AX_AI_SDR_2DNR 3: AX_AI_HDR_NR 4: AX_AI_HDR_CE */ - AX_AI_CLOSE, - }, - /* tAutoParam */ - { - /* nSceneNum */ - 2, - /* nDelta */ - 10, - /* nRefValStart[2] */ - {0, 10240, /*0 - 2*/}, - /* nRefValEnd[2] */ - {10240, 4193280, /*0 - 2*/}, - /* eTnrWorkMode[2] */ - {0, 0, /*0 - 2*/}, - /* eAiWorkMode[2] */ - {1, 0, /*0 - 2*/}, - }, -}; - -static AX_ISP_IQ_LDC_PARAM_T ldc_param_sdr = { - /* nLdcEnable */ - 0, - /* nType */ - 0, - /* tLdcV1Param */ - { - /* bAspect */ - 0, - /* nXRatio */ - 0, - /* nYRatio */ - 0, - /* nXYRatio */ - 0, - /* nCenterXOffset */ - 0, - /* nCenterYOffset */ - 0, - /* nDistortionRatio */ - 0, - /* nSpreadCoef */ - 0, - }, - /* tLdcV2Param */ - { - /* nMatrix[3][3] */ - { - {0, 0, 0, /*0 - 2*/}, - {0, 0, 0, /*0 - 2*/}, - {0, 0, 1, /*0 - 2*/}, - }, - /* nDistortionCoeff[8] */ - {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, - }, -}; - -#endif +#ifndef __OV08A20_SDR_H__ +#define __OV08A20_SDR_H__ + +/******************************************************************** +* Store the default parameters of the sdr mode +* warn: user need to add 'static' when defining global variables. + Limit the scope of the variable to this sensor +*********************************************************************/ + +#include "ax_isp_iq_api.h" +#include "ax_isp_api.h" + + + +static AX_ISP_VERSION_T ax_isp_version_param_sdr = { + /* nIspMajor */ + 3, + /* nIspMinor1 */ + 8, + /* nIspMinor2 */ + 3, + /* szBuildTime */ + "", + + /* szIspVersion */ + "AX650_ISP_V3.8.3", +}; + +static AX_ISP_IQ_SCENE_PARAM_T scene_param_sdr = { + /* nAutoMode */ + 1, + /* tManualParam */ + { + /* nTnrWorkMode */ + 2, + /* nAiWorkMode */ + 1, + }, + /* tAutoParam */ + { + /* nSceneNum */ + 2, + /* nDelta */ + 10, + /* nRefValStart[4] */ + {0, 65536, /*0 - 1*/}, + /* nRefValEnd[4] */ + {65536, 4193280, /*0 - 1*/}, + /* nTnrWorkMode[4] */ + {0, 2, /*0 - 1*/}, + /* nAiWorkMode[4] */ + {0, 1, /*0 - 1*/}, + }, +}; + +static AX_ISP_IQ_AE_PARAM_T ae_param_sdr = { + /* nEnable */ + 1, + /* tExpManual */ + { + /* nIspGain */ + 1024, + /* nAGain */ + 1024, + /* nDgain */ + 1064, + /* nHcgLcg */ + 1, + /* nSnsTotalAGain */ + 1024, + /* nSysTotalGain */ + 1064, + /* nShutter */ + 694, + /* nIrisPwmDuty */ + 0, + /* nHdrRealRatioLtoS */ + 1024, + /* nHdrRealRatioStoVS */ + 1024, + /* nSetPoint */ + 36864, + /* nShortAgain */ + 0, + /* nShortDgain */ + 0, + /* nShortShutter */ + 0, + /* nVsAgain */ + 0, + /* nVsDgain */ + 0, + /* nVsShutter */ + 0, + /* nHdrRatio */ + 1024, + /* nHdrMaxShutterHwLimit */ + 39730, + /* nRealMaxShutter */ + 39690, + }, + /* tAeAlgAuto */ + { + /* nSetPoint */ + 36864, + /* nTolerance */ + 10485760, + /* nAgainLcg2HcgTh */ + 6144, + /* nAgainHcg2LcgTh */ + 1228, + /* nAgainLcg2HcgRatio */ + 4124, + /* nAgainHcg2LcgRatio */ + 4124, + /* nLuxk */ + 45738, + /* nCompensationMode */ + 1, + /* nPreChargeSize */ + 10, + /* nPreCharge[25] */ + {835,1316,1795,2258,2751,3214,3707,4185,4672,5148}, + /* nMaxIspGain */ + 32768, + /* nMinIspGain */ + 1024, + /* nMaxUserDgain */ + 16373, + /* nMinUserDgain */ + 1024, + /* nMaxUserTotalAgain */ + 63922, + /* nMinUserTotalAgain */ + 1024, + /* nMaxUserSysGain */ + 1048576, + /* nMinUserSysGain */ + 1024, + /* nMaxShutter */ + 39690, + /* nMinShutter */ + 34, + /* nPositionWeightMode */ + 1, + /* nRoiStartX */ + 0, + /* nRoiStartY */ + 0, + /* nRoiWidth */ + 0, + /* nRoiHeight */ + 0, + /* nWeightRoi */ + 1024, + /* nWeightBackgnd */ + 1024, + /* nGridWeightRow */ + 15, + /* nGridWeightColumn */ + 17, + /* nGridWeightTable[54][72] */ + { + {139, 175, 215, 255, 293, 327, 354, 371, 377, 371, 354, 327, 293, 255, 215, 175, 139, /*0 - 16*/}, + {181, 228, 280, 332, 383, 427, 461, 484, 491, 484, 461, 427, 383, 332, 280, 228, 181, /*0 - 16*/}, + {226, 286, 350, 416, 479, 534, 578, 605, 615, 605, 578, 534, 479, 416, 350, 286, 226, /*0 - 16*/}, + {272, 344, 421, 500, 575, 642, 694, 727, 739, 727, 694, 642, 575, 500, 421, 344, 272, /*0 - 16*/}, + {313, 396, 486, 577, 664, 740, 801, 839, 852, 839, 801, 740, 664, 577, 486, 396, 313, /*0 - 16*/}, + {347, 439, 538, 639, 735, 820, 887, 929, 944, 929, 887, 820, 735, 639, 538, 439, 347, /*0 - 16*/}, + {369, 467, 572, 679, 781, 872, 943, 988, 1003, 988, 943, 872, 781, 679, 572, 467, 369, /*0 - 16*/}, + {377, 476, 583, 693, 797, 890, 962, 1008, 1024, 1008, 962, 890, 797, 693, 583, 476, 377, /*0 - 16*/}, + {369, 467, 572, 679, 781, 872, 943, 988, 1003, 988, 943, 872, 781, 679, 572, 467, 369, /*0 - 16*/}, + {347, 439, 538, 639, 735, 820, 887, 929, 944, 929, 887, 820, 735, 639, 538, 439, 347, /*0 - 16*/}, + {313, 396, 486, 577, 664, 740, 801, 839, 852, 839, 801, 740, 664, 577, 486, 396, 313, /*0 - 16*/}, + {272, 344, 421, 500, 575, 642, 694, 727, 739, 727, 694, 642, 575, 500, 421, 344, 272, /*0 - 16*/}, + {226, 286, 350, 416, 479, 534, 578, 605, 615, 605, 578, 534, 479, 416, 350, 286, 226, /*0 - 16*/}, + {181, 228, 280, 332, 383, 427, 461, 484, 491, 484, 461, 427, 383, 332, 280, 228, 181, /*0 - 16*/}, + {139, 175, 215, 255, 293, 327, 354, 371, 377, 371, 354, 327, 293, 255, 215, 175, 139, /*0 - 16*/}, + }, + /* tAntiFlickerParam */ + { + /* nEnable */ + 1, + /* nFlickerPeriod */ + 0, + /* nAntiFlickerTolerance */ + 400, + /* nOverExpMode */ + 1, + /* nUnderExpMode */ + 1, + }, + /* nSetPointMode */ + 2, + /* nStrategyMode */ + 0, + /* tAeRouteParam */ + { + /* nTableNum */ + 1, + /* nUsedTableId */ + 0, + /* tRouteTable[8] */ + { + /* 0 */ + { + /* sTableName[32] */ + "DefaultAeRoute", + /* nRouteCurveNum */ + 5, + /* tRouteCurveList[16] */ + { + /* 0 */ + { + /* nIntergrationTime */ + 120, + /* nGain */ + 1024, + /* nIncrementPriority */ + 0, + }, + /* 1 */ + { + /* nIntergrationTime */ + 10000, + /* nGain */ + 1024, + /* nIncrementPriority */ + 0, + }, + /* 2 */ + { + /* nIntergrationTime */ + 30000, + /* nGain */ + 6144, + /* nIncrementPriority */ + 0, + }, + /* 3 */ + { + /* nIntergrationTime */ + 30000, + /* nGain */ + 204800, + /* nIncrementPriority */ + 0, + }, + /* 4 */ + { + /* nIntergrationTime */ + 39500, + /* nGain */ + 225280, + /* nIncrementPriority */ + 0, + }, + }, + }, + }, + }, + /* tAeSetPointCurve */ + { + /* nSize */ + 7, + /* nRefList[10] */ + {10, 20, 51, 102, 512, 1024, 153600, /*0 - 6*/}, + /* nSetPointList[10] */ + {8192, 15360, 20480, 23552, 28672, 31744, 36864, /*0 - 6*/}, + }, + /* tAeHdrRatio */ + { + /* nHdrMode */ + 0, + /* tRatioStrategyParam */ + { + /* nMinRatio */ + 5120, + /* nMaxRatio */ + 16384, + /* nShortNonSatAreaPercent */ + 103284736, + /* nShortSatLuma */ + 153600, + /* nTolerance */ + 1048576, + /* nConvergeCntFrameNum */ + 3, + /* nDampRatio */ + 870, + }, + /* nFixedHdrRatio */ + 1024, + }, + /* nMultiCamSyncMode */ + 0, + /* nMultiCamSyncRatio */ + 1048576, + /* tSlowShutterParam */ + { + /* nFrameRateMode */ + 0, + /* nFpsIncreaseDelayFrame */ + 0, + }, + /* tIrisParam */ + { + /* nIrisType */ + 0, + /* tDcIrisParam */ + { + /* nBigStepFactor */ + 104858, + /* nSmallStepFactor */ + 10486, + /* nLumaDiffOverThresh */ + 35840, + /* nLumaDiffUnderThresh */ + 35840, + /* nLumaSpeedThresh */ + 205, + /* nSpeedDownFactor */ + 209715, + /* nMinUserPwmDuty */ + 30720, + /* nMaxUserPwmDuty */ + 66560, + /* nOpenPwmDuty */ + 61440, + /* nConvergeLumaDiffTolerance */ + 52429, + /* nConvergeFrameCntThresh */ + 10, + }, + }, + /* tLumaWeightParam */ + { + /* nEnable */ + 0, + /* nLumaWeightNum */ + 16, + /* nLumaSplitList[64] */ + {0, 16384, 32768, 49152, 65535, 81920, 98304, 114688, 131072, 147456, 163840, 180224, 196608, 212992, 229376, 245760, /*0 - 15*/}, + /* nWeightList[64] */ + {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 15*/}, + }, + /* tTimeSmoothParam */ + { + /* tStateMachineParam */ + { + /* nToFastLumaThOver */ + 1536, + /* nToFastLumaThUnder */ + 819, + /* nToSlowLumaThOver */ + 102, + /* nToSlowLumaThUnder */ + 102, + /* nToSlowFrameTh */ + 8, + /* nToConvergedFrameTh */ + 2, + }, + /* tConvergeSpeedParam */ + { + /* nFastOverKneeCnt */ + 14, + /* nFastOverLumaDiffList[16] */ + {5120, 10240, 15360, 20480, 25600, 30720, 40960, 51200, 71680, 92160, 112640, 153600, 209920, 262144, /*0 - 13*/}, + /* nFastOverStepFactorList[16] */ + {10, 51, 51, 82, 82, 82, 102, 102, 154, 154, 184, 184, 256, 256, /*0 - 13*/}, + /* nFastOverSpeedDownFactorList[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, /*0 - 13*/}, + /* nFastOverSkipList[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 13*/}, + /* nFastUnderKneeCnt */ + 11, + /* nFastUnderLumaDiffList[16] */ + {5120, 10240, 15360, 20480, 25600, 30720, 35840, 40960, 51200, 153600, 262144, /*0 - 10*/}, + /* nFastUnderStepFactorList[16] */ + {10, 51, 51, 51, 51, 51, 102, 102, 154, 154, 154, /*0 - 10*/}, + /* nFastUnderSpeedDownFactorList[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + /* nFastUnderSkipList[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + /* nSlowOverKneeCnt */ + 14, + /* nSlowOverLumaDiffList[16] */ + {5120, 10240, 15360, 20480, 25600, 30720, 40960, 51200, 81920, 92160, 112640, 153600, 209920, 262144, /*0 - 13*/}, + /* nSlowOverStepFactorList[16] */ + {10, 51, 51, 82, 82, 102, 102, 154, 154, 154, 154, 174, 174, 174, /*0 - 13*/}, + /* nSlowOverSpeedDownFactorList[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 13*/}, + /* nSlowOverSkipList[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 13*/}, + /* nSlowUnderKneeCnt */ + 11, + /* nSlowUnderLumaDiffList[16] */ + {5120, 10240, 15360, 20480, 25600, 30720, 35840, 40960, 51200, 153600, 262144, /*0 - 10*/}, + /* nSlowUnderStepFactorList[16] */ + {10, 51, 51, 82, 82, 102, 102, 102, 154, 154, 154, /*0 - 10*/}, + /* nSlowUnderSpeedDownFactorList[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + /* nSlowUnderSkipList[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + /* tSleepWakeUpParam */ + { + /* nNoiseLevel */ + 41, + /* nLinearLumaTh */ + 51, + /* nAeStatsDelayFrame */ + 4, + /* tSleepSetting */ + { + /* nAGain */ + 1024, + /* nDGain */ + 1024, + /* nIspGain */ + 1024, + /* nHcgLcg */ + 1, + /* nShutter */ + 1000, + }, + /* nOverExpCompLumaTh */ + 102400, + /* tOverExpCompLut */ + { + /* nLutNum */ + 5, + /* nLumaSplitList[8] */ + {179200, 220160, 225280, 240640, 244736, 0, 0, 0, /*0 - 7*/}, + /* nCompFactorList[8] */ + {1024, 1208, 1352, 2324, 2560, 0, 0, 0, /*0 - 7*/}, + }, + }, + /* tHistPointCtrlParam */ + { + /* nHistPointLutNum */ + 1, + /* tHistPointCtrlLut[10] */ + { + /* 0 */ + { + /* nLuxStart */ + 102400, + /* nLuxEnd */ + 204800, + /* tHistPointTh */ + { + /* nLumaThList[2] */ + {0, 0, /*0 - 1*/}, + /* nPercentThList[2] */ + {102400, 102400, /*0 - 1*/}, + }, + }, + }, + }, + }, + /* nLogLevel */ + 4, + /* nLogTarget */ + 2, +}; + +static AX_ISP_IQ_AWB_PARAM_T awb_param_sdr = { + /* nEnable */ + 1, + /* tManualParam */ + { + /* nManualMode */ + 0, + /* tGain */ + { + /* nGainR */ + 553, + /* nGainGr */ + 256, + /* nGainGb */ + 256, + /* nGainB */ + 469, + }, + /* tManualLightSource */ + { + /* nLightSourceIndex */ + 0, + /* tLightSource[15] */ + { + /* 0 */ + { + /* szName[32] */ + "Shade", + /* nColorTemperature */ + 7500, + /* nGreenShift */ + 0, + }, + /* 1 */ + { + /* szName[32] */ + "Day", + /* nColorTemperature */ + 6500, + /* nGreenShift */ + 0, + }, + /* 2 */ + { + /* szName[32] */ + "Cloudy", + /* nColorTemperature */ + 5000, + /* nGreenShift */ + 0, + }, + /* 3 */ + { + /* szName[32] */ + "Flourescent", + /* nColorTemperature */ + 5000, + /* nGreenShift */ + 0, + }, + /* 4 */ + { + /* szName[32] */ + "Sunset", + /* nColorTemperature */ + 3500, + /* nGreenShift */ + 0, + }, + /* 5 */ + { + /* szName[32] */ + "Incandescent", + /* nColorTemperature */ + 2800, + /* nGreenShift */ + 0, + }, + /* 6 */ + { + /* szName[32] */ + "Candle", + /* nColorTemperature */ + 2000, + /* nGreenShift */ + 0, + }, + /* 7 */ + { + /* szName[32] */ + "Flash", + /* nColorTemperature */ + 3500, + /* nGreenShift */ + 0, + }, + /* 8 */ + { + /* szName[32] */ + "UserDefined-1", + /* nColorTemperature */ + 2800, + /* nGreenShift */ + 0, + }, + /* 9 */ + { + /* szName[32] */ + "UserDefined-2", + /* nColorTemperature */ + 2000, + /* nGreenShift */ + 0, + }, + /* 10 */ + { + /* szName[32] */ + "UserDefined-3", + /* nColorTemperature */ + 5000, + /* nGreenShift */ + 0, + }, + /* 11 */ + { + /* szName[32] */ + "UserDefined-4", + /* nColorTemperature */ + 5000, + /* nGreenShift */ + 0, + }, + /* 12 */ + { + /* szName[32] */ + "UserDefined-5", + /* nColorTemperature */ + 5000, + /* nGreenShift */ + 0, + }, + /* 13 */ + { + /* szName[32] */ + "UserDefined-6", + /* nColorTemperature */ + 5000, + /* nGreenShift */ + 0, + }, + /* 14 */ + { + /* szName[32] */ + "UserDefined-7", + /* nColorTemperature */ + 5000, + /* nGreenShift */ + 0, + }, + }, + }, + }, + /* tAutoParam */ + { + /* tCenterPnt */ + { + /* nRg */ + 1458623, + /* nBg */ + 1352713, + }, + /* nCenterPntRadius */ + 1204401, + /* nLowCut */ + 0, + /* nHighCut */ + 0, + /* nCctMax */ + 12000, + /* nCctMin */ + 1100, + /* nPartCtrlPntNum */ + 35, + /* nCtrlPntNum */ + 35, + /* nCtrlSegKbNum */ + 34, + /* nCctList[512] */ + { + 1100, 1264, 1428, 1593, 1757, 1921, 2086, 2250, 2414, 2579, 2743, 2907, 3072, 3236, 3400, 3565, 3729, 3991, 4327, 4662, 4998, 5706, 6415, 6907, 7370, 7833, 8296, 8759, 9222, 9685, 10148, 10611, /* 0 - 31*/ + 11074, 11537, 12000, /*32 - 34*/ + }, + /* tChordKB */ + { + /* nK */ + -988, + /* nB */ + 1321, + }, + /* tChordPntList[512] */ + { + /* 0 */ + { + /* nRg */ + 1222063, + /* nBg */ + 171767, + }, + /* 1 */ + { + /* nRg */ + 1188246, + /* nBg */ + 204451, + }, + /* 2 */ + { + /* nRg */ + 1155751, + /* nBg */ + 235846, + }, + /* 3 */ + { + /* nRg */ + 1124430, + /* nBg */ + 266097, + }, + /* 4 */ + { + /* nRg */ + 1094168, + /* nBg */ + 295342, + }, + /* 5 */ + { + /* nRg */ + 1064829, + /* nBg */ + 323685, + }, + /* 6 */ + { + /* nRg */ + 1036329, + /* nBg */ + 351221, + }, + /* 7 */ + { + /* nRg */ + 1008552, + /* nBg */ + 378064, + }, + /* 8 */ + { + /* nRg */ + 981415, + /* nBg */ + 404278, + }, + /* 9 */ + { + /* nRg */ + 954844, + /* nBg */ + 429948, + }, + /* 10 */ + { + /* nRg */ + 928766, + /* nBg */ + 455145, + }, + /* 11 */ + { + /* nRg */ + 903097, + /* nBg */ + 479944, + }, + /* 12 */ + { + /* nRg */ + 877773, + /* nBg */ + 504407, + }, + /* 13 */ + { + /* nRg */ + 852744, + /* nBg */ + 528598, + }, + /* 14 */ + { + /* nRg */ + 827935, + /* nBg */ + 552558, + }, + /* 15 */ + { + /* nRg */ + 803293, + /* nBg */ + 576371, + }, + /* 16 */ + { + /* nRg */ + 778767, + /* nBg */ + 600069, + }, + /* 17 */ + { + /* nRg */ + 754293, + /* nBg */ + 623714, + }, + /* 18 */ + { + /* nRg */ + 729819, + /* nBg */ + 647359, + }, + /* 19 */ + { + /* nRg */ + 705293, + /* nBg */ + 671057, + }, + /* 20 */ + { + /* nRg */ + 680652, + /* nBg */ + 694860, + }, + /* 21 */ + { + /* nRg */ + 655842, + /* nBg */ + 718830, + }, + /* 22 */ + { + /* nRg */ + 630813, + /* nBg */ + 743010, + }, + /* 23 */ + { + /* nRg */ + 605490, + /* nBg */ + 767474, + }, + /* 24 */ + { + /* nRg */ + 579821, + /* nBg */ + 792273, + }, + /* 25 */ + { + /* nRg */ + 553742, + /* nBg */ + 817480, + }, + /* 26 */ + { + /* nRg */ + 527172, + /* nBg */ + 843149, + }, + /* 27 */ + { + /* nRg */ + 500034, + /* nBg */ + 869364, + }, + /* 28 */ + { + /* nRg */ + 472258, + /* nBg */ + 896197, + }, + /* 29 */ + { + /* nRg */ + 443757, + /* nBg */ + 923733, + }, + /* 30 */ + { + /* nRg */ + 414418, + /* nBg */ + 952076, + }, + /* 31 */ + { + /* nRg */ + 384156, + /* nBg */ + 981320, + }, + /* 32 */ + { + /* nRg */ + 352835, + /* nBg */ + 1011572, + }, + /* 33 */ + { + /* nRg */ + 320340, + /* nBg */ + 1042977, + }, + /* 34 */ + { + /* nRg */ + 286523, + /* nBg */ + 1075650, + }, + }, + /* tArcPointList[512] */ + { + /* 0 */ + { + /* nRg */ + 1238536, + /* nBg */ + 254028, + }, + /* 1 */ + { + /* nRg */ + 1200053, + /* nBg */ + 254605, + }, + /* 2 */ + { + /* nRg */ + 1161361, + /* nBg */ + 256534, + }, + /* 3 */ + { + /* nRg */ + 1122511, + /* nBg */ + 259837, + }, + /* 4 */ + { + /* nRg */ + 1083546, + /* nBg */ + 264524, + }, + /* 5 */ + { + /* nRg */ + 1044518, + /* nBg */ + 270596, + }, + /* 6 */ + { + /* nRg */ + 1005480, + /* nBg */ + 278072, + }, + /* 7 */ + { + /* nRg */ + 966483, + /* nBg */ + 286964, + }, + /* 8 */ + { + /* nRg */ + 927570, + /* nBg */ + 297261, + }, + /* 9 */ + { + /* nRg */ + 888804, + /* nBg */ + 308973, + }, + /* 10 */ + { + /* nRg */ + 850227, + /* nBg */ + 322112, + }, + /* 11 */ + { + /* nRg */ + 811902, + /* nBg */ + 336677, + }, + /* 12 */ + { + /* nRg */ + 778180, + /* nBg */ + 358949, + }, + /* 13 */ + { + /* nRg */ + 745212, + /* nBg */ + 382332, + }, + /* 14 */ + { + /* nRg */ + 713063, + /* nBg */ + 406816, + }, + /* 15 */ + { + /* nRg */ + 681742, + /* nBg */ + 432370, + }, + /* 16 */ + { + /* nRg */ + 651302, + /* nBg */ + 458951, + }, + /* 17 */ + { + /* nRg */ + 621764, + /* nBg */ + 486539, + }, + /* 18 */ + { + /* nRg */ + 593179, + /* nBg */ + 515102, + }, + /* 19 */ + { + /* nRg */ + 565560, + /* nBg */ + 544620, + }, + /* 20 */ + { + /* nRg */ + 538947, + /* nBg */ + 575039, + }, + /* 21 */ + { + /* nRg */ + 513372, + /* nBg */ + 606329, + }, + /* 22 */ + { + /* nRg */ + 488867, + /* nBg */ + 638467, + }, + /* 23 */ + { + /* nRg */ + 465442, + /* nBg */ + 671403, + }, + /* 24 */ + { + /* nRg */ + 443149, + /* nBg */ + 705104, + }, + /* 25 */ + { + /* nRg */ + 421989, + /* nBg */ + 739550, + }, + /* 26 */ + { + /* nRg */ + 402003, + /* nBg */ + 774667, + }, + /* 27 */ + { + /* nRg */ + 383202, + /* nBg */ + 810444, + }, + /* 28 */ + { + /* nRg */ + 365617, + /* nBg */ + 846840, + }, + /* 29 */ + { + /* nRg */ + 349260, + /* nBg */ + 883792, + }, + /* 30 */ + { + /* nRg */ + 334150, + /* nBg */ + 921279, + }, + /* 31 */ + { + /* nRg */ + 320309, + /* nBg */ + 959248, + }, + /* 32 */ + { + /* nRg */ + 307747, + /* nBg */ + 997668, + }, + /* 33 */ + { + /* nRg */ + 296485, + /* nBg */ + 1036475, + }, + /* 34 */ + { + /* nRg */ + 286523, + /* nBg */ + 1075650, + }, + }, + /* tRadiusLineList[512] */ + { + /* 0 */ + { + /* nK */ + 5112, + /* nB */ + -5789, + }, + /* 1 */ + { + /* nK */ + 4349, + /* nB */ + -4727, + }, + /* 2 */ + { + /* nK */ + 3776, + /* nB */ + -3931, + }, + /* 3 */ + { + /* nK */ + 3330, + /* nB */ + -3309, + }, + /* 4 */ + { + /* nK */ + 2971, + /* nB */ + -2811, + }, + /* 5 */ + { + /* nK */ + 2676, + /* nB */ + -2400, + }, + /* 6 */ + { + /* nK */ + 2428, + /* nB */ + -2056, + }, + /* 7 */ + { + /* nK */ + 2218, + /* nB */ + -1763, + }, + /* 8 */ + { + /* nK */ + 2035, + /* nB */ + -1509, + }, + /* 9 */ + { + /* nK */ + 1876, + /* nB */ + -1287, + }, + /* 10 */ + { + /* nK */ + 1735, + /* nB */ + -1091, + }, + /* 11 */ + { + /* nK */ + 1609, + /* nB */ + -916, + }, + /* 12 */ + { + /* nK */ + 1496, + /* nB */ + -758, + }, + /* 13 */ + { + /* nK */ + 1393, + /* nB */ + -616, + }, + /* 14 */ + { + /* nK */ + 1299, + /* nB */ + -485, + }, + /* 15 */ + { + /* nK */ + 1213, + /* nB */ + -365, + }, + /* 16 */ + { + /* nK */ + 1134, + /* nB */ + -255, + }, + /* 17 */ + { + /* nK */ + 1060, + /* nB */ + -152, + }, + /* 18 */ + { + /* nK */ + 991, + /* nB */ + -57, + }, + /* 19 */ + { + /* nK */ + 927, + /* nB */ + 32, + }, + /* 20 */ + { + /* nK */ + 866, + /* nB */ + 117, + }, + /* 21 */ + { + /* nK */ + 809, + /* nB */ + 196, + }, + /* 22 */ + { + /* nK */ + 754, + /* nB */ + 272, + }, + /* 23 */ + { + /* nK */ + 702, + /* nB */ + 344, + }, + /* 24 */ + { + /* nK */ + 653, + /* nB */ + 413, + }, + /* 25 */ + { + /* nK */ + 606, + /* nB */ + 478, + }, + /* 26 */ + { + /* nK */ + 560, + /* nB */ + 542, + }, + /* 27 */ + { + /* nK */ + 516, + /* nB */ + 603, + }, + /* 28 */ + { + /* nK */ + 474, + /* nB */ + 662, + }, + /* 29 */ + { + /* nK */ + 433, + /* nB */ + 719, + }, + /* 30 */ + { + /* nK */ + 393, + /* nB */ + 774, + }, + /* 31 */ + { + /* nK */ + 354, + /* nB */ + 829, + }, + /* 32 */ + { + /* nK */ + 316, + /* nB */ + 882, + }, + /* 33 */ + { + /* nK */ + 279, + /* nB */ + 933, + }, + /* 34 */ + { + /* nK */ + 242, + /* nB */ + 984, + }, + }, + /* tInLeftBorderPntList[512] */ + { + /* 0 */ + { + /* nRg */ + 1220008, + /* nBg */ + 161491, + }, + /* 1 */ + { + /* nRg */ + 1178421, + /* nBg */ + 162749, + }, + /* 2 */ + { + /* nRg */ + 1136656, + /* nBg */ + 165455, + }, + /* 3 */ + { + /* nRg */ + 1094766, + /* nBg */ + 169639, + }, + /* 4 */ + { + /* nRg */ + 1052791, + /* nBg */ + 175301, + }, + /* 5 */ + { + /* nRg */ + 1010785, + /* nBg */ + 182463, + }, + /* 6 */ + { + /* nRg */ + 968811, + /* nBg */ + 191113, + }, + /* 7 */ + { + /* nRg */ + 926920, + /* nBg */ + 201285, + }, + /* 8 */ + { + /* nRg */ + 885155, + /* nBg */ + 212955, + }, + /* 9 */ + { + /* nRg */ + 843590, + /* nBg */ + 226146, + }, + /* 10 */ + { + /* nRg */ + 802255, + /* nBg */ + 240847, + }, + /* 11 */ + { + /* nRg */ + 761224, + /* nBg */ + 257058, + }, + /* 12 */ + { + /* nRg */ + 724860, + /* nBg */ + 281081, + }, + /* 13 */ + { + /* nRg */ + 689313, + /* nBg */ + 306300, + }, + /* 14 */ + { + /* nRg */ + 654636, + /* nBg */ + 332703, + }, + /* 15 */ + { + /* nRg */ + 620872, + /* nBg */ + 360249, + }, + /* 16 */ + { + /* nRg */ + 588041, + /* nBg */ + 388917, + }, + /* 17 */ + { + /* nRg */ + 556196, + /* nBg */ + 418675, + }, + /* 18 */ + { + /* nRg */ + 525368, + /* nBg */ + 449472, + }, + /* 19 */ + { + /* nRg */ + 495588, + /* nBg */ + 481296, + }, + /* 20 */ + { + /* nRg */ + 466889, + /* nBg */ + 514096, + }, + /* 21 */ + { + /* nRg */ + 439311, + /* nBg */ + 547850, + }, + /* 22 */ + { + /* nRg */ + 412877, + /* nBg */ + 582494, + }, + /* 23 */ + { + /* nRg */ + 387627, + /* nBg */ + 618020, + }, + /* 24 */ + { + /* nRg */ + 363583, + /* nBg */ + 654364, + }, + /* 25 */ + { + /* nRg */ + 340766, + /* nBg */ + 691504, + }, + /* 26 */ + { + /* nRg */ + 319208, + /* nBg */ + 729379, + }, + /* 27 */ + { + /* nRg */ + 298939, + /* nBg */ + 767956, + }, + /* 28 */ + { + /* nRg */ + 279970, + /* nBg */ + 807194, + }, + /* 29 */ + { + /* nRg */ + 262333, + /* nBg */ + 847050, + }, + /* 30 */ + { + /* nRg */ + 246038, + /* nBg */ + 887473, + }, + /* 31 */ + { + /* nRg */ + 231106, + /* nBg */ + 928420, + }, + /* 32 */ + { + /* nRg */ + 217569, + /* nBg */ + 969838, + }, + /* 33 */ + { + /* nRg */ + 205416, + /* nBg */ + 1011698, + }, + /* 34 */ + { + /* nRg */ + 194679, + /* nBg */ + 1053934, + }, + }, + /* tInRightBorderPntList[512] */ + { + /* 0 */ + { + /* nRg */ + 1255020, + /* nBg */ + 336278, + }, + /* 1 */ + { + /* nRg */ + 1219284, + /* nBg */ + 336257, + }, + /* 2 */ + { + /* nRg */ + 1183318, + /* nBg */ + 337495, + }, + /* 3 */ + { + /* nRg */ + 1147163, + /* nBg */ + 340022, + }, + /* 4 */ + { + /* nRg */ + 1110882, + /* nBg */ + 343828, + }, + /* 5 */ + { + /* nRg */ + 1074497, + /* nBg */ + 348945, + }, + /* 6 */ + { + /* nRg */ + 1038069, + /* nBg */ + 355373, + }, + /* 7 */ + { + /* nRg */ + 1001652, + /* nBg */ + 363122, + }, + /* 8 */ + { + /* nRg */ + 965277, + /* nBg */ + 372192, + }, + /* 9 */ + { + /* nRg */ + 929007, + /* nBg */ + 382604, + }, + /* 10 */ + { + /* nRg */ + 892873, + /* nBg */ + 394359, + }, + /* 11 */ + { + /* nRg */ + 856949, + /* nBg */ + 407445, + }, + /* 12 */ + { + /* nRg */ + 825565, + /* nBg */ + 428165, + }, + /* 13 */ + { + /* nRg */ + 794904, + /* nBg */ + 449923, + }, + /* 14 */ + { + /* nRg */ + 764989, + /* nBg */ + 472698, + }, + /* 15 */ + { + /* nRg */ + 735849, + /* nBg */ + 496469, + }, + /* 16 */ + { + /* nRg */ + 707527, + /* nBg */ + 521205, + }, + /* 17 */ + { + /* nRg */ + 680054, + /* nBg */ + 546874, + }, + /* 18 */ + { + /* nRg */ + 653452, + /* nBg */ + 573445, + }, + /* 19 */ + { + /* nRg */ + 627761, + /* nBg */ + 600897, + }, + /* 20 */ + { + /* nRg */ + 603005, + /* nBg */ + 629198, + }, + /* 21 */ + { + /* nRg */ + 579212, + /* nBg */ + 658317, + }, + /* 22 */ + { + /* nRg */ + 556406, + /* nBg */ + 688212, + }, + /* 23 */ + { + /* nRg */ + 534616, + /* nBg */ + 718851, + }, + /* 24 */ + { + /* nRg */ + 513876, + /* nBg */ + 750214, + }, + /* 25 */ + { + /* nRg */ + 494194, + /* nBg */ + 782248, + }, + /* 26 */ + { + /* nRg */ + 475592, + /* nBg */ + 814932, + }, + /* 27 */ + { + /* nRg */ + 458102, + /* nBg */ + 848214, + }, + /* 28 */ + { + /* nRg */ + 441744, + /* nBg */ + 882073, + }, + /* 29 */ + { + /* nRg */ + 426519, + /* nBg */ + 916455, + }, + /* 30 */ + { + /* nRg */ + 412468, + /* nBg */ + 951331, + }, + /* 31 */ + { + /* nRg */ + 399591, + /* nBg */ + 986658, + }, + /* 32 */ + { + /* nRg */ + 387900, + /* nBg */ + 1022393, + }, + /* 33 */ + { + /* nRg */ + 377424, + /* nBg */ + 1058506, + }, + /* 34 */ + { + /* nRg */ + 368155, + /* nBg */ + 1094944, + }, + }, + /* tOutLeftBorderPntList[512] */ + { + /* 0 */ + { + /* nRg */ + 1207645, + /* nBg */ + 99803, + }, + /* 1 */ + { + /* nRg */ + 1164003, + /* nBg */ + 101502, + }, + /* 2 */ + { + /* nRg */ + 1120194, + /* nBg */ + 104732, + }, + /* 3 */ + { + /* nRg */ + 1076269, + /* nBg */ + 109503, + }, + /* 4 */ + { + /* nRg */ + 1032292, + /* nBg */ + 115826, + }, + /* 5 */ + { + /* nRg */ + 988304, + /* nBg */ + 123701, + }, + /* 6 */ + { + /* nRg */ + 944369, + /* nBg */ + 133148, + }, + /* 7 */ + { + /* nRg */ + 900538, + /* nBg */ + 144158, + }, + /* 8 */ + { + /* nRg */ + 856875, + /* nBg */ + 156752, + }, + /* 9 */ + { + /* nRg */ + 813433, + /* nBg */ + 170928, + }, + /* 10 */ + { + /* nRg */ + 770273, + /* nBg */ + 186667, + }, + /* 11 */ + { + /* nRg */ + 727439, + /* nBg */ + 203990, + }, + /* 12 */ + { + /* nRg */ + 689313, + /* nBg */ + 229166, + }, + /* 13 */ + { + /* nRg */ + 652046, + /* nBg */ + 255611, + }, + /* 14 */ + { + /* nRg */ + 615692, + /* nBg */ + 283294, + }, + /* 15 */ + { + /* nRg */ + 580282, + /* nBg */ + 312172, + }, + /* 16 */ + { + /* nRg */ + 545868, + /* nBg */ + 342234, + }, + /* 17 */ + { + /* nRg */ + 512481, + /* nBg */ + 373429, + }, + /* 18 */ + { + /* nRg */ + 480153, + /* nBg */ + 405726, + }, + /* 19 */ + { + /* nRg */ + 448937, + /* nBg */ + 439081, + }, + /* 20 */ + { + /* nRg */ + 418843, + /* nBg */ + 473474, + }, + /* 21 */ + { + /* nRg */ + 389934, + /* nBg */ + 508853, + }, + /* 22 */ + { + /* nRg */ + 362220, + /* nBg */ + 545186, + }, + /* 23 */ + { + /* nRg */ + 335744, + /* nBg */ + 582432, + }, + /* 24 */ + { + /* nRg */ + 310536, + /* nBg */ + 620537, + }, + /* 25 */ + { + /* nRg */ + 286618, + /* nBg */ + 659470, + }, + /* 26 */ + { + /* nRg */ + 264010, + /* nBg */ + 699180, + }, + /* 27 */ + { + /* nRg */ + 242756, + /* nBg */ + 739634, + }, + /* 28 */ + { + /* nRg */ + 222875, + /* nBg */ + 780770, + }, + /* 29 */ + { + /* nRg */ + 204378, + /* nBg */ + 822555, + }, + /* 30 */ + { + /* nRg */ + 187297, + /* nBg */ + 864939, + }, + /* 31 */ + { + /* nRg */ + 171652, + /* nBg */ + 907868, + }, + /* 32 */ + { + /* nRg */ + 157444, + /* nBg */ + 951300, + }, + /* 33 */ + { + /* nRg */ + 144714, + /* nBg */ + 995183, + }, + /* 34 */ + { + /* nRg */ + 133452, + /* nBg */ + 1039464, + }, + }, + /* tOutRightBorderPntList[512] */ + { + /* 0 */ + { + /* nRg */ + 1267372, + /* nBg */ + 397966, + }, + /* 1 */ + { + /* nRg */ + 1233702, + /* nBg */ + 397494, + }, + /* 2 */ + { + /* nRg */ + 1199781, + /* nBg */ + 398218, + }, + /* 3 */ + { + /* nRg */ + 1165660, + /* nBg */ + 400158, + }, + /* 4 */ + { + /* nRg */ + 1131382, + /* nBg */ + 403314, + }, + /* 5 */ + { + /* nRg */ + 1096989, + /* nBg */ + 407697, + }, + /* 6 */ + { + /* nRg */ + 1062522, + /* nBg */ + 413338, + }, + /* 7 */ + { + /* nRg */ + 1028024, + /* nBg */ + 420238, + }, + /* 8 */ + { + /* nRg */ + 993557, + /* nBg */ + 428396, + }, + /* 9 */ + { + /* nRg */ + 959153, + /* nBg */ + 437822, + }, + /* 10 */ + { + /* nRg */ + 924855, + /* nBg */ + 448528, + }, + /* 11 */ + { + /* nRg */ + 890723, + /* nBg */ + 460514, + }, + /* 12 */ + { + /* nRg */ + 861112, + /* nBg */ + 480070, + }, + /* 13 */ + { + /* nRg */ + 832171, + /* nBg */ + 500611, + }, + /* 14 */ + { + /* nRg */ + 803933, + /* nBg */ + 522107, + }, + /* 15 */ + { + /* nRg */ + 776429, + /* nBg */ + 544546, + }, + /* 16 */ + { + /* nRg */ + 749700, + /* nBg */ + 567888, + }, + /* 17 */ + { + /* nRg */ + 723769, + /* nBg */ + 592120, + }, + /* 18 */ + { + /* nRg */ + 698666, + /* nBg */ + 617202, + }, + /* 19 */ + { + /* nRg */ + 674413, + /* nBg */ + 643113, + }, + /* 20 */ + { + /* nRg */ + 651050, + /* nBg */ + 669820, + }, + /* 21 */ + { + /* nRg */ + 628590, + /* nBg */ + 697303, + }, + /* 22 */ + { + /* nRg */ + 607063, + /* nBg */ + 725520, + }, + /* 23 */ + { + /* nRg */ + 586500, + /* nBg */ + 754450, + }, + /* 24 */ + { + /* nRg */ + 566923, + /* nBg */ + 784041, + }, + /* 25 */ + { + /* nRg */ + 548342, + /* nBg */ + 814282, + }, + /* 26 */ + { + /* nRg */ + 530789, + /* nBg */ + 845131, + }, + /* 27 */ + { + /* nRg */ + 514285, + /* nBg */ + 876547, + }, + /* 28 */ + { + /* nRg */ + 498839, + /* nBg */ + 908497, + }, + /* 29 */ + { + /* nRg */ + 484474, + /* nBg */ + 940950, + }, + /* 30 */ + { + /* nRg */ + 471209, + /* nBg */ + 973865, + }, + /* 31 */ + { + /* nRg */ + 459046, + /* nBg */ + 1007210, + }, + /* 32 */ + { + /* nRg */ + 448025, + /* nBg */ + 1040942, + }, + /* 33 */ + { + /* nRg */ + 438127, + /* nBg */ + 1075021, + }, + /* 34 */ + { + /* nRg */ + 429392, + /* nBg */ + 1109414, + }, + }, + /* nIllumNum */ + 5, + /* tIllumList[16] */ + { + /* 0 */ + { + /* szName[32] */ + "A", + /* nCct */ + 2800, + /* nRadius */ + 0, + /* tCoord */ + { + /* nRg */ + 844104, + /* nBg */ + 338690, + }, + }, + /* 1 */ + { + /* szName[32] */ + "TL84", + /* nCct */ + 3800, + /* nRadius */ + 0, + /* tCoord */ + { + /* nRg */ + 597688, + /* nBg */ + 426770, + }, + }, + /* 2 */ + { + /* szName[32] */ + "D50", + /* nCct */ + 5000, + /* nRadius */ + 0, + /* tCoord */ + { + /* nRg */ + 570425, + /* nBg */ + 601883, + }, + }, + /* 3 */ + { + /* szName[32] */ + "D65", + /* nCct */ + 6500, + /* nRadius */ + 0, + /* tCoord */ + { + /* nRg */ + 470811, + /* nBg */ + 631243, + }, + }, + /* 4 */ + { + /* szName[32] */ + "D75", + /* nCct */ + 7500, + /* nRadius */ + 0, + /* tCoord */ + { + /* nRg */ + 452985, + /* nBg */ + 724566, + }, + }, + }, + /* nExtIllumNum */ + 1, + /* tExtIllumList[32] */ + { + /* 0 */ + { + /* szName[32] */ + "CWF", + /* nCct */ + 4100, + /* nRadius */ + 31457, + /* tCoord */ + { + /* nRg */ + 525337, + /* nBg */ + 392167, + }, + }, + }, + /* nPolyNum */ + 0, + /* tPolyList[32] */ + { + /* 0 */ + { + /* nMinX */ + 0, + /* nMaxX */ + 0, + /* nMinY */ + 0, + /* nMaxY */ + 0, + /* nPntCnt */ + 0, + /* tPntArray[64] */ + { + /* 0 */ + { + /* nRg */ + 0, + /* nBg */ + 0, + }, + }, + }, + }, + /* tInitParam */ + { + /* tGains */ + { + /* nGainR */ + 500, + /* nGainGr */ + 256, + /* nGainGb */ + 256, + /* nGainB */ + 500, + }, + /* nDampRatio */ + 10000, + /* nFrameSkipping */ + 0, + }, + /* nMode */ + 0, + /* nIndex */ + 0, + /* nColorDiffCnt */ + 10, + /* nColorDiffList[16] */ + {1, 20, 40, 80, 150, 200, 350, 500, 800, 1024, /*0 - 9*/}, + /* nDampRatioList[16] */ + {1027604, 891290, 734003, 629146, 471859, 314573, 262144, 209715, 157286, 104858, /*0 - 9*/}, + /* nToleranceRg */ + 3145, + /* nToleranceBg */ + 3145, + /* nLuxVeryDarkStart */ + 0, + /* nLuxVeryDarkEnd */ + 8192, + /* nLuxDarkStart */ + 10240, + /* nLuxDarkEnd */ + 51200, + /* nLuxIndoorStart */ + 61440, + /* nLuxIndoorEnd */ + 409600, + /* nLuxTransInStart */ + 460800, + /* nLuxTransInEnd */ + 972800, + /* nLuxTransOutStart */ + 1024000, + /* nLuxTransOutEnd */ + 1894400, + /* nLuxOutdoorStart */ + 1945600, + /* nLuxOutdoorEnd */ + 4044800, + /* nLuxBrightStart */ + 4096000, + /* nLuxBrightEnd */ + 10137600, + /* nLuxVeryBrightStart */ + 10240000, + /* nCctMinInner */ + 1800, + /* nCctMaxInner */ + 8500, + /* nCctMinOuter */ + 1500, + /* nCctMaxOuter */ + 10000, + /* nCctSplitHtoA */ + 2450, + /* nCctSplitAtoF */ + 3300, + /* nCctSplitFtoD5 */ + 4400, + /* nCctSplitD5toD6 */ + 5350, + /* nCctSplitD6toS */ + 6800, + /* nGridWeightEnable */ + 0, + /* nGridWeightRow */ + 9, + /* nGridWeightColumn */ + 9, + /* nGridWeightTable[27][36] */ + { + {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 8*/}, + {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 8*/}, + {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 8*/}, + {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 8*/}, + {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 8*/}, + {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 8*/}, + {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 8*/}, + {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 8*/}, + {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 8*/}, + }, + /* nGrayZoneLuxWeight[24][8] */ + { + {200, 100, 50, 50, 0, 0, 0, 0, /*0 - 7*/}, + {400, 400, 100, 100, 50, 50, 50, 50, /*0 - 7*/}, + {400, 400, 100, 100, 50, 50, 50, 50, /*0 - 7*/}, + {300, 100, 50, 50, 0, 0, 0, 0, /*0 - 7*/}, + {200, 150, 50, 50, 0, 0, 0, 0, /*0 - 7*/}, + {400, 600, 200, 200, 50, 50, 50, 50, /*0 - 7*/}, + {400, 600, 200, 200, 50, 50, 50, 50, /*0 - 7*/}, + {300, 150, 50, 50, 0, 0, 0, 0, /*0 - 7*/}, + {100, 300, 300, 0, 0, 0, 100, 100, /*0 - 7*/}, + {400, 700, 600, 500, 400, 200, 200, 200, /*0 - 7*/}, + {400, 700, 600, 500, 400, 200, 200, 200, /*0 - 7*/}, + {100, 10, 10, 0, 0, 0, 100, 100, /*0 - 7*/}, + {300, 1000, 500, 500, 450, 450, 450, 450, /*0 - 7*/}, + {500, 1000, 1000, 1000, 900, 900, 900, 900, /*0 - 7*/}, + {500, 1000, 1000, 1000, 900, 900, 900, 900, /*0 - 7*/}, + {400, 10, 10, 0, 0, 0, 0, 0, /*0 - 7*/}, + {300, 300, 400, 500, 500, 400, 400, 400, /*0 - 7*/}, + {500, 1000, 1000, 1000, 1000, 700, 700, 700, /*0 - 7*/}, + {500, 1000, 1000, 1000, 1000, 700, 700, 700, /*0 - 7*/}, + {200, 10, 10, 0, 0, 0, 0, 0, /*0 - 7*/}, + {300, 200, 200, 200, 200, 200, 200, 200, /*0 - 7*/}, + {500, 500, 500, 500, 500, 500, 500, 600, /*0 - 7*/}, + {500, 500, 500, 500, 500, 500, 500, 600, /*0 - 7*/}, + {300, 300, 300, 300, 100, 0, 0, 0, /*0 - 7*/}, + }, + /* nExtIlllumLuxWeight[32][8] */ + { + {1000, 1000, 1000, 200, 50, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + }, + /* nLumaWeightNum */ + 8, + /* nLumaSplitList[32] */ + {51, 819, 3072, 8192, 20480, 40960, 92160, 215040, /*0 - 7*/}, + /* nLumaWeightList[8][32] */ + { + {51, 102, 614, 1024, 1024, 1024, 1024, 512, /*0 - 7*/}, + {102, 205, 819, 1024, 1024, 1024, 1024, 512, /*0 - 7*/}, + {100, 200, 819, 1024, 1024, 1024, 1024, 820, /*0 - 7*/}, + {0, 200, 819, 1024, 1024, 1024, 1024, 820, /*0 - 7*/}, + {0, 205, 819, 1024, 1024, 1024, 1024, 819, /*0 - 7*/}, + {0, 205, 819, 1024, 1024, 1024, 1024, 819, /*0 - 7*/}, + {0, 205, 819, 1024, 1024, 1024, 1024, 819, /*0 - 7*/}, + {0, 205, 819, 1024, 1024, 1024, 1024, 819, /*0 - 7*/}, + }, + /* bMixLightEn */ + 1, + /* nMixLightProba_0_CctStd[8] */ + {400, 400, 400, 450, 550, 9998, 9998, 9998, /*0 - 7*/}, + /* nMixLightProba_100_CctStd[8] */ + {500, 600, 600, 750, 900, 9999, 9999, 9999, /*0 - 7*/}, + /* nMixLightProba_100_SatDiscnt[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nMixLightKneeNum */ + 8, + /* nMixLightKneeCctList[32] */ + {2300, 2800, 3500, 4600, 5500, 6500, 7500, 8500, /*0 - 7*/}, + /* nMixLightKneeWtList[8][32] */ + { + {100, 512, 614, 819, 819, 819, 819, 819, /*0 - 7*/}, + {100, 512, 614, 820, 819, 819, 819, 819, /*0 - 7*/}, + {205, 307, 310, 820, 819, 819, 819, 819, /*0 - 7*/}, + {205, 205, 310, 820, 819, 820, 820, 820, /*0 - 7*/}, + {407, 407, 512, 1024, 1024, 820, 820, 820, /*0 - 7*/}, + {512, 512, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 7*/}, + {512, 512, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 7*/}, + {512, 512, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 7*/}, + }, + /* tDomParamList[4] */ + { + /* 0 */ + { + /* nDominantEnable */ + 1, + /* nDomMinCctThresh */ + 2200, + /* nDomMaxCctThresh */ + 2500, + /* nDom2AllRatioThresh */ + 409, + /* nDom2MinorRatioThresh */ + 4096, + /* nMinorWeight */ + 0, + /* nSmoothPercent */ + 204, + }, + /* 1 */ + { + /* nDominantEnable */ + 1, + /* nDomMinCctThresh */ + 2500, + /* nDomMaxCctThresh */ + 3300, + /* nDom2AllRatioThresh */ + 409, + /* nDom2MinorRatioThresh */ + 4096, + /* nMinorWeight */ + 0, + /* nSmoothPercent */ + 204, + }, + /* 2 */ + { + /* nDominantEnable */ + 1, + /* nDomMinCctThresh */ + 3300, + /* nDomMaxCctThresh */ + 4600, + /* nDom2AllRatioThresh */ + 409, + /* nDom2MinorRatioThresh */ + 4096, + /* nMinorWeight */ + 0, + /* nSmoothPercent */ + 204, + }, + /* 3 */ + { + /* nDominantEnable */ + 1, + /* nDomMinCctThresh */ + 4600, + /* nDomMaxCctThresh */ + 8500, + /* nDom2AllRatioThresh */ + 409, + /* nDom2MinorRatioThresh */ + 4096, + /* nMinorWeight */ + 0, + /* nSmoothPercent */ + 204, + }, + }, + /* nTmpoStabTriggerAvgBlkWt */ + 10, + /* nPlanckianLocusProjEn */ + 0, + /* nPlanckianLocusNotProjLux */ + 4096000, + /* nPlanckianLocusFullProjLux */ + 10240000, + /* nSpatialSegmetNum */ + 2, + /* nSpatialStartLux[32] */ + {4096000, 11264000, /*0 - 1*/}, + /* nSpatialEndLux[32] */ + {10240000, 1024000000, /*0 - 1*/}, + /* nSpatialRg[32] */ + {488636, 622854, /*0 - 1*/}, + /* nSpatialBg[32] */ + {636485, 615514, /*0 - 1*/}, + /* nFusionGrayZoneConfid_0_AvgBlkWeight */ + 20, + /* nFusionGrayZoneConfid_100_AvgBlkWeight */ + 500, + /* nFusionSpatialConfid_0_Lux */ + 5120000, + /* nFusionSpatialConfid_100_Lux */ + 15360000, + /* nFusionWeightGrayZone */ + 1024, + /* nFusionWeightSpatial */ + 0, + /* nPreferCctNum */ + 10, + /* nPreferSrcCctList[32] */ + {1800, 2000, 2200, 2400, 2600, 2800, 4000, 5000, 6000, 10000, /*0 - 9*/}, + /* nPreferDstCct[8][32] */ + { + {1800, 2000, 2200, 2400, 2600, 2800, 4000, 5000, 6000, 10000, /*0 - 9*/}, + {1800, 2000, 2200, 2400, 2600, 2800, 4000, 5000, 6000, 10000, /*0 - 9*/}, + {1800, 2000, 2200, 2400, 2600, 2800, 4000, 5000, 6000, 10000, /*0 - 9*/}, + {1800, 2000, 2200, 2400, 2600, 2800, 4000, 5000, 6000, 10000, /*0 - 9*/}, + {1800, 2000, 2200, 2400, 2600, 2800, 4000, 5000, 6000, 10000, /*0 - 9*/}, + {1800, 2000, 2200, 2400, 2600, 2800, 4000, 5000, 6000, 10000, /*0 - 9*/}, + {1800, 2000, 2200, 2400, 2600, 2800, 4000, 5000, 6000, 10000, /*0 - 9*/}, + {1800, 2000, 2200, 2400, 2600, 2800, 4000, 5000, 6000, 10000, /*0 - 9*/}, + }, + /* nPreferGrShift[8][32] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, + }, + /* nMultiCamSyncMode */ + 0, + }, +}; + +static AX_ISP_IQ_CAF_PARAM_T caf_param_sdr = { + /* nScanType */ + 0, + /* nGlobalScanStep */ + 0, + /* nSearchDownFrameTh */ + 0, + /* nSearchDownSerialSlopeTh */ + 0, + /* nSearchDownSingleSlopeTh */ + 0, + /* nSearchUpFrameTh */ + 0, + /* nSearchUpSerialSlopeTh */ + 0, + /* nSearchUpSingleSlopeTh */ + 0, + /* nSearchBigStepUpSlopeTh */ + 0, + /* nSearchBigStep */ + 0, + /* nSearchSmallStep */ + 0, + /* nSearchProbeStep */ + 0, + /* nSearchProbeFrameTh */ + 0, + /* bContinuousAfEn */ + 0, + /* nSceneChangeLumaTh */ + 0, + /* nSceneSettledLumaTh */ + 0, + /* nSceneSlowChangeLumaTh */ + 0, + /* nSceneFvChangeLumaTh */ + 0, + /* nSceneFvChangeRatioTh */ + 0, + /* nSpotlightZoomRatioTh */ + 0, + /* tWeight */ + { + /* nMuX */ + 0, + /* nMuY */ + 0, + /* nSigmaX */ + 0, + /* nSigmaY */ + 0, + /* nCoeffV */ + 0, + /* nCoeffH1 */ + 0, + /* nCoeffH2 */ + 0, + }, +}; + +static AX_ISP_IQ_DPC_PARAM_T dpc_param_sdr = { + /* nDpcEnable */ + 1, + /* nStaticDpcEnable */ + 0, + /* nDynamicDpcEnable */ + 1, + /* nPreDetLevelSlope */ + 64, + /* nPreDetLevelOffset */ + 0, + /* nColorLimitEnable */ + 1, + /* nAutoMode */ + 1, + /* nRefMode */ + 1, + /* tDpcParam */ + { + /* tHcgTable */ + { + /* nSdpcLength */ + 0, + /* nSdpcBuffer[8192] */ + {0, /*0 - 0*/}, + /* nShotNoiseCoeffsA[4] */ + {154236277, 153976128, 153931397, 154786328, /*0 - 3*/}, + /* nShotNoiseCoeffsB[4] */ + {2651599, 3324422, 3685411, 1774564, /*0 - 3*/}, + /* nReadNoiseCoeffsA[4] */ + {7931792, 7935557, 7971379, 8007012, /*0 - 3*/}, + /* nReadNoiseCoeffsB[4] */ + {32432480, 31663460, 32006577, 31866601, /*0 - 3*/}, + /* nReadNoiseCoeffsC[4] */ + {33930221, 36227242, 35804793, 35182579, /*0 - 3*/}, + }, + /* tLcgTable */ + { + /* nSdpcLength */ + 0, + /* nSdpcBuffer[8192] */ + {0, /*0 - 0*/}, + /* nShotNoiseCoeffsA[4] */ + {35416523, 35417714, 35423902, 35421682, /*0 - 3*/}, + /* nShotNoiseCoeffsB[4] */ + {-386665, -459927, -439376, -288491, /*0 - 3*/}, + /* nReadNoiseCoeffsA[4] */ + {2034207, 2001760, 1973960, 2031931, /*0 - 3*/}, + /* nReadNoiseCoeffsB[4] */ + {18168345, 18213528, 18883095, 17734840, /*0 - 3*/}, + /* nReadNoiseCoeffsC[4] */ + {49967466, 53292461, 51951927, 54656236, /*0 - 3*/}, + }, + }, + /* tManualParam */ + { + /* nNoiseRatio[2] */ + {1024, 1024, /*0 - 1*/}, + /* nDpType */ + 0, + /* nNonChwiseEn */ + 0, + /* nChwiseStr */ + 20, + /* nDetCoarseStr */ + 200, + /* nDetFineStr */ + 48, + /* nDynamicDpcStr */ + 0, + /* nEdgeStr */ + 102, + /* nHotColdTypeStr */ + 32, + /* nSupWinkStr */ + 16, + /* nDynamicDpClrLimOffset */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* nStaticDpClrLimOffset */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* nNormalPixDpClrLimOffset */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* nDynamicDpClrLimStr */ + 128, + /* nStaticDpClrLimStr */ + 128, + /* nNormalPixDpClrLimStr */ + 128, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 6, + /* nRefVal[16] */ + {1024, 12288, 65536, 128000, 256000, 1024000, /*0 - 5*/}, + /* nNoiseRatio[2][16] */ + { + {1024, 1024, 1024, 1024, 1024, 1024, /*0 - 5*/}, + {1024, 1024, 1024, 1024, 1024, 1024, /*0 - 5*/}, + }, + /* nDpType[16] */ + {0, 0, 0, 0, 0, 0, /*0 - 5*/}, + /* nNonChwiseEn[16] */ + {0, 0, 0, 0, 0, 0, /*0 - 5*/}, + /* nChwiseStr[16] */ + {20, 20, 20, 20, 20, 20, /*0 - 5*/}, + /* nDetCoarseStr[16] */ + {200, 200, 210, 225, 236, 236, /*0 - 5*/}, + /* nDetFineStr[16] */ + {48, 48, 48, 48, 48, 48, /*0 - 5*/}, + /* nDynamicDpcStr[16] */ + {0, 1024, 4095, 4095, 4095, 4095, /*0 - 5*/}, + /* nEdgeStr[16] */ + {102, 102, 102, 102, 102, 102, /*0 - 5*/}, + /* nHotColdTypeStr[16] */ + {32, 32, 32, 32, 32, 32, /*0 - 5*/}, + /* nSupWinkStr[16] */ + {16, 16, 16, 16, 16, 16, /*0 - 5*/}, + /* nDynamicDpClrLimOffset[16] */ + { + /* 0 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 1 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 2 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 3 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 4 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 5 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + }, + /* nStaticDpClrLimOffset[16] */ + { + /* 0 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 1 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 2 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 3 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 4 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 5 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + }, + /* nNormalPixDpClrLimOffset[16] */ + { + /* 0 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 1 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 2 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 3 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 4 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + /* 5 */ + { + /* nUpperLimit */ + 256, + /* nLowerLimit */ + 256, + }, + }, + /* nDynamicDpClrLimStr[16] */ + {128, 128, 128, 128, 128, 128, /*0 - 5*/}, + /* nStaticDpClrLimStr[16] */ + {128, 128, 128, 128, 128, 128, /*0 - 5*/}, + /* nNormalPixDpClrLimStr[16] */ + {128, 128, 128, 128, 128, 128, /*0 - 5*/}, + }, +}; + +static AX_ISP_IQ_BLC_PARAM_T blc_param_sdr = { + /* nBlcEnable */ + 1, + /* nAutoMode */ + 1, + /* tManualParam[4] */ + { + /* 0 */ + { + /* nSblRValue */ + 65536, + /* nSblGrValue */ + 65536, + /* nSblGbValue */ + 65536, + /* nSblBValue */ + 65536, + }, + /* 1 */ + { + /* nSblRValue */ + 0, + /* nSblGrValue */ + 0, + /* nSblGbValue */ + 0, + /* nSblBValue */ + 0, + }, + /* 2 */ + { + /* nSblRValue */ + 0, + /* nSblGrValue */ + 0, + /* nSblGbValue */ + 0, + /* nSblBValue */ + 0, + }, + /* 3 */ + { + /* nSblRValue */ + 0, + /* nSblGrValue */ + 0, + /* nSblGbValue */ + 0, + /* nSblBValue */ + 0, + }, + }, + /* tAutoParam */ + { + /* tHcgAutoTable */ + { + /* nGainGrpNum */ + 9, + /* nExposeTimeGrpNum */ + 2, + /* nGain[16] */ + {1024, 2048, 4096, 8192, 16384, 24576, 32768, 49152, 63922, /*0 - 8*/}, + /* nExposeTime[10] */ + {10000, 30000, /*0 - 1*/}, + /* nAutoSblRValue[16][10] */ + { + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + }, + /* nAutoSblGrValue[16][10] */ + { + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + }, + /* nAutoSblGbValue[16][10] */ + { + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + }, + /* nAutoSblBValue[16][10] */ + { + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + }, + }, + /* tLcgAutoTable */ + { + /* nGainGrpNum */ + 4, + /* nExposeTimeGrpNum */ + 2, + /* nGain[16] */ + {1024, 2048, 4096, 8192, /*0 - 3*/}, + /* nExposeTime[10] */ + {10000, 30000, /*0 - 1*/}, + /* nAutoSblRValue[16][10] */ + { + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65564, 65582, /*0 - 1*/}, + }, + /* nAutoSblGrValue[16][10] */ + { + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65564, 65562, /*0 - 1*/}, + }, + /* nAutoSblGbValue[16][10] */ + { + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65574, 65568, /*0 - 1*/}, + }, + /* nAutoSblBValue[16][10] */ + { + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65536, 65536, /*0 - 1*/}, + {65587, 65574, /*0 - 1*/}, + }, + }, + }, +}; + +static AX_ISP_IQ_FPN_PARAM_T fpn_param_sdr = { + /* nFpnEnable */ + /* 0:AX_FALSE, 1:AX_TRUE */ + AX_FALSE, + /* nAutoMode */ + 0, + /* eFpnMode */ + /* 0:AX_ISP_IQ_FPN_MODE0, 1:AX_ISP_IQ_FPN_MODE1, 2:AX_ISP_IQ_FPN_MODE_MAX */ + AX_ISP_IQ_FPN_MODE0, + /* tManualParam */ + { + /* tFpnCaliFrame */ + { + /* szFpnFrmName[128] */ + "dark_HCG_exp_20000_again_1.125_temp_20_framesize_8294400_cali.raw", + /* nLcgHcgMode */ + 0, + /* nAgain */ + 288, + /* nIntTime */ + 20000, + /* nTemperature */ + 20, + /* nFrameSize */ + 8294400, + /* nFpnCorrGain */ + 32, + /* nFpnOffset */ + 48, + }, + }, + /* tAutoParam */ + { + /* tHcgFpnCaliFrame */ + { + /* nCaliFrameNum */ + 2, + /* tFpnCaliFrame[8] */ + { + /* 0 */ + { + /* szFpnFrmName[128] */ + "dark_HCG_exp_20000_again_1.125_temp_20_framesize_8294400_cali.raw", + /* nLcgHcgMode */ + 0, + /* nAgain */ + 288, + /* nIntTime */ + 20000, + /* nTemperature */ + 20, + /* nFrameSize */ + 8294400, + /* nFpnCorrGain */ + 32, + /* nFpnOffset */ + 48, + }, + /* 1 */ + { + /* szFpnFrmName[128] */ + "dark_HCG_exp_20000_again_15.5_temp_20_framesize_8294400_cali.raw", + /* nLcgHcgMode */ + 0, + /* nAgain */ + 3968, + /* nIntTime */ + 20000, + /* nTemperature */ + 20, + /* nFrameSize */ + 8294400, + /* nFpnCorrGain */ + 64, + /* nFpnOffset */ + 48, + }, + }, + }, + /* tLcgFpnCaliFrame */ + { + /* nCaliFrameNum */ + 2, + /* tFpnCaliFrame[8] */ + { + /* 0 */ + { + /* szFpnFrmName[128] */ + "dark_LCG_exp_20000_again_1.125_temp_20_framesize_8294400_cali.raw", + /* nLcgHcgMode */ + 1, + /* nAgain */ + 288, + /* nIntTime */ + 20000, + /* nTemperature */ + 20, + /* nFrameSize */ + 8294400, + /* nFpnCorrGain */ + 64, + /* nFpnOffset */ + 48, + }, + /* 1 */ + { + /* szFpnFrmName[128] */ + "dark_LCG_exp_20000_again_15.5_temp_20_framesize_8294400_cali.raw", + /* nLcgHcgMode */ + 1, + /* nAgain */ + 3968, + /* nIntTime */ + 20000, + /* nTemperature */ + 20, + /* nFrameSize */ + 8294400, + /* nFpnCorrGain */ + 64, + /* nFpnOffset */ + 48, + }, + }, + }, + }, +}; + +static AX_ISP_IQ_HDR_PARAM_T hdr_param_sdr = { + /* nEnable */ + 0, + /* nAutoMode */ + 0, + /* nRefMode */ + 0, + /* nDebugMode */ + 0, + /* tMotDetParam */ + { + /* nCoarseMotMaskRatio[3][2] */ + { + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + }, + /* nMotMaskStrength[3] */ + {0, 0, 0, /*0 - 2*/}, + /* nMotIirRatio[3][2] */ + { + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + }, + }, + /* tExpMaskParam */ + { + /* nCoarseExpMaskRatio[3][2] */ + { + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + }, + /* nExpIirRatio[3][2] */ + { + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + }, + /* nExpYRatio[3] */ + {0, 0, 0, /*0 - 2*/}, + /* nExpWeightLut[3][257] */ + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 128 - 159*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 160 - 191*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 192 - 223*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 224 - 255*/ + 0, /*256 - 256*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 128 - 159*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 160 - 191*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 192 - 223*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 224 - 255*/ + 0, /*256 - 256*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 96 - 127*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 128 - 159*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 160 - 191*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 192 - 223*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 224 - 255*/ + 0, /*256 - 256*/ + }, + }, + /* nExpWeightGain[3] */ + {0, 0, 0, /*0 - 2*/}, + }, + /* tDgstParam */ + { + /* nDeghostEnable */ + 0, + /* nDgstStrenThre[2] */ + {0, 0, /*0 - 1*/}, + /* nDgstStrenLimit[2] */ + {0, 0, /*0 - 1*/}, + /* nDgstBaseFid */ + 0, + /* nDgstManualGainEn */ + 0, + /* nDgstManualGain[3] */ + {0, 0, 0, /*0 - 2*/}, + }, + /* tFusionParam */ + { + /* nFusionProtectThreshold[2] */ + {0, 0, /*0 - 1*/}, + }, + /* tHdrManualParam */ + { + /* nNoiseLutScale */ + 4096, + /* nCoarseMotMaskNoiseLvl[3] */ + {0, 0, 0, /*0 - 2*/}, + /* nCoarseMotMaskSen[3] */ + {0, 0, 0, /*0 - 2*/}, + /* nCoarseExpMaskSen[3] */ + {0, 0, 0, /*0 - 2*/}, + }, + /* tHdrAutoParam */ + { + /* nParamGrpNum */ + 0, + /* nRefVal[16] */ + {0, /*0 - 0*/}, + /* nNoiseLutScale[16] */ + {4096, }, + /* nCoarseMotMaskNoiseLvl[16][3] */ + { + {0, 0, 0, /*0 - 2*/}, + }, + /* nCoarseMotMaskSen[16][3] */ + { + {0, 0, 0, /*0 - 2*/}, + }, + /* nCoarseExpMaskSen[16][3] */ + { + {0, 0, 0, /*0 - 2*/}, + }, + }, +}; + +static AX_ISP_IQ_AINR_PARAM_T ainr_param_sdr = { + /* nEnable */ + 1, + /* nAutoMode */ + 1, + /* bUpdateTable */ + 1, + /* nRefMode */ + 1, + /* nHdrMode */ + 1, + /* tManualParam */ + { + /* szModelPath[256] */ + "/opt/etc/OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szModelName[256] */ + "OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nBiasIn[4] */ + {800, 3296, 0, 0, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* tNonSensParam */ + { + /* nTNRStrLut[8][2] */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nShpStrLut[8][2] */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut[8][2] */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2[8][2] */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* tSensParam */ + { + /* nLumaStrLut[16][2] */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nMotionNRStrLut[8][2] */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* tFreqAffineParam */ + { + /* nLowFreqNRAffine[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nMidFreqNRAffine[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHighFreqNRAffine[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* tFreqLutParam */ + { + /* nLowFreqNRStrLut[8][2] */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut[8][2] */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut[8][2] */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + }, + }, + /* tAutoParam */ + { + /* nAutoModelNum */ + 8, + /* tAutoModelTable[32] */ + { + /* 0 */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "/opt/etc/OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szModelName[256] */ + "OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nBiasIn[4] */ + {800, 3296, 0, 0, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHcgMode */ + 0, + /* nIsoThresholdMin */ + 100, + /* nIsoThresholdMax */ + 400, + }, + /* tParam */ + { + /* tNonSensParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[4] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[4] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nTNRStrLut[4][8][2] */ + { + /* nTNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nShpStrLut[4][8][2] */ + { + /* nShpStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nShpStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut[4][8][2] */ + { + /* nTemporalFilterStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut2[4][8][2] */ + { + /* nTemporalFilterStrLut2 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tSensParam */ + { + /* nParamGrpNum */ + 8, + /* nRefValStart[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, /*0 - 7*/}, + /* nLumaStrLut[8][16][2] */ + { + /* nLumaStrLut 0 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 1 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 2 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 3 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 4 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 5 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 6 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 7 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + }, + /* nMotionNRStrLut[8][8][2] */ + { + /* nMotionNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 4 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 5 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 6 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 7 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tFreqAffineParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[8] */ + {1024, 1280, 1536, 1792, 2048, 2304, 4096, 4294967295, /*0 - 7*/}, + /* nLowFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nMidFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nHighFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + }, + /* tFreqLutParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[8] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nLowFreqNRStrLut[8][8][2] */ + { + /* nLowFreqNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nMidFreqNRStrLut[8][8][2] */ + { + /* nMidFreqNRStrLut 0 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 1 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nHighFreqNRStrLut[8][8][2] */ + { + /* nHighFreqNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + }, + }, + }, + }, + /* 1 */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "/opt/etc/OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szModelName[256] */ + "OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nBiasIn[4] */ + {800, 3296, 0, 0, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHcgMode */ + 1, + /* nIsoThresholdMin */ + 100, + /* nIsoThresholdMax */ + 400, + }, + /* tParam */ + { + /* tNonSensParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[4] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[4] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nTNRStrLut[4][8][2] */ + { + /* nTNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nShpStrLut[4][8][2] */ + { + /* nShpStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nShpStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut[4][8][2] */ + { + /* nTemporalFilterStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut2[4][8][2] */ + { + /* nTemporalFilterStrLut2 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tSensParam */ + { + /* nParamGrpNum */ + 8, + /* nRefValStart[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, /*0 - 7*/}, + /* nLumaStrLut[8][16][2] */ + { + /* nLumaStrLut 0 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 1 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 2 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 3 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 4 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 5 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 6 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 7 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + }, + /* nMotionNRStrLut[8][8][2] */ + { + /* nMotionNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 4 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 5 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 6 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 7 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tFreqAffineParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[8] */ + {1024, 1280, 1536, 1792, 2048, 2304, 4096, 4294967295, /*0 - 7*/}, + /* nLowFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nMidFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nHighFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + }, + /* tFreqLutParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[8] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nLowFreqNRStrLut[8][8][2] */ + { + /* nLowFreqNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nMidFreqNRStrLut[8][8][2] */ + { + /* nMidFreqNRStrLut 0 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 1 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nHighFreqNRStrLut[8][8][2] */ + { + /* nHighFreqNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + }, + }, + }, + }, + /* 2 */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "/opt/etc/OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szModelName[256] */ + "OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nBiasIn[4] */ + {800, 3296, 0, 0, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHcgMode */ + 1, + /* nIsoThresholdMin */ + 400, + /* nIsoThresholdMax */ + 800, + }, + /* tParam */ + { + /* tNonSensParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[4] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[4] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nTNRStrLut[4][8][2] */ + { + /* nTNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nShpStrLut[4][8][2] */ + { + /* nShpStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nShpStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut[4][8][2] */ + { + /* nTemporalFilterStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut2[4][8][2] */ + { + /* nTemporalFilterStrLut2 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tSensParam */ + { + /* nParamGrpNum */ + 8, + /* nRefValStart[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, /*0 - 7*/}, + /* nLumaStrLut[8][16][2] */ + { + /* nLumaStrLut 0 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 1 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 2 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 3 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 4 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 5 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 6 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 7 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + }, + /* nMotionNRStrLut[8][8][2] */ + { + /* nMotionNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 4 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 5 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 6 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 7 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tFreqAffineParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[8] */ + {1024, 1280, 1536, 1792, 2048, 2304, 4096, 4294967295, /*0 - 7*/}, + /* nLowFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nMidFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nHighFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + }, + /* tFreqLutParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[8] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nLowFreqNRStrLut[8][8][2] */ + { + /* nLowFreqNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nMidFreqNRStrLut[8][8][2] */ + { + /* nMidFreqNRStrLut 0 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 1 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nHighFreqNRStrLut[8][8][2] */ + { + /* nHighFreqNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + }, + }, + }, + }, + /* 3 */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "/opt/etc/OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szModelName[256] */ + "OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nBiasIn[4] */ + {800, 3296, 0, 0, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHcgMode */ + 1, + /* nIsoThresholdMin */ + 800, + /* nIsoThresholdMax */ + 1600, + }, + /* tParam */ + { + /* tNonSensParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[4] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[4] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nTNRStrLut[4][8][2] */ + { + /* nTNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nShpStrLut[4][8][2] */ + { + /* nShpStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nShpStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut[4][8][2] */ + { + /* nTemporalFilterStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut2[4][8][2] */ + { + /* nTemporalFilterStrLut2 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tSensParam */ + { + /* nParamGrpNum */ + 8, + /* nRefValStart[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, /*0 - 7*/}, + /* nLumaStrLut[8][16][2] */ + { + /* nLumaStrLut 0 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 1 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 2 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 3 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 4 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 5 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 6 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 7 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + }, + /* nMotionNRStrLut[8][8][2] */ + { + /* nMotionNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 4 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 5 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 6 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 7 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tFreqAffineParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[8] */ + {1024, 1280, 1536, 1792, 2048, 2304, 4096, 4294967295, /*0 - 7*/}, + /* nLowFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nMidFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nHighFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + }, + /* tFreqLutParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[8] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nLowFreqNRStrLut[8][8][2] */ + { + /* nLowFreqNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nMidFreqNRStrLut[8][8][2] */ + { + /* nMidFreqNRStrLut 0 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 1 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nHighFreqNRStrLut[8][8][2] */ + { + /* nHighFreqNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + }, + }, + }, + }, + /* 4 */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "/opt/etc/OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szModelName[256] */ + "OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I1-4X_0000_00000450722_230818_AX650.axmodel", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nBiasIn[4] */ + {800, 3296, 0, 0, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHcgMode */ + 1, + /* nIsoThresholdMin */ + 1600, + /* nIsoThresholdMax */ + 6400, + }, + /* tParam */ + { + /* tNonSensParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[4] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[4] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nTNRStrLut[4][8][2] */ + { + /* nTNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nShpStrLut[4][8][2] */ + { + /* nShpStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nShpStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut[4][8][2] */ + { + /* nTemporalFilterStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut2[4][8][2] */ + { + /* nTemporalFilterStrLut2 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tSensParam */ + { + /* nParamGrpNum */ + 8, + /* nRefValStart[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, /*0 - 7*/}, + /* nLumaStrLut[8][16][2] */ + { + /* nLumaStrLut 0 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 1 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 2 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 3 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 4 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 5 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 6 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 7 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + }, + /* nMotionNRStrLut[8][8][2] */ + { + /* nMotionNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 4 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 5 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 6 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 7 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tFreqAffineParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[8] */ + {1024, 1280, 1536, 1792, 2048, 2304, 4096, 4294967295, /*0 - 7*/}, + /* nLowFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nMidFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nHighFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + }, + /* tFreqLutParam */ + { + /* nParamGrpNum */ + 4, + /* nRefValStart[8] */ + {6400, 8000, 10000, 15000, /*0 - 3*/}, + /* nRefValEnd[8] */ + {8000, 10000, 15000, 25600, /*0 - 3*/}, + /* nLowFreqNRStrLut[8][8][2] */ + { + /* nLowFreqNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nMidFreqNRStrLut[8][8][2] */ + { + /* nMidFreqNRStrLut 0 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 1 */ + { + {0, 70, /*0 - 1*/}, + {14, 98, /*0 - 1*/}, + {20, 115, /*0 - 1*/}, + {27, 129, /*0 - 1*/}, + {126, 174, /*0 - 1*/}, + {229, 227, /*0 - 1*/}, + {240, 236, /*0 - 1*/}, + {254, 238, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 2 */ + { + {0, 85, /*0 - 1*/}, + {14, 98, /*0 - 1*/}, + {20, 115, /*0 - 1*/}, + {27, 129, /*0 - 1*/}, + {126, 174, /*0 - 1*/}, + {229, 227, /*0 - 1*/}, + {240, 236, /*0 - 1*/}, + {254, 238, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 3 */ + { + {0, 115, /*0 - 1*/}, + {15, 148, /*0 - 1*/}, + {20, 172, /*0 - 1*/}, + {25, 196, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nHighFreqNRStrLut[8][8][2] */ + { + /* nHighFreqNRStrLut 0 */ + { + {0, 60, /*0 - 1*/}, + {15, 60, /*0 - 1*/}, + {20, 60, /*0 - 1*/}, + {25, 60, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 1 */ + { + {0, 70, /*0 - 1*/}, + {15, 110, /*0 - 1*/}, + {19, 134, /*0 - 1*/}, + {24, 153, /*0 - 1*/}, + {126, 172, /*0 - 1*/}, + {227, 196, /*0 - 1*/}, + {242, 212, /*0 - 1*/}, + {253, 229, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 2 */ + { + {0, 70, /*0 - 1*/}, + {15, 110, /*0 - 1*/}, + {19, 134, /*0 - 1*/}, + {24, 153, /*0 - 1*/}, + {126, 172, /*0 - 1*/}, + {227, 196, /*0 - 1*/}, + {242, 212, /*0 - 1*/}, + {253, 229, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 3 */ + { + {0, 200, /*0 - 1*/}, + {15, 200, /*0 - 1*/}, + {20, 215, /*0 - 1*/}, + {25, 215, /*0 - 1*/}, + {127, 222, /*0 - 1*/}, + {229, 222, /*0 - 1*/}, + {242, 229, /*0 - 1*/}, + {255, 238, /*0 - 1*/}, + }, + }, + }, + }, + }, + /* 5 */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "/opt/etc/OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I4-8X_0000_00000450723_230818_AX650.axmodel", + /* szModelName[256] */ + "OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I4-8X_0000_00000450723_230818_AX650.axmodel", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nBiasIn[4] */ + {800, 3296, 0, 0, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHcgMode */ + 1, + /* nIsoThresholdMin */ + 6400, + /* nIsoThresholdMax */ + 12800, + }, + /* tParam */ + { + /* tNonSensParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[4] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[4] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nTNRStrLut[4][8][2] */ + { + /* nTNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nShpStrLut[4][8][2] */ + { + /* nShpStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nShpStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut[4][8][2] */ + { + /* nTemporalFilterStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut2[4][8][2] */ + { + /* nTemporalFilterStrLut2 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tSensParam */ + { + /* nParamGrpNum */ + 8, + /* nRefValStart[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, /*0 - 7*/}, + /* nLumaStrLut[8][16][2] */ + { + /* nLumaStrLut 0 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 1 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 2 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 3 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 4 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 5 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 6 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 7 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + }, + /* nMotionNRStrLut[8][8][2] */ + { + /* nMotionNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 4 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 5 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 6 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 7 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tFreqAffineParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[8] */ + {1024, 1280, 1536, 1792, 2048, 2304, 4096, 4294967295, /*0 - 7*/}, + /* nLowFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nMidFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nHighFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + }, + /* tFreqLutParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[8] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nLowFreqNRStrLut[8][8][2] */ + { + /* nLowFreqNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nMidFreqNRStrLut[8][8][2] */ + { + /* nMidFreqNRStrLut 0 */ + { + {0, 115, /*0 - 1*/}, + {15, 148, /*0 - 1*/}, + {20, 172, /*0 - 1*/}, + {25, 196, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 1 */ + { + {0, 115, /*0 - 1*/}, + {15, 148, /*0 - 1*/}, + {20, 172, /*0 - 1*/}, + {25, 196, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nHighFreqNRStrLut[8][8][2] */ + { + /* nHighFreqNRStrLut 0 */ + { + {0, 200, /*0 - 1*/}, + {15, 200, /*0 - 1*/}, + {20, 215, /*0 - 1*/}, + {25, 215, /*0 - 1*/}, + {127, 222, /*0 - 1*/}, + {229, 222, /*0 - 1*/}, + {242, 229, /*0 - 1*/}, + {255, 238, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 1 */ + { + {0, 200, /*0 - 1*/}, + {15, 200, /*0 - 1*/}, + {20, 215, /*0 - 1*/}, + {25, 215, /*0 - 1*/}, + {127, 222, /*0 - 1*/}, + {229, 222, /*0 - 1*/}, + {242, 229, /*0 - 1*/}, + {255, 238, /*0 - 1*/}, + }, + }, + }, + }, + }, + /* 6 */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "/opt/etc/OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I8-16X_0000_00000449323_230818_AX650.axmodel", + /* szModelName[256] */ + "OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I8-16X_0000_00000449323_230818_AX650.axmodel", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nBiasIn[4] */ + {800, 3296, 0, 0, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHcgMode */ + 1, + /* nIsoThresholdMin */ + 12800, + /* nIsoThresholdMax */ + 25600, + }, + /* tParam */ + { + /* tNonSensParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[4] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[4] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nTNRStrLut[4][8][2] */ + { + /* nTNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nShpStrLut[4][8][2] */ + { + /* nShpStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nShpStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut[4][8][2] */ + { + /* nTemporalFilterStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 220, /*0 - 1*/}, + {242, 230, /*0 - 1*/}, + {255, 240, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 220, /*0 - 1*/}, + {242, 230, /*0 - 1*/}, + {255, 240, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut2[4][8][2] */ + { + /* nTemporalFilterStrLut2 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tSensParam */ + { + /* nParamGrpNum */ + 8, + /* nRefValStart[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, /*0 - 7*/}, + /* nLumaStrLut[8][16][2] */ + { + /* nLumaStrLut 0 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 1 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 2 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 3 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 4 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 5 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 6 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 7 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + }, + /* nMotionNRStrLut[8][8][2] */ + { + /* nMotionNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 4 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 5 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 6 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 7 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tFreqAffineParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[8] */ + {1024, 1280, 1536, 1792, 2048, 2304, 4096, 4294967295, /*0 - 7*/}, + /* nLowFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nMidFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nHighFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + }, + /* tFreqLutParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[8] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nLowFreqNRStrLut[8][8][2] */ + { + /* nLowFreqNRStrLut 0 */ + { + {0, 30, /*0 - 1*/}, + {7, 40, /*0 - 1*/}, + {16, 60, /*0 - 1*/}, + {25, 80, /*0 - 1*/}, + {126, 158, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 1 */ + { + {0, 30, /*0 - 1*/}, + {7, 40, /*0 - 1*/}, + {16, 60, /*0 - 1*/}, + {25, 80, /*0 - 1*/}, + {126, 158, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nMidFreqNRStrLut[8][8][2] */ + { + /* nMidFreqNRStrLut 0 */ + { + {0, 115, /*0 - 1*/}, + {15, 148, /*0 - 1*/}, + {20, 172, /*0 - 1*/}, + {25, 196, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 1 */ + { + {0, 115, /*0 - 1*/}, + {15, 148, /*0 - 1*/}, + {20, 172, /*0 - 1*/}, + {25, 196, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nHighFreqNRStrLut[8][8][2] */ + { + /* nHighFreqNRStrLut 0 */ + { + {0, 200, /*0 - 1*/}, + {15, 200, /*0 - 1*/}, + {20, 215, /*0 - 1*/}, + {25, 215, /*0 - 1*/}, + {127, 222, /*0 - 1*/}, + {229, 222, /*0 - 1*/}, + {242, 229, /*0 - 1*/}, + {255, 238, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 1 */ + { + {0, 200, /*0 - 1*/}, + {15, 200, /*0 - 1*/}, + {20, 215, /*0 - 1*/}, + {25, 215, /*0 - 1*/}, + {127, 222, /*0 - 1*/}, + {229, 222, /*0 - 1*/}, + {242, 229, /*0 - 1*/}, + {255, 238, /*0 - 1*/}, + }, + }, + }, + }, + }, + /* 7 */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "/opt/etc/OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I16-32X_0000_00000450725_230818_AX650.axmodel", + /* szModelName[256] */ + "OS08B10_SDR_3840x2160_10b_HCG_ISP1_A16-16X_I16-32X_0000_00000450725_230818_AX650.axmodel", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nBiasIn[4] */ + {800, 3296, 0, 0, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHcgMode */ + 1, + /* nIsoThresholdMin */ + 25600, + /* nIsoThresholdMax */ + 51200, + }, + /* tParam */ + { + /* tNonSensParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[4] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[4] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nTNRStrLut[4][8][2] */ + { + /* nTNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nShpStrLut[4][8][2] */ + { + /* nShpStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nShpStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut[4][8][2] */ + { + /* nTemporalFilterStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut2[4][8][2] */ + { + /* nTemporalFilterStrLut2 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tSensParam */ + { + /* nParamGrpNum */ + 8, + /* nRefValStart[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, /*0 - 7*/}, + /* nLumaStrLut[8][16][2] */ + { + /* nLumaStrLut 0 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 1 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 2 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 3 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 4 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 5 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 6 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 7 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + }, + /* nMotionNRStrLut[8][8][2] */ + { + /* nMotionNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 4 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 5 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 6 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 7 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tFreqAffineParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[8] */ + {1024, 1280, 1536, 1792, 2048, 2304, 4096, 4294967295, /*0 - 7*/}, + /* nLowFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nMidFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nHighFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + }, + /* tFreqLutParam */ + { + /* nParamGrpNum */ + 2, + /* nRefValStart[8] */ + {100, 100, /*0 - 1*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, /*0 - 1*/}, + /* nLowFreqNRStrLut[8][8][2] */ + { + /* nLowFreqNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nMidFreqNRStrLut[8][8][2] */ + { + /* nMidFreqNRStrLut 0 */ + { + {0, 128, /*0 - 1*/}, + {15, 148, /*0 - 1*/}, + {20, 168, /*0 - 1*/}, + {25, 172, /*0 - 1*/}, + {127, 238, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 1 */ + { + {0, 128, /*0 - 1*/}, + {15, 148, /*0 - 1*/}, + {20, 168, /*0 - 1*/}, + {25, 172, /*0 - 1*/}, + {127, 238, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nHighFreqNRStrLut[8][8][2] */ + { + /* nHighFreqNRStrLut 0 */ + { + {0, 128, /*0 - 1*/}, + {15, 146, /*0 - 1*/}, + {20, 155, /*0 - 1*/}, + {25, 160, /*0 - 1*/}, + {127, 198, /*0 - 1*/}, + {229, 230, /*0 - 1*/}, + {242, 236, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 1 */ + { + {0, 128, /*0 - 1*/}, + {15, 146, /*0 - 1*/}, + {20, 155, /*0 - 1*/}, + {25, 160, /*0 - 1*/}, + {127, 198, /*0 - 1*/}, + {229, 230, /*0 - 1*/}, + {242, 236, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + }, + }, + }, + }, + /* tDummyParam */ + { + /* nModelNum */ + 0, + /* tModelTable[8] */ + { + /* 0 */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "", + /* szModelName[256] */ + "", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nBiasIn[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHcgMode */ + 0, + /* nIsoThresholdMin */ + 0, + /* nIsoThresholdMax */ + 0, + }, + }, + }, + }, +}; + +static AX_ISP_IQ_AICE_PARAM_T aice_param_sdr = { + /* nEnable */ + 0, + /* nAutoMode */ + 0, + /* bUpdateTable */ + 0, + /* nRefMode */ + 0, + /* tManualParam */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "", + /* szModelName[256] */ + "", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nBiasIn[4] */ + {1200, 1200, 1200, 1200, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* tParams */ + { + /* tNr */ + { + /* tNonSensParam */ + { + /* nTNRStrLut[8][2] */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nShpStrLut[8][2] */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut[8][2] */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2[8][2] */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* tSensParam */ + { + /* nLumaStrLut[16][2] */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nMotionNRStrLut[8][2] */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* tFreqAffineParam */ + { + /* nLowFreqNRAffine[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nMidFreqNRAffine[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHighFreqNRAffine[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* tFreqLutParam */ + { + /* nLowFreqNRStrLut[8][2] */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut[8][2] */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut[8][2] */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + }, + }, + /* tCe */ + { + /* nLumaStrLut[16][2] */ + { + {0, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {50, 255, /*0 - 1*/}, + {75, 255, /*0 - 1*/}, + {100, 255, /*0 - 1*/}, + {125, 255, /*0 - 1*/}, + {150, 255, /*0 - 1*/}, + {175, 255, /*0 - 1*/}, + {180, 255, /*0 - 1*/}, + {190, 255, /*0 - 1*/}, + {200, 255, /*0 - 1*/}, + {210, 255, /*0 - 1*/}, + {220, 255, /*0 - 1*/}, + {230, 255, /*0 - 1*/}, + {240, 255, /*0 - 1*/}, + {250, 255, /*0 - 1*/}, + }, + /* nLowFreqAffine */ + 0, + /* nMidFreqAffine */ + 0, + /* nHighFreqAffine */ + 0, + }, + }, + }, + /* tAutoParam */ + { + /* nAutoModelNum */ + 0, + /* tAutoModelTable[32] */ + { + /* 0 */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "", + /* szModelName[256] */ + "", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nHcgMode */ + 0, + /* nIsoThresholdMin */ + 100, + /* nIsoThresholdMax */ + 200, + /* nBiasIn[4] */ + {1200, 1200, 1200, 1200, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* tParams */ + { + /* tNr */ + { + /* tNonSensParam */ + { + /* nParamGrpNum */ + 4, + /* nRefValStart[4] */ + {100, 100, 100, 100, /*0 - 3*/}, + /* nRefValEnd[4] */ + {4294967295, 4294967295, 4294967295, 4294967295, /*0 - 3*/}, + /* nTNRStrLut[4][8][2] */ + { + /* nTNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTNRStrLut 2 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTNRStrLut 3 */ + { + {0, 0, /*0 - 1*/}, + {15, 15, /*0 - 1*/}, + {20, 20, /*0 - 1*/}, + {25, 25, /*0 - 1*/}, + {127, 127, /*0 - 1*/}, + {229, 229, /*0 - 1*/}, + {242, 242, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nShpStrLut[4][8][2] */ + { + /* nShpStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nShpStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nShpStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nShpStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 240, /*0 - 1*/}, + {20, 235, /*0 - 1*/}, + {25, 230, /*0 - 1*/}, + {127, 128, /*0 - 1*/}, + {229, 25, /*0 - 1*/}, + {242, 13, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut[4][8][2] */ + { + /* nTemporalFilterStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nTemporalFilterStrLut2[4][8][2] */ + { + /* nTemporalFilterStrLut2 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nTemporalFilterStrLut2 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tSensParam */ + { + /* nParamGrpNum */ + 8, + /* nRefValStart[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, /*0 - 7*/}, + /* nLumaStrLut[8][16][2] */ + { + /* nLumaStrLut 0 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 1 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 2 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 3 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 4 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 5 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 6 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 7 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + }, + /* nMotionNRStrLut[8][8][2] */ + { + /* nMotionNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 4 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 5 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 6 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMotionNRStrLut 7 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + }, + /* tFreqAffineParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[8] */ + {1024, 1280, 1536, 1792, 2048, 2304, 4096, 4294967295, /*0 - 7*/}, + /* nLowFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nMidFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nHighFreqNRAffine[8][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + }, + /* tFreqLutParam */ + { + /* nParamGrpNum */ + 8, + /* nRefValStart[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, /*0 - 7*/}, + /* nLowFreqNRStrLut[8][8][2] */ + { + /* nLowFreqNRStrLut 0 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 1 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 2 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 3 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 4 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 5 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 6 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nLowFreqNRStrLut 7 */ + { + {0, 255, /*0 - 1*/}, + {15, 255, /*0 - 1*/}, + {20, 255, /*0 - 1*/}, + {25, 255, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nMidFreqNRStrLut[8][8][2] */ + { + /* nMidFreqNRStrLut 0 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 1 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 2 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 3 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 4 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 5 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 6 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + /* nMidFreqNRStrLut 7 */ + { + {0, 63, /*0 - 1*/}, + {15, 63, /*0 - 1*/}, + {20, 63, /*0 - 1*/}, + {25, 102, /*0 - 1*/}, + {127, 255, /*0 - 1*/}, + {229, 255, /*0 - 1*/}, + {242, 255, /*0 - 1*/}, + {255, 255, /*0 - 1*/}, + }, + }, + /* nHighFreqNRStrLut[8][8][2] */ + { + /* nHighFreqNRStrLut 0 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 1 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 2 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 3 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 4 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 5 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 6 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + /* nHighFreqNRStrLut 7 */ + { + {0, 0, /*0 - 1*/}, + {15, 0, /*0 - 1*/}, + {20, 0, /*0 - 1*/}, + {25, 4, /*0 - 1*/}, + {127, 96, /*0 - 1*/}, + {229, 189, /*0 - 1*/}, + {242, 201, /*0 - 1*/}, + {255, 213, /*0 - 1*/}, + }, + }, + }, + }, + /* tCe */ + { + /* tLumaLut */ + { + /* nParamGrpNum */ + 8, + /* nRefValStart[8] */ + {100, 100, 100, 100, 100, 100, 100, 100, /*0 - 7*/}, + /* nRefValEnd[8] */ + {4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295, /*0 - 7*/}, + /* nLumaStrLut[8][16][2] */ + { + /* nLumaStrLut 0 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 1 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 2 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 3 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 4 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 5 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 6 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + /* nLumaStrLut 7 */ + { + {0, 25, /*0 - 1*/}, + {25, 50, /*0 - 1*/}, + {50, 75, /*0 - 1*/}, + {75, 100, /*0 - 1*/}, + {100, 125, /*0 - 1*/}, + {125, 150, /*0 - 1*/}, + {150, 175, /*0 - 1*/}, + {175, 200, /*0 - 1*/}, + {180, 180, /*0 - 1*/}, + {190, 190, /*0 - 1*/}, + {200, 200, /*0 - 1*/}, + {210, 210, /*0 - 1*/}, + {220, 220, /*0 - 1*/}, + {230, 230, /*0 - 1*/}, + {240, 240, /*0 - 1*/}, + {250, 250, /*0 - 1*/}, + }, + }, + }, + /* tFreqAffine */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[8] */ + {1024, 1280, 1536, 1792, 2048, 2304, 4096, 4294967295, /*0 - 7*/}, + /* nLowFreqAffine[8] */ + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + /* nMidFreqAffine[8] */ + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + /* nHighFreqAffine[8] */ + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + }, + }, + }, + }, + }, + }, + /* tDummyParam */ + { + /* nModelNum */ + 0, + /* tModelTable[8] */ + { + /* 0 */ + { + /* tMeta */ + { + /* szModelPath[256] */ + "", + /* szModelName[256] */ + "", + /* szTemporalBaseNrName */ + "", + /* szSpatialBaseNrName */ + "", + /* nHcgMode */ + 0, + /* nIsoThresholdMin */ + 0, + /* nIsoThresholdMax */ + 0, + /* nBiasIn[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nBiasOut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + }, + }, + }, + }, +}; + +static AX_ISP_IQ_RAW3DNR_PARAM_T raw3dnr_param_sdr = { + /* nRaw3dnrEn */ + 1, + /* nAutoMode */ + 1, + /* nRefMode */ + 1, + /* tGlb */ + { + /* eWorkMode */ + /* 0:AX_RAW3DNR_FIRST_3D, 1:AX_RAW3DNR_FIRST_2D, 2:AX_RAW3DNR_ONLY_2D */ + AX_RAW3DNR_FIRST_3D, + /* nSfMeshEnable */ + 0, + /* nRefMaskUpdMode */ + 0, + /* nReadNoiseCoeffsHcg[3] */ + {7931792, 32432480, 33930221, /*0 - 2*/}, + /* nReadNoiseCoeffsLcg[3] */ + {2034207, 18168345, 49967466, /*0 - 2*/}, + /* nShotNoiseCoeffsHcg[2] */ + {154236277, 2651599, /*0 - 1*/}, + /* nShotNoiseCoeffsLcg[2] */ + {35416523, -386665, /*0 - 1*/}, + }, + /* tManual */ + { + /* nFpnRatio */ + 26, + /* tMtd */ + { + /* nAiMotionMaskEnable */ + 0, + /* eMtdMode */ + /* 0:AX_RAW3DNR_SOFT_THRES, 1:AX_RAW3DNR_HARD_THRES */ + AX_RAW3DNR_HARD_THRES, + /* nMtdHardThres[3] */ + {256, 192, 128, /*0 - 2*/}, + /* nMtdLumaStrValue[17] */ + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 16*/}, + /* nMtdLumaStrDelta[16] */ + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /*0 - 15*/}, + /* nMtdStrTf */ + 0, + /* nMtdLf0KernelWt[3] */ + {85, 85, 85, /*0 - 2*/}, + /* nMtdLf1KernelWt[3] */ + {85, 85, 85, /*0 - 2*/}, + /* nMtdLf0Wt[4] */ + {256, 256, 256, 256, /*0 - 3*/}, + /* nMtdLf0Amp[4] */ + {256, 256, 256, 256, /*0 - 3*/}, + /* nMtdLf1Wt */ + 256, + /* nMtdLf1Amp */ + 256, + }, + /* tTd */ + { + /* nMtdSoftMode */ + 0, + /* nMtdLimit */ + 31, + /* nMtdMotionCurve[2] */ + {0, 0, /*0 - 1*/}, + /* nMtdMotionLut[15] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 14 */}, + /* nMtdNoiseCoeffsL[17] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + /* nMtdNoiseCoeffsS[17] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + /* nMtdNoiseCoeffsVs[17] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + }, + /* tSd */ + { + /* nSfHighlightProtect */ + 64000, + /* nSfDetailPreserve */ + 32, + /* nSfLumaThresDelta[16] */ + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + /* nSfLumaThresValue[17] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + /* nSfNoiseCoeffsL[16] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + /* nSfNoiseCoeffsS[16] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + /* nSfNoiseCoeffsVs[16] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + /* nSfMotionStrL[6] */ + {350, 300, 300, 256, 256, 256, /*0 - 5*/}, + /* nSfMotionStrS[6] */ + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + /* nSfMotionStrVs[6] */ + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + /* nSfKernelWt0[3] */ + {128, 128, 128, /*0 - 2*/}, + /* nSfKernelWt1[2] */ + {128, 128, /*0 - 1*/}, + /* nSfSmoothStr */ + 160, + /* nDetailBackfillDelta[16] */ + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + /* nDetailBackfillResValue[17] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + /* nDetailBackfillRefValue[17] */ + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + /* nDetailBackfillRatioRes[4] */ + {128, 128, 128, 128, /*0 - 3*/}, + /* nDetailBackfillRatioRef[4] */ + {128, 128, 128, 128, /*0 - 3*/}, + /* tSfMeshStr */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + }, + }, + /* tAuto */ + { + /* nParamGrpNum */ + 11, + /* nRefVal[16] */ + {1024, 4096, 8192, 16384, 65535, 65536, 128000, 256000, 524288, 524289, 1024000, /*0 - 10*/}, + /* nFpnRatio[16] */ + {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, /*0 - 10*/}, + /* tMtd */ + { + /* nAiMotionMaskEnable[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + /* eMtdMode[16] */ + /* 0:AX_RAW3DNR_SOFT_THRES, 1:AX_RAW3DNR_HARD_THRES */ + {AX_RAW3DNR_HARD_THRES, AX_RAW3DNR_HARD_THRES, AX_RAW3DNR_HARD_THRES, AX_RAW3DNR_HARD_THRES, AX_RAW3DNR_HARD_THRES, AX_RAW3DNR_HARD_THRES, AX_RAW3DNR_HARD_THRES, AX_RAW3DNR_HARD_THRES, AX_RAW3DNR_HARD_THRES, AX_RAW3DNR_HARD_THRES, AX_RAW3DNR_HARD_THRES, /*0 - 10*/}, + /* nMtdHardThres[16][3] */ + { + {256, 192, 128, /*0 - 2*/}, + {256, 192, 128, /*0 - 2*/}, + {256, 192, 128, /*0 - 2*/}, + {200, 180, 120, /*0 - 2*/}, + {180, 160, 120, /*0 - 2*/}, + {168, 128, 120, /*0 - 2*/}, + {128, 120, 100, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + }, + /* nMtdLumaStrValue[16][17] */ + { + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 16*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 16*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 700, 850, 850, 850, 850, 850, 850, /*0 - 16*/}, + {512, 512, 512, 512, 512, 512, 700, 700, 700, 700, 700, 900, 900, 900, 900, 900, 900, /*0 - 16*/}, + {512, 512, 512, 512, 512, 512, 700, 700, 700, 700, 700, 700, 700, 700, 800, 900, 900, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + }, + /* nMtdLumaStrDelta[16][16] */ + { + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + }, + /* nMtdStrTf[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + /* nMtdLf0KernelWt[16][3] */ + { + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + }, + /* nMtdLf1KernelWt[16][3] */ + { + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + {85, 85, 85, /*0 - 2*/}, + }, + /* nMtdLf0Wt[16][4] */ + { + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + }, + /* nMtdLf0Amp[16][4] */ + { + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + }, + /* nMtdLf1Wt[16] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 10*/}, + /* nMtdLf1Amp[16] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 10*/}, + }, + /* tTd */ + { + /* nMtdSoftMode[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + /* nMtLimit[16] */ + {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, /*0 - 10*/}, + /* nMtdMotionCurve[16][2] */ + { + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + }, + /* nMtdMotionLut[16][15] */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 14*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 14*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 14*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 14*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 14*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 14*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 14*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 14*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 14*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 14*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 14*/}, + }, + /* nMtdNoiseCoeffsL[16][17] */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + }, + /* nMtdNoiseCoeffsS[16][17] */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + }, + /* nMtdNoiseCoeffsVs[16][17] */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + }, + }, + /* tSd */ + { + /* nSfHighlightProtect[16] */ + {64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, 64000, /*0 - 10*/}, + /* nSfDetailPreserve[16] */ + {32, 32, 32, 32, 32, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + /* nSfLumaThresDelta[16][16] */ + { + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + }, + /* nSfLumaThresValue[16][17] */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 16*/}, + {200, 200, 200, 200, 200, 200, 256, 350, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 16*/}, + {200, 200, 200, 200, 200, 200, 256, 350, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 16*/}, + {200, 200, 200, 200, 200, 200, 256, 256, 300, 400, 512, 512, 512, 512, 512, 512, 512, /*0 - 16*/}, + {200, 200, 200, 200, 200, 200, 256, 256, 300, 400, 512, 512, 512, 512, 512, 512, 512, /*0 - 16*/}, + {200, 200, 200, 200, 200, 200, 256, 256, 300, 400, 512, 512, 512, 512, 512, 512, 512, /*0 - 16*/}, + {200, 200, 200, 200, 200, 200, 256, 256, 300, 400, 512, 512, 512, 512, 512, 512, 512, /*0 - 16*/}, + }, + /* nSfNoiseCoeffsL[16][16] */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + }, + /* nSfNoiseCoeffsS[16][16] */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + }, + /* nSfNoiseCoeffsVs[16][16] */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + }, + /* nSfMotionStrL[16][6] */ + { + {400, 300, 300, 256, 256, 256, /*0 - 5*/}, + {400, 300, 300, 256, 256, 256, /*0 - 5*/}, + {400, 300, 300, 256, 256, 256, /*0 - 5*/}, + {400, 280, 280, 256, 256, 256, /*0 - 5*/}, + {350, 350, 350, 256, 256, 256, /*0 - 5*/}, + {75, 75, 75, 75, 75, 75, /*0 - 5*/}, + {75, 75, 75, 75, 75, 75, /*0 - 5*/}, + {75, 75, 75, 75, 75, 75, /*0 - 5*/}, + {75, 75, 75, 75, 75, 75, /*0 - 5*/}, + {75, 75, 75, 75, 75, 75, /*0 - 5*/}, + {75, 75, 75, 75, 75, 75, /*0 - 5*/}, + }, + /* nSfMotionStrS[16][6] */ + { + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + }, + /* nSfMotionStrVs[16][6] */ + { + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + {256, 256, 256, 256, 256, 256, /*0 - 5*/}, + }, + /* nSfKernelWt0[16][3] */ + { + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + }, + /* nSfKernelWt1[16][2] */ + { + {128, 128, /*0 - 1*/}, + {128, 128, /*0 - 1*/}, + {128, 128, /*0 - 1*/}, + {128, 128, /*0 - 1*/}, + {128, 128, /*0 - 1*/}, + {128, 128, /*0 - 1*/}, + {128, 128, /*0 - 1*/}, + {128, 128, /*0 - 1*/}, + {128, 128, /*0 - 1*/}, + {128, 128, /*0 - 1*/}, + {128, 128, /*0 - 1*/}, + }, + /* nSfSmoothStr[16] */ + {160, 160, 160, 160, 160, 120, 128, 128, 128, 128, 128, /*0 - 10*/}, + /* nDetailBackfillDelta[16][16] */ + { + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + {6, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 15, /*0 - 15*/}, + }, + /* nDetailBackfillResValue[16][17] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + {0, 0, 0, 0, 0, 0, 20, 20, 32, 32, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + {0, 0, 0, 0, 0, 0, 20, 20, 32, 32, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + {0, 0, 0, 0, 0, 0, 20, 20, 32, 32, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + {0, 0, 0, 0, 0, 0, 20, 20, 32, 32, 0, 0, 0, 0, 0, 0, 0, /*0 - 16*/}, + }, + /* nDetailBackfillRefValue[16][17] */ + { + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 16*/}, + }, + /* nDetailBackfillRatioRes[16][4] */ + { + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + }, + /* nDetailBackfillRatioRef[16][4] */ + { + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + }, + /* tSfMeshStr[16] */ + { + /* 0 */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + /* 1 */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + /* 2 */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + /* 3 */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + /* 4 */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + /* 5 */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + /* 6 */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + /* 7 */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + /* 8 */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + /* 9 */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + /* 10 */ + { + /* nSfMeshStr[11][11] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + }, + }, + }, + }, + }, +}; + +static AX_ISP_IQ_LSC_PARAM_T lsc_param_sdr = { + /* nLscEn */ + 1, + /* nRefMode */ + 0, + /* nMeshMode */ + 0, + /* nAutoMode */ + 0, + /* nMeshRows */ + 50, + /* nMeshCols */ + 45, + /* tManualParam */ + { + /* nLumaRatio */ + 50, + /* nColorRatio */ + 100, + /* nLumaMeshLut[52][98] */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nRRMeshLut[52][98] */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nGRMeshLut[52][98] */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nGBMeshLut[52][98] */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nBBMeshLut[52][98] */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + }, + /* tAutoParam */ + { + /* nDampRatio */ + 80, + /* nToleranceRatio */ + 10, + /* tLumaParam */ + { + /* nParamGrpNum */ + 3, + /* nRefValStart[16] */ + {2800, 5000, 6500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + /* nRefValEnd[16] */ + {2800, 5000, 6500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + /* nLumaRatio[16] */ + {50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, /*0 - 15*/}, + /* nLumaMeshLut[52][98] */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + }, + /* tColTempParam */ + { + /* nColTempNum */ + 3, + /* nRefColorTempStart[10] */ + {2800, 5000, 6500, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, + /* nRefColorTempEnd[10] */ + {2800, 5000, 6500, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, + /* nColorTemp[10] */ + {2800, 5000, 6500, 0, 0, 0, 0, 0, 0, 0, /*0 - 9*/}, + /* nColorRatio[10] */ + {100, 100, 100, /*0 - 2*/}, + /* nRRMeshLut[10][52][98] */ + { + /* nRRMeshLut 0 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nRRMeshLut 1 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nRRMeshLut 2 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + }, + /* nGRMeshLut[10][52][98] */ + { + /* nGRMeshLut 0 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nGRMeshLut 1 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nGRMeshLut 2 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + }, + /* nGBMeshLut[10][52][98] */ + { + /* nGBMeshLut 0 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nGBMeshLut 1 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nGBMeshLut 2 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + }, + /* nBBMeshLut[10][52][98] */ + { + /* nBBMeshLut 0 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nBBMeshLut 1 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + /* nBBMeshLut 2 */ + { + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /* 0 - 31*/ + 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32 - 63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 64 - 95*/ + 0, 0, /*96 - 97*/ + }, + }, + }, + }, + }, +}; + +static AX_ISP_IQ_RLTM_PARAM_T rltm_param_sdr = { + /* nRltmEn */ + 1, + /* nMultiCamSyncMode */ + 0, + /* nAutoMode */ + 1, + /* nRefMode */ + 1, + /* tTempoFilter */ + { + /* nAlpha */ + 512, + /* nReset */ + 0, + /* nStopUpdating */ + 0, + }, + /* tLumaWt */ + { + /* nLumaWeight[5] */ + {37, 38, 38, 15, 0, /*0 - 4*/}, + }, + /* tMultiHistWt */ + { + /* nMode */ + 0, + /* nRegionNum */ + 0, + /* nHistWtNum */ + 1, + /* tRoi */ + { + /* nTop */ + 0, + /* nBottom */ + 0, + /* nLeft */ + 0, + /* nRight */ + 0, + }, + /* tHistWt */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* nFlagHistId[16][16] */ + { + {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + }, + }, + /* tManualParam */ + { + /* nLocalFactor */ + 90, + /* nHighlightSup */ + 71, + /* nKMax */ + 60000, + /* nPreGamma */ + 38, + /* nPostGamma */ + 38, + /* nDynamicRangeUpper */ + 128, + /* nDynamicRangeLower */ + 0, + /* nExtraDgain */ + 16, + /* nWinSize */ + 1024, + /* nRltmStrength */ + 50, + /* nLog10Offset */ + 64, + /* nContrastStrength */ + 40, + /* nBaseGain */ + 64, + /* nDitherMode */ + 0, + /* nDitherScale */ + 64, + /* nGtmSwEn */ + 0, + /* nGtmSwDgain */ + 256, + /* nHistWtBrightLow[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHistWtBrightHigh[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nHistWtThreshold[4] */ + {129, 129, 129, 129, /*0 - 3*/}, + /* nSCurveList[1025] */ + { + 0, 201, 326, 433, 529, 618, 702, 781, 857, 931, 1001, 1070, 1137, 1202, 1266, 1328, 1389, 1449, 1508, 1566, 1623, 1679, 1734, 1789, 1843, 1896, 1948, 2000, 2052, 2102, 2153, 2202, /* 0 - 31*/ + 2252, 2300, 2349, 2397, 2444, 2491, 2538, 2584, 2630, 2676, 2721, 2766, 2811, 2855, 2899, 2943, 2986, 3030, 3073, 3115, 3158, 3200, 3242, 3284, 3325, 3366, 3407, 3448, 3489, 3529, 3569, 3609, /* 32 - 63*/ + 3649, 3689, 3728, 3767, 3807, 3845, 3884, 3923, 3961, 3999, 4038, 4075, 4113, 4151, 4188, 4226, 4263, 4300, 4337, 4374, 4410, 4447, 4483, 4519, 4555, 4591, 4627, 4663, 4699, 4734, 4770, 4805, /* 64 - 95*/ + 4840, 4875, 4910, 4945, 4980, 5014, 5049, 5083, 5118, 5152, 5186, 5220, 5254, 5288, 5322, 5355, 5389, 5422, 5456, 5489, 5522, 5555, 5588, 5621, 5654, 5687, 5720, 5752, 5785, 5817, 5850, 5882, /* 96 - 127*/ + 5914, 5946, 5978, 6010, 6042, 6074, 6106, 6138, 6169, 6201, 6232, 6264, 6295, 6326, 6357, 6389, 6420, 6451, 6482, 6513, 6543, 6574, 6605, 6636, 6666, 6697, 6727, 6757, 6788, 6818, 6848, 6878, /* 128 - 159*/ + 6909, 6939, 6969, 6999, 7028, 7058, 7088, 7118, 7147, 7177, 7207, 7236, 7266, 7295, 7324, 7354, 7383, 7412, 7441, 7470, 7499, 7528, 7557, 7586, 7615, 7644, 7673, 7701, 7730, 7759, 7787, 7816, /* 160 - 191*/ + 7844, 7873, 7901, 7929, 7958, 7986, 8014, 8042, 8070, 8098, 8127, 8155, 8183, 8210, 8238, 8266, 8294, 8322, 8349, 8377, 8405, 8432, 8460, 8487, 8515, 8542, 8570, 8597, 8624, 8652, 8679, 8706, /* 192 - 223*/ + 8733, 8760, 8788, 8815, 8842, 8869, 8896, 8923, 8949, 8976, 9003, 9030, 9057, 9083, 9110, 9137, 9163, 9190, 9216, 9243, 9269, 9296, 9322, 9349, 9375, 9401, 9428, 9454, 9480, 9506, 9532, 9559, /* 224 - 255*/ + 9585, 9611, 9637, 9663, 9689, 9715, 9741, 9767, 9793, 9819, 9845, 9872, 9898, 9924, 9950, 9976, 10002, 10028, 10054, 10080, 10106, 10132, 10158, 10184, 10211, 10237, 10263, 10289, 10315, 10341, 10367, 10393, /* 256 - 287*/ + 10419, 10445, 10471, 10497, 10524, 10550, 10576, 10602, 10628, 10654, 10680, 10706, 10732, 10758, 10784, 10810, 10836, 10863, 10889, 10915, 10941, 10967, 10993, 11019, 11045, 11071, 11097, 11123, 11149, 11176, 11202, 11228, /* 288 - 319*/ + 11254, 11280, 11306, 11332, 11358, 11384, 11410, 11436, 11462, 11488, 11515, 11541, 11567, 11593, 11619, 11645, 11671, 11697, 11723, 11749, 11775, 11801, 11828, 11854, 11880, 11906, 11932, 11958, 11984, 12010, 12036, 12062, /* 320 - 351*/ + 12088, 12114, 12140, 12167, 12193, 12219, 12245, 12271, 12297, 12323, 12349, 12375, 12401, 12427, 12453, 12480, 12506, 12532, 12558, 12584, 12610, 12636, 12662, 12688, 12714, 12740, 12766, 12792, 12819, 12845, 12871, 12897, /* 352 - 383*/ + 12923, 12949, 12975, 13001, 13027, 13053, 13079, 13105, 13132, 13158, 13184, 13210, 13236, 13262, 13288, 13314, 13340, 13366, 13392, 13418, 13444, 13471, 13497, 13523, 13549, 13575, 13601, 13627, 13653, 13679, 13705, 13731, /* 384 - 415*/ + 13757, 13784, 13810, 13836, 13862, 13888, 13914, 13940, 13966, 13992, 14018, 14044, 14070, 14096, 14123, 14149, 14175, 14201, 14227, 14253, 14279, 14305, 14331, 14357, 14383, 14409, 14436, 14462, 14488, 14514, 14540, 14566, /* 416 - 447*/ + 14592, 14618, 14644, 14670, 14696, 14722, 14748, 14775, 14801, 14827, 14853, 14879, 14905, 14931, 14957, 14983, 15009, 15035, 15061, 15088, 15114, 15140, 15166, 15192, 15218, 15244, 15270, 15296, 15322, 15348, 15374, 15400, /* 448 - 479*/ + 15427, 15453, 15479, 15505, 15531, 15557, 15583, 15609, 15635, 15661, 15687, 15713, 15740, 15766, 15792, 15818, 15844, 15870, 15896, 15922, 15948, 15974, 16000, 16026, 16052, 16079, 16105, 16131, 16157, 16183, 16209, 16235, /* 480 - 511*/ + 16261, 16287, 16313, 16339, 16365, 16392, 16418, 16444, 16470, 16496, 16522, 16548, 16574, 16600, 16626, 16652, 16678, 16704, 16731, 16757, 16783, 16809, 16835, 16861, 16887, 16913, 16939, 16965, 16991, 17017, 17044, 17070, /* 512 - 543*/ + 17096, 17122, 17148, 17174, 17200, 17226, 17252, 17278, 17304, 17330, 17356, 17383, 17409, 17435, 17461, 17487, 17513, 17539, 17565, 17591, 17617, 17643, 17669, 17696, 17722, 17748, 17774, 17800, 17826, 17852, 17878, 17904, /* 544 - 575*/ + 17930, 17956, 17982, 18008, 18035, 18061, 18087, 18113, 18139, 18165, 18191, 18217, 18243, 18269, 18295, 18321, 18348, 18374, 18400, 18426, 18452, 18478, 18504, 18530, 18556, 18582, 18608, 18634, 18660, 18687, 18713, 18739, /* 576 - 607*/ + 18765, 18791, 18817, 18843, 18869, 18895, 18921, 18947, 18973, 19000, 19026, 19052, 19078, 19104, 19130, 19156, 19182, 19208, 19234, 19260, 19286, 19312, 19339, 19365, 19391, 19417, 19443, 19469, 19495, 19521, 19547, 19573, /* 608 - 639*/ + 19599, 19625, 19652, 19678, 19704, 19730, 19756, 19782, 19808, 19834, 19860, 19886, 19912, 19938, 19964, 19991, 20017, 20043, 20069, 20095, 20121, 20147, 20173, 20199, 20225, 20251, 20277, 20304, 20330, 20356, 20382, 20408, /* 640 - 671*/ + 20434, 20460, 20486, 20512, 20538, 20564, 20590, 20616, 20643, 20669, 20695, 20721, 20747, 20773, 20799, 20825, 20851, 20877, 20903, 20929, 20956, 20982, 21008, 21034, 21060, 21086, 21112, 21138, 21164, 21190, 21216, 21242, /* 672 - 703*/ + 21268, 21295, 21321, 21347, 21373, 21399, 21425, 21451, 21477, 21503, 21529, 21555, 21581, 21608, 21634, 21660, 21686, 21712, 21738, 21764, 21790, 21816, 21842, 21868, 21894, 21920, 21947, 21973, 21999, 22025, 22051, 22077, /* 704 - 735*/ + 22103, 22129, 22155, 22181, 22207, 22233, 22260, 22286, 22312, 22338, 22364, 22390, 22416, 22442, 22468, 22494, 22520, 22546, 22572, 22599, 22625, 22651, 22677, 22703, 22729, 22755, 22781, 22807, 22833, 22859, 22885, 22912, /* 736 - 767*/ + 22938, 22964, 22990, 23016, 23042, 23068, 23095, 23121, 23147, 23174, 23200, 23226, 23253, 23279, 23306, 23333, 23359, 23386, 23413, 23439, 23466, 23493, 23520, 23546, 23573, 23600, 23627, 23654, 23681, 23708, 23736, 23763, /* 768 - 799*/ + 23790, 23817, 23844, 23872, 23899, 23926, 23954, 23981, 24009, 24036, 24064, 24092, 24119, 24147, 24175, 24203, 24231, 24258, 24286, 24314, 24342, 24371, 24399, 24427, 24455, 24483, 24512, 24540, 24568, 24597, 24625, 24654, /* 800 - 831*/ + 24682, 24711, 24740, 24768, 24797, 24826, 24855, 24884, 24913, 24942, 24971, 25000, 25029, 25058, 25088, 25117, 25146, 25176, 25205, 25235, 25264, 25294, 25324, 25354, 25383, 25413, 25443, 25473, 25503, 25533, 25564, 25594, /* 832 - 863*/ + 25624, 25654, 25685, 25715, 25746, 25776, 25807, 25838, 25869, 25899, 25930, 25961, 25992, 26024, 26055, 26086, 26117, 26149, 26180, 26212, 26243, 26275, 26307, 26339, 26371, 26403, 26435, 26467, 26499, 26531, 26564, 26596, /* 864 - 895*/ + 26629, 26661, 26694, 26727, 26760, 26793, 26826, 26859, 26892, 26925, 26959, 26992, 27026, 27059, 27093, 27127, 27161, 27195, 27229, 27263, 27298, 27332, 27367, 27401, 27436, 27471, 27506, 27541, 27576, 27612, 27647, 27683, /* 896 - 927*/ + 27718, 27754, 27790, 27826, 27862, 27898, 27935, 27971, 28008, 28045, 28082, 28119, 28156, 28193, 28231, 28269, 28306, 28344, 28382, 28421, 28459, 28498, 28536, 28575, 28615, 28654, 28693, 28733, 28773, 28813, 28853, 28893, /* 928 - 959*/ + 28934, 28975, 29016, 29057, 29098, 29140, 29182, 29224, 29266, 29309, 29352, 29395, 29438, 29482, 29526, 29570, 29614, 29659, 29704, 29750, 29795, 29841, 29888, 29934, 29982, 30029, 30077, 30125, 30174, 30223, 30273, 30323, /* 960 - 991*/ + 30373, 30425, 30476, 30528, 30581, 30634, 30688, 30743, 30798, 30855, 30911, 30969, 31028, 31087, 31148, 31210, 31273, 31337, 31402, 31469, 31538, 31609, 31681, 31756, 31834, 31915, 32000, 32089, 32185, 32288, 32404, 32541, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + /* tHistWt[16] */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + }, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 11, + /* nRefVal[16] */ + {1024, 2048, 8192, 12288, 16384, 65536, 131072, 524288, 768000, 850000, 1024000, /*0 - 10*/}, + /* nLocalFactor[16] */ + {90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, /*0 - 10*/}, + /* nHighlightSup[16] */ + {70, 80, 80, 80, 85, 90, 100, 100, 140, 160, 160, /*0 - 10*/}, + /* nKMax[16] */ + {60000, 60000, 60000, 60000, 60000, 60000, 60000, 60000, 60000, 60000, 60000, /*0 - 10*/}, + /* nPreGamma[16] */ + {38, 38, 38, 38, 38, 38, 38, 36, 36, 36, 36, /*0 - 10*/}, + /* nPostGamma[16] */ + {38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, /*0 - 10*/}, + /* nDynamicRangeUpper[16] */ + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 10*/}, + /* nDynamicRangeLower[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + /* nExtraDgain[16] */ + {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /*0 - 10*/}, + /* nWinSize[16] */ + {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, /*0 - 10*/}, + /* nRltmStrength[16] */ + {50, 50, 50, 50, 50, 50, 50, 42, 24, 16, 12, /*0 - 10*/}, + /* nLog10Offset[16] */ + {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, /*0 - 10*/}, + /* nContrastStrength[16] */ + {40, 40, 40, 40, 40, 40, 40, 8, 8, 8, 8, /*0 - 10*/}, + /* nBaseGain[16] */ + {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, /*0 - 10*/}, + /* nDitherMode[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + /* nDitherScale[16] */ + {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, /*0 - 10*/}, + /* nGtmSwEn[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 10*/}, + /* nGtmSwDgain[16] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 10*/}, + /* nHistWtBrightLow[16][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nHistWtBrightHigh[16][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nHistWtThreshold[16][4] */ + { + {129, 129, 129, 129, /*0 - 3*/}, + {129, 129, 129, 129, /*0 - 3*/}, + {129, 129, 129, 129, /*0 - 3*/}, + {129, 129, 129, 129, /*0 - 3*/}, + {129, 129, 129, 129, /*0 - 3*/}, + {129, 129, 129, 129, /*0 - 3*/}, + {129, 129, 129, 129, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nSCurveList[16][1025] */ + { + { + 0, 201, 326, 433, 529, 618, 702, 781, 857, 931, 1001, 1070, 1137, 1202, 1266, 1328, 1389, 1449, 1508, 1566, 1623, 1679, 1734, 1789, 1843, 1896, 1948, 2000, 2052, 2102, 2153, 2202, /* 0 - 31*/ + 2252, 2300, 2349, 2397, 2444, 2491, 2538, 2584, 2630, 2676, 2721, 2766, 2811, 2855, 2899, 2943, 2986, 3030, 3073, 3115, 3158, 3200, 3242, 3284, 3325, 3366, 3407, 3448, 3489, 3529, 3569, 3609, /* 32 - 63*/ + 3649, 3689, 3728, 3767, 3807, 3845, 3884, 3923, 3961, 3999, 4038, 4075, 4113, 4151, 4188, 4226, 4263, 4300, 4337, 4374, 4410, 4447, 4483, 4519, 4555, 4591, 4627, 4663, 4699, 4734, 4770, 4805, /* 64 - 95*/ + 4840, 4875, 4910, 4945, 4980, 5014, 5049, 5083, 5118, 5152, 5186, 5220, 5254, 5288, 5322, 5355, 5389, 5422, 5456, 5489, 5522, 5555, 5588, 5621, 5654, 5687, 5720, 5752, 5785, 5817, 5850, 5882, /* 96 - 127*/ + 5914, 5946, 5978, 6010, 6042, 6074, 6106, 6138, 6169, 6201, 6232, 6264, 6295, 6326, 6357, 6389, 6420, 6451, 6482, 6513, 6543, 6574, 6605, 6636, 6666, 6697, 6727, 6757, 6788, 6818, 6848, 6878, /* 128 - 159*/ + 6909, 6939, 6969, 6999, 7028, 7058, 7088, 7118, 7147, 7177, 7207, 7236, 7266, 7295, 7324, 7354, 7383, 7412, 7441, 7470, 7499, 7528, 7557, 7586, 7615, 7644, 7673, 7701, 7730, 7759, 7787, 7816, /* 160 - 191*/ + 7844, 7873, 7901, 7929, 7958, 7986, 8014, 8042, 8070, 8098, 8127, 8155, 8183, 8210, 8238, 8266, 8294, 8322, 8349, 8377, 8405, 8432, 8460, 8487, 8515, 8542, 8570, 8597, 8624, 8652, 8679, 8706, /* 192 - 223*/ + 8733, 8760, 8788, 8815, 8842, 8869, 8896, 8923, 8949, 8976, 9003, 9030, 9057, 9083, 9110, 9137, 9163, 9190, 9216, 9243, 9269, 9296, 9322, 9349, 9375, 9401, 9428, 9454, 9480, 9506, 9532, 9559, /* 224 - 255*/ + 9585, 9611, 9637, 9663, 9689, 9715, 9741, 9767, 9793, 9819, 9845, 9872, 9898, 9924, 9950, 9976, 10002, 10028, 10054, 10080, 10106, 10132, 10158, 10184, 10211, 10237, 10263, 10289, 10315, 10341, 10367, 10393, /* 256 - 287*/ + 10419, 10445, 10471, 10497, 10524, 10550, 10576, 10602, 10628, 10654, 10680, 10706, 10732, 10758, 10784, 10810, 10836, 10863, 10889, 10915, 10941, 10967, 10993, 11019, 11045, 11071, 11097, 11123, 11149, 11176, 11202, 11228, /* 288 - 319*/ + 11254, 11280, 11306, 11332, 11358, 11384, 11410, 11436, 11462, 11488, 11515, 11541, 11567, 11593, 11619, 11645, 11671, 11697, 11723, 11749, 11775, 11801, 11828, 11854, 11880, 11906, 11932, 11958, 11984, 12010, 12036, 12062, /* 320 - 351*/ + 12088, 12114, 12140, 12167, 12193, 12219, 12245, 12271, 12297, 12323, 12349, 12375, 12401, 12427, 12453, 12480, 12506, 12532, 12558, 12584, 12610, 12636, 12662, 12688, 12714, 12740, 12766, 12792, 12819, 12845, 12871, 12897, /* 352 - 383*/ + 12923, 12949, 12975, 13001, 13027, 13053, 13079, 13105, 13132, 13158, 13184, 13210, 13236, 13262, 13288, 13314, 13340, 13366, 13392, 13418, 13444, 13471, 13497, 13523, 13549, 13575, 13601, 13627, 13653, 13679, 13705, 13731, /* 384 - 415*/ + 13757, 13784, 13810, 13836, 13862, 13888, 13914, 13940, 13966, 13992, 14018, 14044, 14070, 14096, 14123, 14149, 14175, 14201, 14227, 14253, 14279, 14305, 14331, 14357, 14383, 14409, 14436, 14462, 14488, 14514, 14540, 14566, /* 416 - 447*/ + 14592, 14618, 14644, 14670, 14696, 14722, 14748, 14775, 14801, 14827, 14853, 14879, 14905, 14931, 14957, 14983, 15009, 15035, 15061, 15088, 15114, 15140, 15166, 15192, 15218, 15244, 15270, 15296, 15322, 15348, 15374, 15400, /* 448 - 479*/ + 15427, 15453, 15479, 15505, 15531, 15557, 15583, 15609, 15635, 15661, 15687, 15713, 15740, 15766, 15792, 15818, 15844, 15870, 15896, 15922, 15948, 15974, 16000, 16026, 16052, 16079, 16105, 16131, 16157, 16183, 16209, 16235, /* 480 - 511*/ + 16261, 16287, 16313, 16339, 16365, 16392, 16418, 16444, 16470, 16496, 16522, 16548, 16574, 16600, 16626, 16652, 16678, 16704, 16731, 16757, 16783, 16809, 16835, 16861, 16887, 16913, 16939, 16965, 16991, 17017, 17044, 17070, /* 512 - 543*/ + 17096, 17122, 17148, 17174, 17200, 17226, 17252, 17278, 17304, 17330, 17356, 17383, 17409, 17435, 17461, 17487, 17513, 17539, 17565, 17591, 17617, 17643, 17669, 17696, 17722, 17748, 17774, 17800, 17826, 17852, 17878, 17904, /* 544 - 575*/ + 17930, 17956, 17982, 18008, 18035, 18061, 18087, 18113, 18139, 18165, 18191, 18217, 18243, 18269, 18295, 18321, 18348, 18374, 18400, 18426, 18452, 18478, 18504, 18530, 18556, 18582, 18608, 18634, 18660, 18687, 18713, 18739, /* 576 - 607*/ + 18765, 18791, 18817, 18843, 18869, 18895, 18921, 18947, 18973, 19000, 19026, 19052, 19078, 19104, 19130, 19156, 19182, 19208, 19234, 19260, 19286, 19312, 19339, 19365, 19391, 19417, 19443, 19469, 19495, 19521, 19547, 19573, /* 608 - 639*/ + 19599, 19625, 19652, 19678, 19704, 19730, 19756, 19782, 19808, 19834, 19860, 19886, 19912, 19938, 19964, 19991, 20017, 20043, 20069, 20095, 20121, 20147, 20173, 20199, 20225, 20251, 20277, 20304, 20330, 20356, 20382, 20408, /* 640 - 671*/ + 20434, 20460, 20486, 20512, 20538, 20564, 20590, 20616, 20643, 20669, 20695, 20721, 20747, 20773, 20799, 20825, 20851, 20877, 20903, 20929, 20956, 20982, 21008, 21034, 21060, 21086, 21112, 21138, 21164, 21190, 21216, 21242, /* 672 - 703*/ + 21268, 21295, 21321, 21347, 21373, 21399, 21425, 21451, 21477, 21503, 21529, 21555, 21581, 21608, 21634, 21660, 21686, 21712, 21738, 21764, 21790, 21816, 21842, 21868, 21894, 21920, 21947, 21973, 21999, 22025, 22051, 22077, /* 704 - 735*/ + 22103, 22129, 22155, 22181, 22207, 22233, 22260, 22286, 22312, 22338, 22364, 22390, 22416, 22442, 22468, 22494, 22520, 22546, 22572, 22599, 22625, 22651, 22677, 22703, 22729, 22755, 22781, 22807, 22833, 22859, 22885, 22912, /* 736 - 767*/ + 22938, 22964, 22990, 23016, 23042, 23068, 23095, 23121, 23147, 23174, 23200, 23226, 23253, 23279, 23306, 23333, 23359, 23386, 23413, 23439, 23466, 23493, 23520, 23546, 23573, 23600, 23627, 23654, 23681, 23708, 23736, 23763, /* 768 - 799*/ + 23790, 23817, 23844, 23872, 23899, 23926, 23954, 23981, 24009, 24036, 24064, 24092, 24119, 24147, 24175, 24203, 24231, 24258, 24286, 24314, 24342, 24371, 24399, 24427, 24455, 24483, 24512, 24540, 24568, 24597, 24625, 24654, /* 800 - 831*/ + 24682, 24711, 24740, 24768, 24797, 24826, 24855, 24884, 24913, 24942, 24971, 25000, 25029, 25058, 25088, 25117, 25146, 25176, 25205, 25235, 25264, 25294, 25324, 25354, 25383, 25413, 25443, 25473, 25503, 25533, 25564, 25594, /* 832 - 863*/ + 25624, 25654, 25685, 25715, 25746, 25776, 25807, 25838, 25869, 25899, 25930, 25961, 25992, 26024, 26055, 26086, 26117, 26149, 26180, 26212, 26243, 26275, 26307, 26339, 26371, 26403, 26435, 26467, 26499, 26531, 26564, 26596, /* 864 - 895*/ + 26629, 26661, 26694, 26727, 26760, 26793, 26826, 26859, 26892, 26925, 26959, 26992, 27026, 27059, 27093, 27127, 27161, 27195, 27229, 27263, 27298, 27332, 27367, 27401, 27436, 27471, 27506, 27541, 27576, 27612, 27647, 27683, /* 896 - 927*/ + 27718, 27754, 27790, 27826, 27862, 27898, 27935, 27971, 28008, 28045, 28082, 28119, 28156, 28193, 28231, 28269, 28306, 28344, 28382, 28421, 28459, 28498, 28536, 28575, 28615, 28654, 28693, 28733, 28773, 28813, 28853, 28893, /* 928 - 959*/ + 28934, 28975, 29016, 29057, 29098, 29140, 29182, 29224, 29266, 29309, 29352, 29395, 29438, 29482, 29526, 29570, 29614, 29659, 29704, 29750, 29795, 29841, 29888, 29934, 29982, 30029, 30077, 30125, 30174, 30223, 30273, 30323, /* 960 - 991*/ + 30373, 30425, 30476, 30528, 30581, 30634, 30688, 30743, 30798, 30855, 30911, 30969, 31028, 31087, 31148, 31210, 31273, 31337, 31402, 31469, 31538, 31609, 31681, 31756, 31834, 31915, 32000, 32089, 32185, 32288, 32404, 32541, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + { + 0, 176, 290, 388, 477, 560, 638, 712, 784, 853, 920, 985, 1049, 1111, 1171, 1231, 1289, 1346, 1403, 1458, 1513, 1567, 1620, 1672, 1724, 1775, 1826, 1876, 1926, 1975, 2024, 2072, /* 0 - 31*/ + 2119, 2167, 2214, 2260, 2306, 2352, 2398, 2443, 2487, 2532, 2576, 2620, 2663, 2707, 2750, 2792, 2835, 2877, 2919, 2961, 3003, 3044, 3085, 3126, 3166, 3207, 3247, 3287, 3327, 3367, 3406, 3446, /* 32 - 63*/ + 3485, 3524, 3563, 3601, 3640, 3678, 3716, 3754, 3792, 3830, 3867, 3905, 3942, 3979, 4016, 4053, 4090, 4126, 4163, 4199, 4235, 4272, 4308, 4343, 4379, 4415, 4450, 4486, 4521, 4556, 4591, 4626, /* 64 - 95*/ + 4661, 4696, 4731, 4765, 4800, 4834, 4868, 4903, 4937, 4971, 5005, 5038, 5072, 5106, 5139, 5173, 5206, 5240, 5273, 5306, 5339, 5372, 5405, 5438, 5470, 5503, 5536, 5568, 5601, 5633, 5665, 5698, /* 96 - 127*/ + 5730, 5762, 5794, 5826, 5858, 5889, 5921, 5953, 5984, 6016, 6047, 6079, 6110, 6141, 6173, 6204, 6235, 6266, 6297, 6328, 6359, 6389, 6420, 6451, 6481, 6512, 6543, 6573, 6603, 6634, 6664, 6694, /* 128 - 159*/ + 6724, 6755, 6785, 6815, 6845, 6874, 6904, 6934, 6964, 6994, 7023, 7053, 7082, 7112, 7141, 7171, 7200, 7230, 7259, 7288, 7317, 7346, 7376, 7405, 7434, 7463, 7491, 7520, 7549, 7578, 7607, 7635, /* 160 - 191*/ + 7664, 7693, 7721, 7750, 7778, 7807, 7835, 7863, 7892, 7920, 7948, 7977, 8005, 8033, 8061, 8089, 8117, 8145, 8173, 8201, 8229, 8257, 8284, 8312, 8340, 8367, 8395, 8423, 8450, 8478, 8505, 8533, /* 192 - 223*/ + 8560, 8588, 8615, 8642, 8670, 8697, 8724, 8751, 8778, 8806, 8833, 8860, 8887, 8914, 8941, 8968, 8995, 9021, 9048, 9075, 9102, 9129, 9155, 9182, 9209, 9235, 9262, 9288, 9315, 9341, 9368, 9394, /* 224 - 255*/ + 9421, 9447, 9474, 9500, 9526, 9553, 9579, 9606, 9632, 9658, 9685, 9711, 9738, 9764, 9790, 9817, 9843, 9870, 9896, 9922, 9949, 9975, 10002, 10028, 10054, 10081, 10107, 10134, 10160, 10186, 10213, 10239, /* 256 - 287*/ + 10266, 10292, 10318, 10345, 10371, 10398, 10424, 10450, 10477, 10503, 10530, 10556, 10582, 10609, 10635, 10662, 10688, 10714, 10741, 10767, 10794, 10820, 10846, 10873, 10899, 10926, 10952, 10978, 11005, 11031, 11058, 11084, /* 288 - 319*/ + 11110, 11137, 11163, 11190, 11216, 11242, 11269, 11295, 11322, 11348, 11374, 11401, 11427, 11454, 11480, 11506, 11533, 11559, 11586, 11612, 11638, 11665, 11691, 11718, 11744, 11770, 11797, 11823, 11850, 11876, 11902, 11929, /* 320 - 351*/ + 11955, 11982, 12008, 12034, 12061, 12087, 12114, 12140, 12166, 12193, 12219, 12246, 12272, 12298, 12325, 12351, 12378, 12404, 12430, 12457, 12483, 12510, 12536, 12562, 12589, 12615, 12642, 12668, 12694, 12721, 12747, 12774, /* 352 - 383*/ + 12800, 12826, 12853, 12879, 12906, 12932, 12958, 12985, 13011, 13038, 13064, 13090, 13117, 13143, 13170, 13196, 13222, 13249, 13275, 13302, 13328, 13354, 13381, 13407, 13434, 13460, 13486, 13513, 13539, 13566, 13592, 13618, /* 384 - 415*/ + 13645, 13671, 13698, 13724, 13750, 13777, 13803, 13830, 13856, 13882, 13909, 13935, 13962, 13988, 14014, 14041, 14067, 14094, 14120, 14146, 14173, 14199, 14226, 14252, 14278, 14305, 14331, 14358, 14384, 14410, 14437, 14463, /* 416 - 447*/ + 14490, 14516, 14542, 14569, 14595, 14622, 14648, 14674, 14701, 14727, 14754, 14780, 14806, 14833, 14859, 14886, 14912, 14938, 14965, 14991, 15018, 15044, 15070, 15097, 15123, 15150, 15176, 15202, 15229, 15255, 15282, 15308, /* 448 - 479*/ + 15334, 15361, 15387, 15414, 15440, 15466, 15493, 15519, 15546, 15572, 15598, 15625, 15651, 15678, 15704, 15730, 15757, 15783, 15810, 15836, 15862, 15889, 15915, 15942, 15968, 15994, 16021, 16047, 16074, 16100, 16126, 16153, /* 480 - 511*/ + 16179, 16206, 16232, 16258, 16285, 16311, 16338, 16364, 16390, 16417, 16443, 16470, 16496, 16522, 16549, 16575, 16602, 16628, 16654, 16681, 16707, 16734, 16760, 16786, 16813, 16839, 16866, 16892, 16918, 16945, 16971, 16998, /* 512 - 543*/ + 17024, 17050, 17077, 17103, 17130, 17156, 17182, 17209, 17235, 17262, 17288, 17314, 17341, 17367, 17394, 17420, 17446, 17473, 17499, 17526, 17552, 17578, 17605, 17631, 17658, 17684, 17710, 17737, 17763, 17790, 17816, 17842, /* 544 - 575*/ + 17869, 17895, 17922, 17948, 17974, 18001, 18027, 18054, 18080, 18106, 18133, 18159, 18186, 18212, 18238, 18265, 18291, 18318, 18344, 18370, 18397, 18423, 18450, 18476, 18502, 18529, 18555, 18582, 18608, 18634, 18661, 18687, /* 576 - 607*/ + 18714, 18740, 18766, 18793, 18819, 18846, 18872, 18898, 18925, 18951, 18978, 19004, 19030, 19057, 19083, 19110, 19136, 19162, 19189, 19215, 19242, 19268, 19294, 19321, 19347, 19374, 19400, 19426, 19453, 19479, 19506, 19532, /* 608 - 639*/ + 19558, 19585, 19611, 19638, 19664, 19690, 19717, 19743, 19770, 19796, 19822, 19849, 19875, 19902, 19928, 19954, 19981, 20007, 20034, 20060, 20086, 20113, 20139, 20166, 20192, 20218, 20245, 20271, 20298, 20324, 20350, 20377, /* 640 - 671*/ + 20403, 20430, 20456, 20482, 20509, 20535, 20562, 20588, 20614, 20641, 20667, 20694, 20720, 20746, 20773, 20799, 20826, 20852, 20878, 20905, 20931, 20958, 20984, 21010, 21037, 21063, 21090, 21116, 21142, 21169, 21195, 21222, /* 672 - 703*/ + 21248, 21274, 21301, 21327, 21354, 21380, 21406, 21433, 21459, 21486, 21512, 21538, 21565, 21591, 21618, 21644, 21670, 21697, 21723, 21750, 21776, 21802, 21829, 21855, 21882, 21908, 21934, 21961, 21987, 22014, 22040, 22066, /* 704 - 735*/ + 22093, 22119, 22146, 22172, 22198, 22225, 22251, 22278, 22304, 22330, 22357, 22383, 22410, 22436, 22462, 22489, 22515, 22542, 22568, 22594, 22621, 22647, 22674, 22700, 22726, 22753, 22779, 22806, 22832, 22858, 22885, 22911, /* 736 - 767*/ + 22938, 22964, 22990, 23017, 23043, 23070, 23097, 23123, 23150, 23177, 23203, 23230, 23257, 23284, 23310, 23337, 23364, 23391, 23418, 23445, 23472, 23499, 23527, 23554, 23581, 23608, 23635, 23663, 23690, 23717, 23745, 23772, /* 768 - 799*/ + 23800, 23827, 23855, 23883, 23910, 23938, 23966, 23994, 24021, 24049, 24077, 24105, 24133, 24161, 24189, 24217, 24245, 24274, 24302, 24330, 24358, 24387, 24415, 24444, 24472, 24501, 24529, 24558, 24587, 24615, 24644, 24673, /* 800 - 831*/ + 24702, 24731, 24760, 24789, 24818, 24847, 24876, 24905, 24934, 24964, 24993, 25022, 25052, 25081, 25111, 25140, 25170, 25200, 25230, 25259, 25289, 25319, 25349, 25379, 25409, 25439, 25470, 25500, 25530, 25560, 25591, 25621, /* 832 - 863*/ + 25652, 25683, 25713, 25744, 25775, 25806, 25837, 25867, 25899, 25930, 25961, 25992, 26023, 26055, 26086, 26118, 26149, 26181, 26213, 26244, 26276, 26308, 26340, 26372, 26404, 26436, 26469, 26501, 26534, 26566, 26599, 26631, /* 864 - 895*/ + 26664, 26697, 26730, 26763, 26796, 26829, 26862, 26896, 26929, 26962, 26996, 27030, 27063, 27097, 27131, 27165, 27199, 27234, 27268, 27302, 27337, 27372, 27406, 27441, 27476, 27511, 27546, 27581, 27617, 27652, 27688, 27724, /* 896 - 927*/ + 27759, 27795, 27831, 27868, 27904, 27940, 27977, 28013, 28050, 28087, 28124, 28161, 28199, 28236, 28274, 28312, 28349, 28387, 28426, 28464, 28503, 28541, 28580, 28619, 28658, 28698, 28737, 28777, 28817, 28857, 28897, 28937, /* 928 - 959*/ + 28978, 29019, 29060, 29101, 29142, 29184, 29226, 29268, 29310, 29353, 29396, 29439, 29482, 29526, 29569, 29614, 29658, 29703, 29748, 29793, 29839, 29885, 29931, 29977, 30024, 30072, 30119, 30168, 30216, 30265, 30314, 30364, /* 960 - 991*/ + 30415, 30465, 30517, 30569, 30621, 30674, 30728, 30782, 30837, 30893, 30949, 31006, 31064, 31123, 31183, 31245, 31307, 31370, 31435, 31501, 31569, 31639, 31710, 31784, 31861, 31940, 32023, 32111, 32205, 32306, 32418, 32551, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + { + 0, 176, 290, 388, 477, 560, 638, 712, 784, 853, 920, 985, 1049, 1111, 1171, 1231, 1289, 1346, 1403, 1458, 1513, 1567, 1620, 1672, 1724, 1775, 1826, 1876, 1926, 1975, 2024, 2072, /* 0 - 31*/ + 2119, 2167, 2214, 2260, 2306, 2352, 2398, 2443, 2487, 2532, 2576, 2620, 2663, 2707, 2750, 2792, 2835, 2877, 2919, 2961, 3003, 3044, 3085, 3126, 3166, 3207, 3247, 3287, 3327, 3367, 3406, 3446, /* 32 - 63*/ + 3485, 3524, 3563, 3601, 3640, 3678, 3716, 3754, 3792, 3830, 3867, 3905, 3942, 3979, 4016, 4053, 4090, 4126, 4163, 4199, 4235, 4272, 4308, 4343, 4379, 4415, 4450, 4486, 4521, 4556, 4591, 4626, /* 64 - 95*/ + 4661, 4696, 4731, 4765, 4800, 4834, 4868, 4903, 4937, 4971, 5005, 5038, 5072, 5106, 5139, 5173, 5206, 5240, 5273, 5306, 5339, 5372, 5405, 5438, 5470, 5503, 5536, 5568, 5601, 5633, 5665, 5698, /* 96 - 127*/ + 5730, 5762, 5794, 5826, 5858, 5889, 5921, 5953, 5984, 6016, 6047, 6079, 6110, 6141, 6173, 6204, 6235, 6266, 6297, 6328, 6359, 6389, 6420, 6451, 6481, 6512, 6543, 6573, 6603, 6634, 6664, 6694, /* 128 - 159*/ + 6724, 6755, 6785, 6815, 6845, 6874, 6904, 6934, 6964, 6994, 7023, 7053, 7082, 7112, 7141, 7171, 7200, 7230, 7259, 7288, 7317, 7346, 7376, 7405, 7434, 7463, 7491, 7520, 7549, 7578, 7607, 7635, /* 160 - 191*/ + 7664, 7693, 7721, 7750, 7778, 7807, 7835, 7863, 7892, 7920, 7948, 7977, 8005, 8033, 8061, 8089, 8117, 8145, 8173, 8201, 8229, 8257, 8284, 8312, 8340, 8367, 8395, 8423, 8450, 8478, 8505, 8533, /* 192 - 223*/ + 8560, 8588, 8615, 8642, 8670, 8697, 8724, 8751, 8778, 8806, 8833, 8860, 8887, 8914, 8941, 8968, 8995, 9021, 9048, 9075, 9102, 9129, 9155, 9182, 9209, 9235, 9262, 9288, 9315, 9341, 9368, 9394, /* 224 - 255*/ + 9421, 9447, 9474, 9500, 9526, 9553, 9579, 9606, 9632, 9658, 9685, 9711, 9738, 9764, 9790, 9817, 9843, 9870, 9896, 9922, 9949, 9975, 10002, 10028, 10054, 10081, 10107, 10134, 10160, 10186, 10213, 10239, /* 256 - 287*/ + 10266, 10292, 10318, 10345, 10371, 10398, 10424, 10450, 10477, 10503, 10530, 10556, 10582, 10609, 10635, 10662, 10688, 10714, 10741, 10767, 10794, 10820, 10846, 10873, 10899, 10926, 10952, 10978, 11005, 11031, 11058, 11084, /* 288 - 319*/ + 11110, 11137, 11163, 11190, 11216, 11242, 11269, 11295, 11322, 11348, 11374, 11401, 11427, 11454, 11480, 11506, 11533, 11559, 11586, 11612, 11638, 11665, 11691, 11718, 11744, 11770, 11797, 11823, 11850, 11876, 11902, 11929, /* 320 - 351*/ + 11955, 11982, 12008, 12034, 12061, 12087, 12114, 12140, 12166, 12193, 12219, 12246, 12272, 12298, 12325, 12351, 12378, 12404, 12430, 12457, 12483, 12510, 12536, 12562, 12589, 12615, 12642, 12668, 12694, 12721, 12747, 12774, /* 352 - 383*/ + 12800, 12826, 12853, 12879, 12906, 12932, 12958, 12985, 13011, 13038, 13064, 13090, 13117, 13143, 13170, 13196, 13222, 13249, 13275, 13302, 13328, 13354, 13381, 13407, 13434, 13460, 13486, 13513, 13539, 13566, 13592, 13618, /* 384 - 415*/ + 13645, 13671, 13698, 13724, 13750, 13777, 13803, 13830, 13856, 13882, 13909, 13935, 13962, 13988, 14014, 14041, 14067, 14094, 14120, 14146, 14173, 14199, 14226, 14252, 14278, 14305, 14331, 14358, 14384, 14410, 14437, 14463, /* 416 - 447*/ + 14490, 14516, 14542, 14569, 14595, 14622, 14648, 14674, 14701, 14727, 14754, 14780, 14806, 14833, 14859, 14886, 14912, 14938, 14965, 14991, 15018, 15044, 15070, 15097, 15123, 15150, 15176, 15202, 15229, 15255, 15282, 15308, /* 448 - 479*/ + 15334, 15361, 15387, 15414, 15440, 15466, 15493, 15519, 15546, 15572, 15598, 15625, 15651, 15678, 15704, 15730, 15757, 15783, 15810, 15836, 15862, 15889, 15915, 15942, 15968, 15994, 16021, 16047, 16074, 16100, 16126, 16153, /* 480 - 511*/ + 16179, 16206, 16232, 16258, 16285, 16311, 16338, 16364, 16390, 16417, 16443, 16470, 16496, 16522, 16549, 16575, 16602, 16628, 16654, 16681, 16707, 16734, 16760, 16786, 16813, 16839, 16866, 16892, 16918, 16945, 16971, 16998, /* 512 - 543*/ + 17024, 17050, 17077, 17103, 17130, 17156, 17182, 17209, 17235, 17262, 17288, 17314, 17341, 17367, 17394, 17420, 17446, 17473, 17499, 17526, 17552, 17578, 17605, 17631, 17658, 17684, 17710, 17737, 17763, 17790, 17816, 17842, /* 544 - 575*/ + 17869, 17895, 17922, 17948, 17974, 18001, 18027, 18054, 18080, 18106, 18133, 18159, 18186, 18212, 18238, 18265, 18291, 18318, 18344, 18370, 18397, 18423, 18450, 18476, 18502, 18529, 18555, 18582, 18608, 18634, 18661, 18687, /* 576 - 607*/ + 18714, 18740, 18766, 18793, 18819, 18846, 18872, 18898, 18925, 18951, 18978, 19004, 19030, 19057, 19083, 19110, 19136, 19162, 19189, 19215, 19242, 19268, 19294, 19321, 19347, 19374, 19400, 19426, 19453, 19479, 19506, 19532, /* 608 - 639*/ + 19558, 19585, 19611, 19638, 19664, 19690, 19717, 19743, 19770, 19796, 19822, 19849, 19875, 19902, 19928, 19954, 19981, 20007, 20034, 20060, 20086, 20113, 20139, 20166, 20192, 20218, 20245, 20271, 20298, 20324, 20350, 20377, /* 640 - 671*/ + 20403, 20430, 20456, 20482, 20509, 20535, 20562, 20588, 20614, 20641, 20667, 20694, 20720, 20746, 20773, 20799, 20826, 20852, 20878, 20905, 20931, 20958, 20984, 21010, 21037, 21063, 21090, 21116, 21142, 21169, 21195, 21222, /* 672 - 703*/ + 21248, 21274, 21301, 21327, 21354, 21380, 21406, 21433, 21459, 21486, 21512, 21538, 21565, 21591, 21618, 21644, 21670, 21697, 21723, 21750, 21776, 21802, 21829, 21855, 21882, 21908, 21934, 21961, 21987, 22014, 22040, 22066, /* 704 - 735*/ + 22093, 22119, 22146, 22172, 22198, 22225, 22251, 22278, 22304, 22330, 22357, 22383, 22410, 22436, 22462, 22489, 22515, 22542, 22568, 22594, 22621, 22647, 22674, 22700, 22726, 22753, 22779, 22806, 22832, 22858, 22885, 22911, /* 736 - 767*/ + 22938, 22964, 22990, 23017, 23043, 23070, 23097, 23123, 23150, 23177, 23203, 23230, 23257, 23284, 23310, 23337, 23364, 23391, 23418, 23445, 23472, 23499, 23527, 23554, 23581, 23608, 23635, 23663, 23690, 23717, 23745, 23772, /* 768 - 799*/ + 23800, 23827, 23855, 23883, 23910, 23938, 23966, 23994, 24021, 24049, 24077, 24105, 24133, 24161, 24189, 24217, 24245, 24274, 24302, 24330, 24358, 24387, 24415, 24444, 24472, 24501, 24529, 24558, 24587, 24615, 24644, 24673, /* 800 - 831*/ + 24702, 24731, 24760, 24789, 24818, 24847, 24876, 24905, 24934, 24964, 24993, 25022, 25052, 25081, 25111, 25140, 25170, 25200, 25230, 25259, 25289, 25319, 25349, 25379, 25409, 25439, 25470, 25500, 25530, 25560, 25591, 25621, /* 832 - 863*/ + 25652, 25683, 25713, 25744, 25775, 25806, 25837, 25867, 25899, 25930, 25961, 25992, 26023, 26055, 26086, 26118, 26149, 26181, 26213, 26244, 26276, 26308, 26340, 26372, 26404, 26436, 26469, 26501, 26534, 26566, 26599, 26631, /* 864 - 895*/ + 26664, 26697, 26730, 26763, 26796, 26829, 26862, 26896, 26929, 26962, 26996, 27030, 27063, 27097, 27131, 27165, 27199, 27234, 27268, 27302, 27337, 27372, 27406, 27441, 27476, 27511, 27546, 27581, 27617, 27652, 27688, 27724, /* 896 - 927*/ + 27759, 27795, 27831, 27868, 27904, 27940, 27977, 28013, 28050, 28087, 28124, 28161, 28199, 28236, 28274, 28312, 28349, 28387, 28426, 28464, 28503, 28541, 28580, 28619, 28658, 28698, 28737, 28777, 28817, 28857, 28897, 28937, /* 928 - 959*/ + 28978, 29019, 29060, 29101, 29142, 29184, 29226, 29268, 29310, 29353, 29396, 29439, 29482, 29526, 29569, 29614, 29658, 29703, 29748, 29793, 29839, 29885, 29931, 29977, 30024, 30072, 30119, 30168, 30216, 30265, 30314, 30364, /* 960 - 991*/ + 30415, 30465, 30517, 30569, 30621, 30674, 30728, 30782, 30837, 30893, 30949, 31006, 31064, 31123, 31183, 31245, 31307, 31370, 31435, 31501, 31569, 31639, 31710, 31784, 31861, 31940, 32023, 32111, 32205, 32306, 32418, 32551, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + { + 0, 176, 290, 388, 477, 560, 638, 712, 784, 853, 920, 985, 1049, 1111, 1171, 1231, 1289, 1346, 1403, 1458, 1513, 1567, 1620, 1672, 1724, 1775, 1826, 1876, 1926, 1975, 2024, 2072, /* 0 - 31*/ + 2119, 2167, 2214, 2260, 2306, 2352, 2398, 2443, 2487, 2532, 2576, 2620, 2663, 2707, 2750, 2792, 2835, 2877, 2919, 2961, 3003, 3044, 3085, 3126, 3166, 3207, 3247, 3287, 3327, 3367, 3406, 3446, /* 32 - 63*/ + 3485, 3524, 3563, 3601, 3640, 3678, 3716, 3754, 3792, 3830, 3867, 3905, 3942, 3979, 4016, 4053, 4090, 4126, 4163, 4199, 4235, 4272, 4308, 4343, 4379, 4415, 4450, 4486, 4521, 4556, 4591, 4626, /* 64 - 95*/ + 4661, 4696, 4731, 4765, 4800, 4834, 4868, 4903, 4937, 4971, 5005, 5038, 5072, 5106, 5139, 5173, 5206, 5240, 5273, 5306, 5339, 5372, 5405, 5438, 5470, 5503, 5536, 5568, 5601, 5633, 5665, 5698, /* 96 - 127*/ + 5730, 5762, 5794, 5826, 5858, 5889, 5921, 5953, 5984, 6016, 6047, 6079, 6110, 6141, 6173, 6204, 6235, 6266, 6297, 6328, 6359, 6389, 6420, 6451, 6481, 6512, 6543, 6573, 6603, 6634, 6664, 6694, /* 128 - 159*/ + 6724, 6755, 6785, 6815, 6845, 6874, 6904, 6934, 6964, 6994, 7023, 7053, 7082, 7112, 7141, 7171, 7200, 7230, 7259, 7288, 7317, 7346, 7376, 7405, 7434, 7463, 7491, 7520, 7549, 7578, 7607, 7635, /* 160 - 191*/ + 7664, 7693, 7721, 7750, 7778, 7807, 7835, 7863, 7892, 7920, 7948, 7977, 8005, 8033, 8061, 8089, 8117, 8145, 8173, 8201, 8229, 8257, 8284, 8312, 8340, 8367, 8395, 8423, 8450, 8478, 8505, 8533, /* 192 - 223*/ + 8560, 8588, 8615, 8642, 8670, 8697, 8724, 8751, 8778, 8806, 8833, 8860, 8887, 8914, 8941, 8968, 8995, 9021, 9048, 9075, 9102, 9129, 9155, 9182, 9209, 9235, 9262, 9288, 9315, 9341, 9368, 9394, /* 224 - 255*/ + 9421, 9447, 9474, 9500, 9526, 9553, 9579, 9606, 9632, 9658, 9685, 9711, 9738, 9764, 9790, 9817, 9843, 9870, 9896, 9922, 9949, 9975, 10002, 10028, 10054, 10081, 10107, 10134, 10160, 10186, 10213, 10239, /* 256 - 287*/ + 10266, 10292, 10318, 10345, 10371, 10398, 10424, 10450, 10477, 10503, 10530, 10556, 10582, 10609, 10635, 10662, 10688, 10714, 10741, 10767, 10794, 10820, 10846, 10873, 10899, 10926, 10952, 10978, 11005, 11031, 11058, 11084, /* 288 - 319*/ + 11110, 11137, 11163, 11190, 11216, 11242, 11269, 11295, 11322, 11348, 11374, 11401, 11427, 11454, 11480, 11506, 11533, 11559, 11586, 11612, 11638, 11665, 11691, 11718, 11744, 11770, 11797, 11823, 11850, 11876, 11902, 11929, /* 320 - 351*/ + 11955, 11982, 12008, 12034, 12061, 12087, 12114, 12140, 12166, 12193, 12219, 12246, 12272, 12298, 12325, 12351, 12378, 12404, 12430, 12457, 12483, 12510, 12536, 12562, 12589, 12615, 12642, 12668, 12694, 12721, 12747, 12774, /* 352 - 383*/ + 12800, 12826, 12853, 12879, 12906, 12932, 12958, 12985, 13011, 13038, 13064, 13090, 13117, 13143, 13170, 13196, 13222, 13249, 13275, 13302, 13328, 13354, 13381, 13407, 13434, 13460, 13486, 13513, 13539, 13566, 13592, 13618, /* 384 - 415*/ + 13645, 13671, 13698, 13724, 13750, 13777, 13803, 13830, 13856, 13882, 13909, 13935, 13962, 13988, 14014, 14041, 14067, 14094, 14120, 14146, 14173, 14199, 14226, 14252, 14278, 14305, 14331, 14358, 14384, 14410, 14437, 14463, /* 416 - 447*/ + 14490, 14516, 14542, 14569, 14595, 14622, 14648, 14674, 14701, 14727, 14754, 14780, 14806, 14833, 14859, 14886, 14912, 14938, 14965, 14991, 15018, 15044, 15070, 15097, 15123, 15150, 15176, 15202, 15229, 15255, 15282, 15308, /* 448 - 479*/ + 15334, 15361, 15387, 15414, 15440, 15466, 15493, 15519, 15546, 15572, 15598, 15625, 15651, 15678, 15704, 15730, 15757, 15783, 15810, 15836, 15862, 15889, 15915, 15942, 15968, 15994, 16021, 16047, 16074, 16100, 16126, 16153, /* 480 - 511*/ + 16179, 16206, 16232, 16258, 16285, 16311, 16338, 16364, 16390, 16417, 16443, 16470, 16496, 16522, 16549, 16575, 16602, 16628, 16654, 16681, 16707, 16734, 16760, 16786, 16813, 16839, 16866, 16892, 16918, 16945, 16971, 16998, /* 512 - 543*/ + 17024, 17050, 17077, 17103, 17130, 17156, 17182, 17209, 17235, 17262, 17288, 17314, 17341, 17367, 17394, 17420, 17446, 17473, 17499, 17526, 17552, 17578, 17605, 17631, 17658, 17684, 17710, 17737, 17763, 17790, 17816, 17842, /* 544 - 575*/ + 17869, 17895, 17922, 17948, 17974, 18001, 18027, 18054, 18080, 18106, 18133, 18159, 18186, 18212, 18238, 18265, 18291, 18318, 18344, 18370, 18397, 18423, 18450, 18476, 18502, 18529, 18555, 18582, 18608, 18634, 18661, 18687, /* 576 - 607*/ + 18714, 18740, 18766, 18793, 18819, 18846, 18872, 18898, 18925, 18951, 18978, 19004, 19030, 19057, 19083, 19110, 19136, 19162, 19189, 19215, 19242, 19268, 19294, 19321, 19347, 19374, 19400, 19426, 19453, 19479, 19506, 19532, /* 608 - 639*/ + 19558, 19585, 19611, 19638, 19664, 19690, 19717, 19743, 19770, 19796, 19822, 19849, 19875, 19902, 19928, 19954, 19981, 20007, 20034, 20060, 20086, 20113, 20139, 20166, 20192, 20218, 20245, 20271, 20298, 20324, 20350, 20377, /* 640 - 671*/ + 20403, 20430, 20456, 20482, 20509, 20535, 20562, 20588, 20614, 20641, 20667, 20694, 20720, 20746, 20773, 20799, 20826, 20852, 20878, 20905, 20931, 20958, 20984, 21010, 21037, 21063, 21090, 21116, 21142, 21169, 21195, 21222, /* 672 - 703*/ + 21248, 21274, 21301, 21327, 21354, 21380, 21406, 21433, 21459, 21486, 21512, 21538, 21565, 21591, 21618, 21644, 21670, 21697, 21723, 21750, 21776, 21802, 21829, 21855, 21882, 21908, 21934, 21961, 21987, 22014, 22040, 22066, /* 704 - 735*/ + 22093, 22119, 22146, 22172, 22198, 22225, 22251, 22278, 22304, 22330, 22357, 22383, 22410, 22436, 22462, 22489, 22515, 22542, 22568, 22594, 22621, 22647, 22674, 22700, 22726, 22753, 22779, 22806, 22832, 22858, 22885, 22911, /* 736 - 767*/ + 22938, 22964, 22990, 23017, 23043, 23070, 23097, 23123, 23150, 23177, 23203, 23230, 23257, 23284, 23310, 23337, 23364, 23391, 23418, 23445, 23472, 23499, 23527, 23554, 23581, 23608, 23635, 23663, 23690, 23717, 23745, 23772, /* 768 - 799*/ + 23800, 23827, 23855, 23883, 23910, 23938, 23966, 23994, 24021, 24049, 24077, 24105, 24133, 24161, 24189, 24217, 24245, 24274, 24302, 24330, 24358, 24387, 24415, 24444, 24472, 24501, 24529, 24558, 24587, 24615, 24644, 24673, /* 800 - 831*/ + 24702, 24731, 24760, 24789, 24818, 24847, 24876, 24905, 24934, 24964, 24993, 25022, 25052, 25081, 25111, 25140, 25170, 25200, 25230, 25259, 25289, 25319, 25349, 25379, 25409, 25439, 25470, 25500, 25530, 25560, 25591, 25621, /* 832 - 863*/ + 25652, 25683, 25713, 25744, 25775, 25806, 25837, 25867, 25899, 25930, 25961, 25992, 26023, 26055, 26086, 26118, 26149, 26181, 26213, 26244, 26276, 26308, 26340, 26372, 26404, 26436, 26469, 26501, 26534, 26566, 26599, 26631, /* 864 - 895*/ + 26664, 26697, 26730, 26763, 26796, 26829, 26862, 26896, 26929, 26962, 26996, 27030, 27063, 27097, 27131, 27165, 27199, 27234, 27268, 27302, 27337, 27372, 27406, 27441, 27476, 27511, 27546, 27581, 27617, 27652, 27688, 27724, /* 896 - 927*/ + 27759, 27795, 27831, 27868, 27904, 27940, 27977, 28013, 28050, 28087, 28124, 28161, 28199, 28236, 28274, 28312, 28349, 28387, 28426, 28464, 28503, 28541, 28580, 28619, 28658, 28698, 28737, 28777, 28817, 28857, 28897, 28937, /* 928 - 959*/ + 28978, 29019, 29060, 29101, 29142, 29184, 29226, 29268, 29310, 29353, 29396, 29439, 29482, 29526, 29569, 29614, 29658, 29703, 29748, 29793, 29839, 29885, 29931, 29977, 30024, 30072, 30119, 30168, 30216, 30265, 30314, 30364, /* 960 - 991*/ + 30415, 30465, 30517, 30569, 30621, 30674, 30728, 30782, 30837, 30893, 30949, 31006, 31064, 31123, 31183, 31245, 31307, 31370, 31435, 31501, 31569, 31639, 31710, 31784, 31861, 31940, 32023, 32111, 32205, 32306, 32418, 32551, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + { + 0, 176, 290, 388, 477, 560, 638, 712, 784, 853, 920, 985, 1049, 1111, 1171, 1231, 1289, 1346, 1403, 1458, 1513, 1567, 1620, 1672, 1724, 1775, 1826, 1876, 1926, 1975, 2024, 2072, /* 0 - 31*/ + 2119, 2167, 2214, 2260, 2306, 2352, 2398, 2443, 2487, 2532, 2576, 2620, 2663, 2707, 2750, 2792, 2835, 2877, 2919, 2961, 3003, 3044, 3085, 3126, 3166, 3207, 3247, 3287, 3327, 3367, 3406, 3446, /* 32 - 63*/ + 3485, 3524, 3563, 3601, 3640, 3678, 3716, 3754, 3792, 3830, 3867, 3905, 3942, 3979, 4016, 4053, 4090, 4126, 4163, 4199, 4235, 4272, 4308, 4343, 4379, 4415, 4450, 4486, 4521, 4556, 4591, 4626, /* 64 - 95*/ + 4661, 4696, 4731, 4765, 4800, 4834, 4868, 4903, 4937, 4971, 5005, 5038, 5072, 5106, 5139, 5173, 5206, 5240, 5273, 5306, 5339, 5372, 5405, 5438, 5470, 5503, 5536, 5568, 5601, 5633, 5665, 5698, /* 96 - 127*/ + 5730, 5762, 5794, 5826, 5858, 5889, 5921, 5953, 5984, 6016, 6047, 6079, 6110, 6141, 6173, 6204, 6235, 6266, 6297, 6328, 6359, 6389, 6420, 6451, 6481, 6512, 6543, 6573, 6603, 6634, 6664, 6694, /* 128 - 159*/ + 6724, 6755, 6785, 6815, 6845, 6874, 6904, 6934, 6964, 6994, 7023, 7053, 7082, 7112, 7141, 7171, 7200, 7230, 7259, 7288, 7317, 7346, 7376, 7405, 7434, 7463, 7491, 7520, 7549, 7578, 7607, 7635, /* 160 - 191*/ + 7664, 7693, 7721, 7750, 7778, 7807, 7835, 7863, 7892, 7920, 7948, 7977, 8005, 8033, 8061, 8089, 8117, 8145, 8173, 8201, 8229, 8257, 8284, 8312, 8340, 8367, 8395, 8423, 8450, 8478, 8505, 8533, /* 192 - 223*/ + 8560, 8588, 8615, 8642, 8670, 8697, 8724, 8751, 8778, 8806, 8833, 8860, 8887, 8914, 8941, 8968, 8995, 9021, 9048, 9075, 9102, 9129, 9155, 9182, 9209, 9235, 9262, 9288, 9315, 9341, 9368, 9394, /* 224 - 255*/ + 9421, 9447, 9474, 9500, 9526, 9553, 9579, 9606, 9632, 9658, 9685, 9711, 9738, 9764, 9790, 9817, 9843, 9870, 9896, 9922, 9949, 9975, 10002, 10028, 10054, 10081, 10107, 10134, 10160, 10186, 10213, 10239, /* 256 - 287*/ + 10266, 10292, 10318, 10345, 10371, 10398, 10424, 10450, 10477, 10503, 10530, 10556, 10582, 10609, 10635, 10662, 10688, 10714, 10741, 10767, 10794, 10820, 10846, 10873, 10899, 10926, 10952, 10978, 11005, 11031, 11058, 11084, /* 288 - 319*/ + 11110, 11137, 11163, 11190, 11216, 11242, 11269, 11295, 11322, 11348, 11374, 11401, 11427, 11454, 11480, 11506, 11533, 11559, 11586, 11612, 11638, 11665, 11691, 11718, 11744, 11770, 11797, 11823, 11850, 11876, 11902, 11929, /* 320 - 351*/ + 11955, 11982, 12008, 12034, 12061, 12087, 12114, 12140, 12166, 12193, 12219, 12246, 12272, 12298, 12325, 12351, 12378, 12404, 12430, 12457, 12483, 12510, 12536, 12562, 12589, 12615, 12642, 12668, 12694, 12721, 12747, 12774, /* 352 - 383*/ + 12800, 12826, 12853, 12879, 12906, 12932, 12958, 12985, 13011, 13038, 13064, 13090, 13117, 13143, 13170, 13196, 13222, 13249, 13275, 13302, 13328, 13354, 13381, 13407, 13434, 13460, 13486, 13513, 13539, 13566, 13592, 13618, /* 384 - 415*/ + 13645, 13671, 13698, 13724, 13750, 13777, 13803, 13830, 13856, 13882, 13909, 13935, 13962, 13988, 14014, 14041, 14067, 14094, 14120, 14146, 14173, 14199, 14226, 14252, 14278, 14305, 14331, 14358, 14384, 14410, 14437, 14463, /* 416 - 447*/ + 14490, 14516, 14542, 14569, 14595, 14622, 14648, 14674, 14701, 14727, 14754, 14780, 14806, 14833, 14859, 14886, 14912, 14938, 14965, 14991, 15018, 15044, 15070, 15097, 15123, 15150, 15176, 15202, 15229, 15255, 15282, 15308, /* 448 - 479*/ + 15334, 15361, 15387, 15414, 15440, 15466, 15493, 15519, 15546, 15572, 15598, 15625, 15651, 15678, 15704, 15730, 15757, 15783, 15810, 15836, 15862, 15889, 15915, 15942, 15968, 15994, 16021, 16047, 16074, 16100, 16126, 16153, /* 480 - 511*/ + 16179, 16206, 16232, 16258, 16285, 16311, 16338, 16364, 16390, 16417, 16443, 16470, 16496, 16522, 16549, 16575, 16602, 16628, 16654, 16681, 16707, 16734, 16760, 16786, 16813, 16839, 16866, 16892, 16918, 16945, 16971, 16998, /* 512 - 543*/ + 17024, 17050, 17077, 17103, 17130, 17156, 17182, 17209, 17235, 17262, 17288, 17314, 17341, 17367, 17394, 17420, 17446, 17473, 17499, 17526, 17552, 17578, 17605, 17631, 17658, 17684, 17710, 17737, 17763, 17790, 17816, 17842, /* 544 - 575*/ + 17869, 17895, 17922, 17948, 17974, 18001, 18027, 18054, 18080, 18106, 18133, 18159, 18186, 18212, 18238, 18265, 18291, 18318, 18344, 18370, 18397, 18423, 18450, 18476, 18502, 18529, 18555, 18582, 18608, 18634, 18661, 18687, /* 576 - 607*/ + 18714, 18740, 18766, 18793, 18819, 18846, 18872, 18898, 18925, 18951, 18978, 19004, 19030, 19057, 19083, 19110, 19136, 19162, 19189, 19215, 19242, 19268, 19294, 19321, 19347, 19374, 19400, 19426, 19453, 19479, 19506, 19532, /* 608 - 639*/ + 19558, 19585, 19611, 19638, 19664, 19690, 19717, 19743, 19770, 19796, 19822, 19849, 19875, 19902, 19928, 19954, 19981, 20007, 20034, 20060, 20086, 20113, 20139, 20166, 20192, 20218, 20245, 20271, 20298, 20324, 20350, 20377, /* 640 - 671*/ + 20403, 20430, 20456, 20482, 20509, 20535, 20562, 20588, 20614, 20641, 20667, 20694, 20720, 20746, 20773, 20799, 20826, 20852, 20878, 20905, 20931, 20958, 20984, 21010, 21037, 21063, 21090, 21116, 21142, 21169, 21195, 21222, /* 672 - 703*/ + 21248, 21274, 21301, 21327, 21354, 21380, 21406, 21433, 21459, 21486, 21512, 21538, 21565, 21591, 21618, 21644, 21670, 21697, 21723, 21750, 21776, 21802, 21829, 21855, 21882, 21908, 21934, 21961, 21987, 22014, 22040, 22066, /* 704 - 735*/ + 22093, 22119, 22146, 22172, 22198, 22225, 22251, 22278, 22304, 22330, 22357, 22383, 22410, 22436, 22462, 22489, 22515, 22542, 22568, 22594, 22621, 22647, 22674, 22700, 22726, 22753, 22779, 22806, 22832, 22858, 22885, 22911, /* 736 - 767*/ + 22938, 22964, 22990, 23017, 23043, 23070, 23097, 23123, 23150, 23177, 23203, 23230, 23257, 23284, 23310, 23337, 23364, 23391, 23418, 23445, 23472, 23499, 23527, 23554, 23581, 23608, 23635, 23663, 23690, 23717, 23745, 23772, /* 768 - 799*/ + 23800, 23827, 23855, 23883, 23910, 23938, 23966, 23994, 24021, 24049, 24077, 24105, 24133, 24161, 24189, 24217, 24245, 24274, 24302, 24330, 24358, 24387, 24415, 24444, 24472, 24501, 24529, 24558, 24587, 24615, 24644, 24673, /* 800 - 831*/ + 24702, 24731, 24760, 24789, 24818, 24847, 24876, 24905, 24934, 24964, 24993, 25022, 25052, 25081, 25111, 25140, 25170, 25200, 25230, 25259, 25289, 25319, 25349, 25379, 25409, 25439, 25470, 25500, 25530, 25560, 25591, 25621, /* 832 - 863*/ + 25652, 25683, 25713, 25744, 25775, 25806, 25837, 25867, 25899, 25930, 25961, 25992, 26023, 26055, 26086, 26118, 26149, 26181, 26213, 26244, 26276, 26308, 26340, 26372, 26404, 26436, 26469, 26501, 26534, 26566, 26599, 26631, /* 864 - 895*/ + 26664, 26697, 26730, 26763, 26796, 26829, 26862, 26896, 26929, 26962, 26996, 27030, 27063, 27097, 27131, 27165, 27199, 27234, 27268, 27302, 27337, 27372, 27406, 27441, 27476, 27511, 27546, 27581, 27617, 27652, 27688, 27724, /* 896 - 927*/ + 27759, 27795, 27831, 27868, 27904, 27940, 27977, 28013, 28050, 28087, 28124, 28161, 28199, 28236, 28274, 28312, 28349, 28387, 28426, 28464, 28503, 28541, 28580, 28619, 28658, 28698, 28737, 28777, 28817, 28857, 28897, 28937, /* 928 - 959*/ + 28978, 29019, 29060, 29101, 29142, 29184, 29226, 29268, 29310, 29353, 29396, 29439, 29482, 29526, 29569, 29614, 29658, 29703, 29748, 29793, 29839, 29885, 29931, 29977, 30024, 30072, 30119, 30168, 30216, 30265, 30314, 30364, /* 960 - 991*/ + 30415, 30465, 30517, 30569, 30621, 30674, 30728, 30782, 30837, 30893, 30949, 31006, 31064, 31123, 31183, 31245, 31307, 31370, 31435, 31501, 31569, 31639, 31710, 31784, 31861, 31940, 32023, 32111, 32205, 32306, 32418, 32551, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + { + 0, 124, 212, 290, 362, 431, 496, 558, 619, 678, 736, 792, 847, 901, 954, 1006, 1058, 1108, 1158, 1208, 1257, 1305, 1353, 1400, 1447, 1493, 1539, 1585, 1630, 1675, 1719, 1763, /* 0 - 31*/ + 1807, 1850, 1894, 1936, 1979, 2021, 2064, 2105, 2147, 2188, 2229, 2270, 2311, 2352, 2392, 2432, 2472, 2511, 2551, 2590, 2629, 2668, 2707, 2746, 2784, 2823, 2861, 2899, 2937, 2975, 3012, 3050, /* 32 - 63*/ + 3087, 3124, 3161, 3198, 3235, 3272, 3308, 3345, 3381, 3418, 3454, 3490, 3526, 3561, 3597, 3633, 3668, 3703, 3739, 3774, 3809, 3844, 3879, 3914, 3948, 3983, 4018, 4052, 4086, 4121, 4155, 4189, /* 64 - 95*/ + 4223, 4257, 4291, 4325, 4358, 4392, 4426, 4459, 4492, 4526, 4559, 4592, 4625, 4658, 4691, 4724, 4757, 4790, 4823, 4855, 4888, 4921, 4953, 4985, 5018, 5050, 5082, 5114, 5147, 5179, 5211, 5242, /* 96 - 127*/ + 5274, 5306, 5338, 5370, 5401, 5433, 5464, 5496, 5527, 5559, 5590, 5621, 5653, 5684, 5715, 5746, 5777, 5808, 5839, 5870, 5901, 5931, 5962, 5993, 6023, 6054, 6085, 6115, 6145, 6176, 6206, 6237, /* 128 - 159*/ + 6267, 6297, 6327, 6358, 6388, 6418, 6448, 6478, 6508, 6538, 6567, 6597, 6627, 6657, 6687, 6716, 6746, 6775, 6805, 6835, 6864, 6893, 6923, 6952, 6982, 7011, 7040, 7069, 7099, 7128, 7157, 7186, /* 160 - 191*/ + 7215, 7244, 7273, 7302, 7331, 7360, 7389, 7417, 7446, 7475, 7504, 7532, 7561, 7590, 7618, 7647, 7675, 7704, 7732, 7761, 7789, 7818, 7846, 7874, 7903, 7931, 7959, 7987, 8015, 8044, 8072, 8100, /* 192 - 223*/ + 8128, 8156, 8184, 8212, 8240, 8268, 8295, 8323, 8351, 8379, 8407, 8434, 8462, 8490, 8518, 8545, 8573, 8600, 8628, 8656, 8683, 8711, 8738, 8765, 8793, 8820, 8848, 8875, 8902, 8929, 8957, 8984, /* 224 - 255*/ + 9011, 9038, 9066, 9093, 9120, 9147, 9174, 9202, 9229, 9256, 9283, 9310, 9338, 9365, 9392, 9419, 9446, 9474, 9501, 9528, 9555, 9582, 9610, 9637, 9664, 9691, 9718, 9746, 9773, 9800, 9827, 9854, /* 256 - 287*/ + 9882, 9909, 9936, 9963, 9990, 10018, 10045, 10072, 10099, 10126, 10154, 10181, 10208, 10235, 10262, 10290, 10317, 10344, 10371, 10398, 10426, 10453, 10480, 10507, 10534, 10562, 10589, 10616, 10643, 10670, 10698, 10725, /* 288 - 319*/ + 10752, 10779, 10806, 10834, 10861, 10888, 10915, 10942, 10970, 10997, 11024, 11051, 11078, 11106, 11133, 11160, 11187, 11214, 11242, 11269, 11296, 11323, 11350, 11378, 11405, 11432, 11459, 11486, 11514, 11541, 11568, 11595, /* 320 - 351*/ + 11622, 11650, 11677, 11704, 11731, 11758, 11786, 11813, 11840, 11867, 11894, 11922, 11949, 11976, 12003, 12030, 12058, 12085, 12112, 12139, 12166, 12194, 12221, 12248, 12275, 12302, 12330, 12357, 12384, 12411, 12438, 12466, /* 352 - 383*/ + 12493, 12520, 12547, 12574, 12602, 12629, 12656, 12683, 12710, 12738, 12765, 12792, 12819, 12846, 12874, 12901, 12928, 12955, 12982, 13010, 13037, 13064, 13091, 13118, 13146, 13173, 13200, 13227, 13254, 13282, 13309, 13336, /* 384 - 415*/ + 13363, 13390, 13418, 13445, 13472, 13499, 13526, 13554, 13581, 13608, 13635, 13662, 13690, 13717, 13744, 13771, 13798, 13826, 13853, 13880, 13907, 13934, 13962, 13989, 14016, 14043, 14070, 14098, 14125, 14152, 14179, 14206, /* 416 - 447*/ + 14234, 14261, 14288, 14315, 14342, 14370, 14397, 14424, 14451, 14478, 14506, 14533, 14560, 14587, 14614, 14642, 14669, 14696, 14723, 14750, 14778, 14805, 14832, 14859, 14886, 14914, 14941, 14968, 14995, 15022, 15050, 15077, /* 448 - 479*/ + 15104, 15131, 15158, 15186, 15213, 15240, 15267, 15294, 15322, 15349, 15376, 15403, 15430, 15458, 15485, 15512, 15539, 15566, 15594, 15621, 15648, 15675, 15702, 15730, 15757, 15784, 15811, 15838, 15866, 15893, 15920, 15947, /* 480 - 511*/ + 15974, 16002, 16029, 16056, 16083, 16110, 16138, 16165, 16192, 16219, 16246, 16274, 16301, 16328, 16355, 16382, 16410, 16437, 16464, 16491, 16518, 16546, 16573, 16600, 16627, 16654, 16682, 16709, 16736, 16763, 16790, 16818, /* 512 - 543*/ + 16845, 16872, 16899, 16926, 16954, 16981, 17008, 17035, 17062, 17090, 17117, 17144, 17171, 17198, 17226, 17253, 17280, 17307, 17334, 17362, 17389, 17416, 17443, 17470, 17498, 17525, 17552, 17579, 17606, 17634, 17661, 17688, /* 544 - 575*/ + 17715, 17742, 17770, 17797, 17824, 17851, 17878, 17906, 17933, 17960, 17987, 18014, 18042, 18069, 18096, 18123, 18150, 18178, 18205, 18232, 18259, 18286, 18314, 18341, 18368, 18395, 18422, 18450, 18477, 18504, 18531, 18558, /* 576 - 607*/ + 18586, 18613, 18640, 18667, 18694, 18722, 18749, 18776, 18803, 18830, 18858, 18885, 18912, 18939, 18966, 18994, 19021, 19048, 19075, 19102, 19130, 19157, 19184, 19211, 19238, 19266, 19293, 19320, 19347, 19374, 19402, 19429, /* 608 - 639*/ + 19456, 19483, 19510, 19538, 19565, 19592, 19619, 19646, 19674, 19701, 19728, 19755, 19782, 19810, 19837, 19864, 19891, 19918, 19946, 19973, 20000, 20027, 20054, 20082, 20109, 20136, 20163, 20190, 20218, 20245, 20272, 20299, /* 640 - 671*/ + 20326, 20354, 20381, 20408, 20435, 20462, 20490, 20517, 20544, 20571, 20598, 20626, 20653, 20680, 20707, 20734, 20762, 20789, 20816, 20843, 20870, 20898, 20925, 20952, 20979, 21006, 21034, 21061, 21088, 21115, 21142, 21170, /* 672 - 703*/ + 21197, 21224, 21251, 21278, 21306, 21333, 21360, 21387, 21414, 21442, 21469, 21496, 21523, 21550, 21578, 21605, 21632, 21659, 21686, 21714, 21741, 21768, 21795, 21822, 21850, 21877, 21904, 21931, 21958, 21986, 22013, 22040, /* 704 - 735*/ + 22067, 22094, 22122, 22149, 22176, 22203, 22230, 22258, 22285, 22312, 22339, 22366, 22394, 22421, 22448, 22475, 22502, 22530, 22557, 22584, 22611, 22638, 22666, 22693, 22720, 22747, 22774, 22802, 22829, 22856, 22883, 22910, /* 736 - 767*/ + 22938, 22965, 22992, 23019, 23047, 23074, 23101, 23129, 23156, 23184, 23211, 23239, 23266, 23294, 23322, 23349, 23377, 23405, 23432, 23460, 23488, 23516, 23544, 23572, 23600, 23628, 23656, 23684, 23712, 23740, 23768, 23797, /* 768 - 799*/ + 23825, 23853, 23881, 23910, 23938, 23967, 23995, 24024, 24052, 24081, 24109, 24138, 24167, 24196, 24224, 24253, 24282, 24311, 24340, 24369, 24398, 24427, 24456, 24485, 24515, 24544, 24573, 24603, 24632, 24661, 24691, 24720, /* 800 - 831*/ + 24750, 24779, 24809, 24839, 24869, 24898, 24928, 24958, 24988, 25018, 25048, 25078, 25108, 25138, 25169, 25199, 25229, 25260, 25290, 25320, 25351, 25381, 25412, 25443, 25474, 25504, 25535, 25566, 25597, 25628, 25659, 25690, /* 832 - 863*/ + 25721, 25753, 25784, 25815, 25847, 25878, 25910, 25941, 25973, 26004, 26036, 26068, 26100, 26132, 26164, 26196, 26228, 26260, 26293, 26325, 26357, 26390, 26422, 26455, 26488, 26520, 26553, 26586, 26619, 26652, 26685, 26718, /* 864 - 895*/ + 26752, 26785, 26818, 26852, 26885, 26919, 26953, 26986, 27020, 27054, 27088, 27123, 27157, 27191, 27225, 27260, 27295, 27329, 27364, 27399, 27434, 27469, 27504, 27539, 27574, 27610, 27645, 27681, 27717, 27753, 27788, 27825, /* 896 - 927*/ + 27861, 27897, 27933, 27970, 28006, 28043, 28080, 28117, 28154, 28191, 28229, 28266, 28304, 28341, 28379, 28417, 28455, 28493, 28532, 28570, 28609, 28648, 28687, 28726, 28765, 28805, 28844, 28884, 28924, 28964, 29005, 29045, /* 928 - 959*/ + 29086, 29127, 29168, 29209, 29250, 29292, 29334, 29376, 29418, 29461, 29503, 29546, 29589, 29633, 29676, 29720, 29765, 29809, 29854, 29899, 29944, 29990, 30036, 30082, 30128, 30175, 30223, 30270, 30318, 30367, 30415, 30465, /* 960 - 991*/ + 30514, 30564, 30615, 30666, 30718, 30770, 30823, 30876, 30930, 30984, 31040, 31096, 31153, 31210, 31269, 31328, 31389, 31450, 31513, 31577, 31643, 31710, 31779, 31850, 31924, 32000, 32079, 32163, 32251, 32347, 32452, 32574, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + { + 0, 124, 212, 290, 362, 431, 496, 558, 619, 678, 736, 792, 847, 901, 954, 1006, 1058, 1108, 1158, 1208, 1257, 1305, 1353, 1400, 1447, 1493, 1539, 1585, 1630, 1675, 1719, 1763, /* 0 - 31*/ + 1807, 1850, 1894, 1936, 1979, 2021, 2064, 2105, 2147, 2188, 2229, 2270, 2311, 2352, 2392, 2432, 2472, 2511, 2551, 2590, 2629, 2668, 2707, 2746, 2784, 2823, 2861, 2899, 2937, 2975, 3012, 3050, /* 32 - 63*/ + 3087, 3124, 3161, 3198, 3235, 3272, 3308, 3345, 3381, 3418, 3454, 3490, 3526, 3561, 3597, 3633, 3668, 3703, 3739, 3774, 3809, 3844, 3879, 3914, 3948, 3983, 4018, 4052, 4086, 4121, 4155, 4189, /* 64 - 95*/ + 4223, 4257, 4291, 4325, 4358, 4392, 4426, 4459, 4492, 4526, 4559, 4592, 4625, 4658, 4691, 4724, 4757, 4790, 4823, 4855, 4888, 4921, 4953, 4985, 5018, 5050, 5082, 5114, 5147, 5179, 5211, 5242, /* 96 - 127*/ + 5274, 5306, 5338, 5370, 5401, 5433, 5464, 5496, 5527, 5559, 5590, 5621, 5653, 5684, 5715, 5746, 5777, 5808, 5839, 5870, 5901, 5931, 5962, 5993, 6023, 6054, 6085, 6115, 6145, 6176, 6206, 6237, /* 128 - 159*/ + 6267, 6297, 6327, 6358, 6388, 6418, 6448, 6478, 6508, 6538, 6567, 6597, 6627, 6657, 6687, 6716, 6746, 6775, 6805, 6835, 6864, 6893, 6923, 6952, 6982, 7011, 7040, 7069, 7099, 7128, 7157, 7186, /* 160 - 191*/ + 7215, 7244, 7273, 7302, 7331, 7360, 7389, 7417, 7446, 7475, 7504, 7532, 7561, 7590, 7618, 7647, 7675, 7704, 7732, 7761, 7789, 7818, 7846, 7874, 7903, 7931, 7959, 7987, 8015, 8044, 8072, 8100, /* 192 - 223*/ + 8128, 8156, 8184, 8212, 8240, 8268, 8295, 8323, 8351, 8379, 8407, 8434, 8462, 8490, 8518, 8545, 8573, 8600, 8628, 8656, 8683, 8711, 8738, 8765, 8793, 8820, 8848, 8875, 8902, 8929, 8957, 8984, /* 224 - 255*/ + 9011, 9038, 9066, 9093, 9120, 9147, 9174, 9202, 9229, 9256, 9283, 9310, 9338, 9365, 9392, 9419, 9446, 9474, 9501, 9528, 9555, 9582, 9610, 9637, 9664, 9691, 9718, 9746, 9773, 9800, 9827, 9854, /* 256 - 287*/ + 9882, 9909, 9936, 9963, 9990, 10018, 10045, 10072, 10099, 10126, 10154, 10181, 10208, 10235, 10262, 10290, 10317, 10344, 10371, 10398, 10426, 10453, 10480, 10507, 10534, 10562, 10589, 10616, 10643, 10670, 10698, 10725, /* 288 - 319*/ + 10752, 10779, 10806, 10834, 10861, 10888, 10915, 10942, 10970, 10997, 11024, 11051, 11078, 11106, 11133, 11160, 11187, 11214, 11242, 11269, 11296, 11323, 11350, 11378, 11405, 11432, 11459, 11486, 11514, 11541, 11568, 11595, /* 320 - 351*/ + 11622, 11650, 11677, 11704, 11731, 11758, 11786, 11813, 11840, 11867, 11894, 11922, 11949, 11976, 12003, 12030, 12058, 12085, 12112, 12139, 12166, 12194, 12221, 12248, 12275, 12302, 12330, 12357, 12384, 12411, 12438, 12466, /* 352 - 383*/ + 12493, 12520, 12547, 12574, 12602, 12629, 12656, 12683, 12710, 12738, 12765, 12792, 12819, 12846, 12874, 12901, 12928, 12955, 12982, 13010, 13037, 13064, 13091, 13118, 13146, 13173, 13200, 13227, 13254, 13282, 13309, 13336, /* 384 - 415*/ + 13363, 13390, 13418, 13445, 13472, 13499, 13526, 13554, 13581, 13608, 13635, 13662, 13690, 13717, 13744, 13771, 13798, 13826, 13853, 13880, 13907, 13934, 13962, 13989, 14016, 14043, 14070, 14098, 14125, 14152, 14179, 14206, /* 416 - 447*/ + 14234, 14261, 14288, 14315, 14342, 14370, 14397, 14424, 14451, 14478, 14506, 14533, 14560, 14587, 14614, 14642, 14669, 14696, 14723, 14750, 14778, 14805, 14832, 14859, 14886, 14914, 14941, 14968, 14995, 15022, 15050, 15077, /* 448 - 479*/ + 15104, 15131, 15158, 15186, 15213, 15240, 15267, 15294, 15322, 15349, 15376, 15403, 15430, 15458, 15485, 15512, 15539, 15566, 15594, 15621, 15648, 15675, 15702, 15730, 15757, 15784, 15811, 15838, 15866, 15893, 15920, 15947, /* 480 - 511*/ + 15974, 16002, 16029, 16056, 16083, 16110, 16138, 16165, 16192, 16219, 16246, 16274, 16301, 16328, 16355, 16382, 16410, 16437, 16464, 16491, 16518, 16546, 16573, 16600, 16627, 16654, 16682, 16709, 16736, 16763, 16790, 16818, /* 512 - 543*/ + 16845, 16872, 16899, 16926, 16954, 16981, 17008, 17035, 17062, 17090, 17117, 17144, 17171, 17198, 17226, 17253, 17280, 17307, 17334, 17362, 17389, 17416, 17443, 17470, 17498, 17525, 17552, 17579, 17606, 17634, 17661, 17688, /* 544 - 575*/ + 17715, 17742, 17770, 17797, 17824, 17851, 17878, 17906, 17933, 17960, 17987, 18014, 18042, 18069, 18096, 18123, 18150, 18178, 18205, 18232, 18259, 18286, 18314, 18341, 18368, 18395, 18422, 18450, 18477, 18504, 18531, 18558, /* 576 - 607*/ + 18586, 18613, 18640, 18667, 18694, 18722, 18749, 18776, 18803, 18830, 18858, 18885, 18912, 18939, 18966, 18994, 19021, 19048, 19075, 19102, 19130, 19157, 19184, 19211, 19238, 19266, 19293, 19320, 19347, 19374, 19402, 19429, /* 608 - 639*/ + 19456, 19483, 19510, 19538, 19565, 19592, 19619, 19646, 19674, 19701, 19728, 19755, 19782, 19810, 19837, 19864, 19891, 19918, 19946, 19973, 20000, 20027, 20054, 20082, 20109, 20136, 20163, 20190, 20218, 20245, 20272, 20299, /* 640 - 671*/ + 20326, 20354, 20381, 20408, 20435, 20462, 20490, 20517, 20544, 20571, 20598, 20626, 20653, 20680, 20707, 20734, 20762, 20789, 20816, 20843, 20870, 20898, 20925, 20952, 20979, 21006, 21034, 21061, 21088, 21115, 21142, 21170, /* 672 - 703*/ + 21197, 21224, 21251, 21278, 21306, 21333, 21360, 21387, 21414, 21442, 21469, 21496, 21523, 21550, 21578, 21605, 21632, 21659, 21686, 21714, 21741, 21768, 21795, 21822, 21850, 21877, 21904, 21931, 21958, 21986, 22013, 22040, /* 704 - 735*/ + 22067, 22094, 22122, 22149, 22176, 22203, 22230, 22258, 22285, 22312, 22339, 22366, 22394, 22421, 22448, 22475, 22502, 22530, 22557, 22584, 22611, 22638, 22666, 22693, 22720, 22747, 22774, 22802, 22829, 22856, 22883, 22910, /* 736 - 767*/ + 22938, 22965, 22992, 23019, 23047, 23074, 23101, 23129, 23156, 23184, 23211, 23239, 23266, 23294, 23322, 23349, 23377, 23405, 23432, 23460, 23488, 23516, 23544, 23572, 23600, 23628, 23656, 23684, 23712, 23740, 23768, 23797, /* 768 - 799*/ + 23825, 23853, 23881, 23910, 23938, 23967, 23995, 24024, 24052, 24081, 24109, 24138, 24167, 24196, 24224, 24253, 24282, 24311, 24340, 24369, 24398, 24427, 24456, 24485, 24515, 24544, 24573, 24603, 24632, 24661, 24691, 24720, /* 800 - 831*/ + 24750, 24779, 24809, 24839, 24869, 24898, 24928, 24958, 24988, 25018, 25048, 25078, 25108, 25138, 25169, 25199, 25229, 25260, 25290, 25320, 25351, 25381, 25412, 25443, 25474, 25504, 25535, 25566, 25597, 25628, 25659, 25690, /* 832 - 863*/ + 25721, 25753, 25784, 25815, 25847, 25878, 25910, 25941, 25973, 26004, 26036, 26068, 26100, 26132, 26164, 26196, 26228, 26260, 26293, 26325, 26357, 26390, 26422, 26455, 26488, 26520, 26553, 26586, 26619, 26652, 26685, 26718, /* 864 - 895*/ + 26752, 26785, 26818, 26852, 26885, 26919, 26953, 26986, 27020, 27054, 27088, 27123, 27157, 27191, 27225, 27260, 27295, 27329, 27364, 27399, 27434, 27469, 27504, 27539, 27574, 27610, 27645, 27681, 27717, 27753, 27788, 27825, /* 896 - 927*/ + 27861, 27897, 27933, 27970, 28006, 28043, 28080, 28117, 28154, 28191, 28229, 28266, 28304, 28341, 28379, 28417, 28455, 28493, 28532, 28570, 28609, 28648, 28687, 28726, 28765, 28805, 28844, 28884, 28924, 28964, 29005, 29045, /* 928 - 959*/ + 29086, 29127, 29168, 29209, 29250, 29292, 29334, 29376, 29418, 29461, 29503, 29546, 29589, 29633, 29676, 29720, 29765, 29809, 29854, 29899, 29944, 29990, 30036, 30082, 30128, 30175, 30223, 30270, 30318, 30367, 30415, 30465, /* 960 - 991*/ + 30514, 30564, 30615, 30666, 30718, 30770, 30823, 30876, 30930, 30984, 31040, 31096, 31153, 31210, 31269, 31328, 31389, 31450, 31513, 31577, 31643, 31710, 31779, 31850, 31924, 32000, 32079, 32163, 32251, 32347, 32452, 32574, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + { + 0, 124, 212, 290, 362, 431, 496, 558, 619, 678, 736, 792, 847, 901, 954, 1006, 1058, 1108, 1158, 1208, 1257, 1305, 1353, 1400, 1447, 1493, 1539, 1585, 1630, 1675, 1719, 1763, /* 0 - 31*/ + 1807, 1850, 1894, 1936, 1979, 2021, 2064, 2105, 2147, 2188, 2229, 2270, 2311, 2352, 2392, 2432, 2472, 2511, 2551, 2590, 2629, 2668, 2707, 2746, 2784, 2823, 2861, 2899, 2937, 2975, 3012, 3050, /* 32 - 63*/ + 3087, 3124, 3161, 3198, 3235, 3272, 3308, 3345, 3381, 3418, 3454, 3490, 3526, 3561, 3597, 3633, 3668, 3703, 3739, 3774, 3809, 3844, 3879, 3914, 3948, 3983, 4018, 4052, 4086, 4121, 4155, 4189, /* 64 - 95*/ + 4223, 4257, 4291, 4325, 4358, 4392, 4426, 4459, 4492, 4526, 4559, 4592, 4625, 4658, 4691, 4724, 4757, 4790, 4823, 4855, 4888, 4921, 4953, 4985, 5018, 5050, 5082, 5114, 5147, 5179, 5211, 5242, /* 96 - 127*/ + 5274, 5306, 5338, 5370, 5401, 5433, 5464, 5496, 5527, 5559, 5590, 5621, 5653, 5684, 5715, 5746, 5777, 5808, 5839, 5870, 5901, 5931, 5962, 5993, 6023, 6054, 6085, 6115, 6145, 6176, 6206, 6237, /* 128 - 159*/ + 6267, 6297, 6327, 6358, 6388, 6418, 6448, 6478, 6508, 6538, 6567, 6597, 6627, 6657, 6687, 6716, 6746, 6775, 6805, 6835, 6864, 6893, 6923, 6952, 6982, 7011, 7040, 7069, 7099, 7128, 7157, 7186, /* 160 - 191*/ + 7215, 7244, 7273, 7302, 7331, 7360, 7389, 7417, 7446, 7475, 7504, 7532, 7561, 7590, 7618, 7647, 7675, 7704, 7732, 7761, 7789, 7818, 7846, 7874, 7903, 7931, 7959, 7987, 8015, 8044, 8072, 8100, /* 192 - 223*/ + 8128, 8156, 8184, 8212, 8240, 8268, 8295, 8323, 8351, 8379, 8407, 8434, 8462, 8490, 8518, 8545, 8573, 8600, 8628, 8656, 8683, 8711, 8738, 8765, 8793, 8820, 8848, 8875, 8902, 8929, 8957, 8984, /* 224 - 255*/ + 9011, 9038, 9066, 9093, 9120, 9147, 9174, 9202, 9229, 9256, 9283, 9310, 9338, 9365, 9392, 9419, 9446, 9474, 9501, 9528, 9555, 9582, 9610, 9637, 9664, 9691, 9718, 9746, 9773, 9800, 9827, 9854, /* 256 - 287*/ + 9882, 9909, 9936, 9963, 9990, 10018, 10045, 10072, 10099, 10126, 10154, 10181, 10208, 10235, 10262, 10290, 10317, 10344, 10371, 10398, 10426, 10453, 10480, 10507, 10534, 10562, 10589, 10616, 10643, 10670, 10698, 10725, /* 288 - 319*/ + 10752, 10779, 10806, 10834, 10861, 10888, 10915, 10942, 10970, 10997, 11024, 11051, 11078, 11106, 11133, 11160, 11187, 11214, 11242, 11269, 11296, 11323, 11350, 11378, 11405, 11432, 11459, 11486, 11514, 11541, 11568, 11595, /* 320 - 351*/ + 11622, 11650, 11677, 11704, 11731, 11758, 11786, 11813, 11840, 11867, 11894, 11922, 11949, 11976, 12003, 12030, 12058, 12085, 12112, 12139, 12166, 12194, 12221, 12248, 12275, 12302, 12330, 12357, 12384, 12411, 12438, 12466, /* 352 - 383*/ + 12493, 12520, 12547, 12574, 12602, 12629, 12656, 12683, 12710, 12738, 12765, 12792, 12819, 12846, 12874, 12901, 12928, 12955, 12982, 13010, 13037, 13064, 13091, 13118, 13146, 13173, 13200, 13227, 13254, 13282, 13309, 13336, /* 384 - 415*/ + 13363, 13390, 13418, 13445, 13472, 13499, 13526, 13554, 13581, 13608, 13635, 13662, 13690, 13717, 13744, 13771, 13798, 13826, 13853, 13880, 13907, 13934, 13962, 13989, 14016, 14043, 14070, 14098, 14125, 14152, 14179, 14206, /* 416 - 447*/ + 14234, 14261, 14288, 14315, 14342, 14370, 14397, 14424, 14451, 14478, 14506, 14533, 14560, 14587, 14614, 14642, 14669, 14696, 14723, 14750, 14778, 14805, 14832, 14859, 14886, 14914, 14941, 14968, 14995, 15022, 15050, 15077, /* 448 - 479*/ + 15104, 15131, 15158, 15186, 15213, 15240, 15267, 15294, 15322, 15349, 15376, 15403, 15430, 15458, 15485, 15512, 15539, 15566, 15594, 15621, 15648, 15675, 15702, 15730, 15757, 15784, 15811, 15838, 15866, 15893, 15920, 15947, /* 480 - 511*/ + 15974, 16002, 16029, 16056, 16083, 16110, 16138, 16165, 16192, 16219, 16246, 16274, 16301, 16328, 16355, 16382, 16410, 16437, 16464, 16491, 16518, 16546, 16573, 16600, 16627, 16654, 16682, 16709, 16736, 16763, 16790, 16818, /* 512 - 543*/ + 16845, 16872, 16899, 16926, 16954, 16981, 17008, 17035, 17062, 17090, 17117, 17144, 17171, 17198, 17226, 17253, 17280, 17307, 17334, 17362, 17389, 17416, 17443, 17470, 17498, 17525, 17552, 17579, 17606, 17634, 17661, 17688, /* 544 - 575*/ + 17715, 17742, 17770, 17797, 17824, 17851, 17878, 17906, 17933, 17960, 17987, 18014, 18042, 18069, 18096, 18123, 18150, 18178, 18205, 18232, 18259, 18286, 18314, 18341, 18368, 18395, 18422, 18450, 18477, 18504, 18531, 18558, /* 576 - 607*/ + 18586, 18613, 18640, 18667, 18694, 18722, 18749, 18776, 18803, 18830, 18858, 18885, 18912, 18939, 18966, 18994, 19021, 19048, 19075, 19102, 19130, 19157, 19184, 19211, 19238, 19266, 19293, 19320, 19347, 19374, 19402, 19429, /* 608 - 639*/ + 19456, 19483, 19510, 19538, 19565, 19592, 19619, 19646, 19674, 19701, 19728, 19755, 19782, 19810, 19837, 19864, 19891, 19918, 19946, 19973, 20000, 20027, 20054, 20082, 20109, 20136, 20163, 20190, 20218, 20245, 20272, 20299, /* 640 - 671*/ + 20326, 20354, 20381, 20408, 20435, 20462, 20490, 20517, 20544, 20571, 20598, 20626, 20653, 20680, 20707, 20734, 20762, 20789, 20816, 20843, 20870, 20898, 20925, 20952, 20979, 21006, 21034, 21061, 21088, 21115, 21142, 21170, /* 672 - 703*/ + 21197, 21224, 21251, 21278, 21306, 21333, 21360, 21387, 21414, 21442, 21469, 21496, 21523, 21550, 21578, 21605, 21632, 21659, 21686, 21714, 21741, 21768, 21795, 21822, 21850, 21877, 21904, 21931, 21958, 21986, 22013, 22040, /* 704 - 735*/ + 22067, 22094, 22122, 22149, 22176, 22203, 22230, 22258, 22285, 22312, 22339, 22366, 22394, 22421, 22448, 22475, 22502, 22530, 22557, 22584, 22611, 22638, 22666, 22693, 22720, 22747, 22774, 22802, 22829, 22856, 22883, 22910, /* 736 - 767*/ + 22938, 22965, 22992, 23019, 23047, 23074, 23101, 23129, 23156, 23184, 23211, 23239, 23266, 23294, 23322, 23349, 23377, 23405, 23432, 23460, 23488, 23516, 23544, 23572, 23600, 23628, 23656, 23684, 23712, 23740, 23768, 23797, /* 768 - 799*/ + 23825, 23853, 23881, 23910, 23938, 23967, 23995, 24024, 24052, 24081, 24109, 24138, 24167, 24196, 24224, 24253, 24282, 24311, 24340, 24369, 24398, 24427, 24456, 24485, 24515, 24544, 24573, 24603, 24632, 24661, 24691, 24720, /* 800 - 831*/ + 24750, 24779, 24809, 24839, 24869, 24898, 24928, 24958, 24988, 25018, 25048, 25078, 25108, 25138, 25169, 25199, 25229, 25260, 25290, 25320, 25351, 25381, 25412, 25443, 25474, 25504, 25535, 25566, 25597, 25628, 25659, 25690, /* 832 - 863*/ + 25721, 25753, 25784, 25815, 25847, 25878, 25910, 25941, 25973, 26004, 26036, 26068, 26100, 26132, 26164, 26196, 26228, 26260, 26293, 26325, 26357, 26390, 26422, 26455, 26488, 26520, 26553, 26586, 26619, 26652, 26685, 26718, /* 864 - 895*/ + 26752, 26785, 26818, 26852, 26885, 26919, 26953, 26986, 27020, 27054, 27088, 27123, 27157, 27191, 27225, 27260, 27295, 27329, 27364, 27399, 27434, 27469, 27504, 27539, 27574, 27610, 27645, 27681, 27717, 27753, 27788, 27825, /* 896 - 927*/ + 27861, 27897, 27933, 27970, 28006, 28043, 28080, 28117, 28154, 28191, 28229, 28266, 28304, 28341, 28379, 28417, 28455, 28493, 28532, 28570, 28609, 28648, 28687, 28726, 28765, 28805, 28844, 28884, 28924, 28964, 29005, 29045, /* 928 - 959*/ + 29086, 29127, 29168, 29209, 29250, 29292, 29334, 29376, 29418, 29461, 29503, 29546, 29589, 29633, 29676, 29720, 29765, 29809, 29854, 29899, 29944, 29990, 30036, 30082, 30128, 30175, 30223, 30270, 30318, 30367, 30415, 30465, /* 960 - 991*/ + 30514, 30564, 30615, 30666, 30718, 30770, 30823, 30876, 30930, 30984, 31040, 31096, 31153, 31210, 31269, 31328, 31389, 31450, 31513, 31577, 31643, 31710, 31779, 31850, 31924, 32000, 32079, 32163, 32251, 32347, 32452, 32574, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + { + 0, 124, 212, 290, 362, 431, 496, 558, 619, 678, 736, 792, 847, 901, 954, 1006, 1058, 1108, 1158, 1208, 1257, 1305, 1353, 1400, 1447, 1493, 1539, 1585, 1630, 1675, 1719, 1763, /* 0 - 31*/ + 1807, 1850, 1894, 1936, 1979, 2021, 2064, 2105, 2147, 2188, 2229, 2270, 2311, 2352, 2392, 2432, 2472, 2511, 2551, 2590, 2629, 2668, 2707, 2746, 2784, 2823, 2861, 2899, 2937, 2975, 3012, 3050, /* 32 - 63*/ + 3087, 3124, 3161, 3198, 3235, 3272, 3308, 3345, 3381, 3418, 3454, 3490, 3526, 3561, 3597, 3633, 3668, 3703, 3739, 3774, 3809, 3844, 3879, 3914, 3948, 3983, 4018, 4052, 4086, 4121, 4155, 4189, /* 64 - 95*/ + 4223, 4257, 4291, 4325, 4358, 4392, 4426, 4459, 4492, 4526, 4559, 4592, 4625, 4658, 4691, 4724, 4757, 4790, 4823, 4855, 4888, 4921, 4953, 4985, 5018, 5050, 5082, 5114, 5147, 5179, 5211, 5242, /* 96 - 127*/ + 5274, 5306, 5338, 5370, 5401, 5433, 5464, 5496, 5527, 5559, 5590, 5621, 5653, 5684, 5715, 5746, 5777, 5808, 5839, 5870, 5901, 5931, 5962, 5993, 6023, 6054, 6085, 6115, 6145, 6176, 6206, 6237, /* 128 - 159*/ + 6267, 6297, 6327, 6358, 6388, 6418, 6448, 6478, 6508, 6538, 6567, 6597, 6627, 6657, 6687, 6716, 6746, 6775, 6805, 6835, 6864, 6893, 6923, 6952, 6982, 7011, 7040, 7069, 7099, 7128, 7157, 7186, /* 160 - 191*/ + 7215, 7244, 7273, 7302, 7331, 7360, 7389, 7417, 7446, 7475, 7504, 7532, 7561, 7590, 7618, 7647, 7675, 7704, 7732, 7761, 7789, 7818, 7846, 7874, 7903, 7931, 7959, 7987, 8015, 8044, 8072, 8100, /* 192 - 223*/ + 8128, 8156, 8184, 8212, 8240, 8268, 8295, 8323, 8351, 8379, 8407, 8434, 8462, 8490, 8518, 8545, 8573, 8600, 8628, 8656, 8683, 8711, 8738, 8765, 8793, 8820, 8848, 8875, 8902, 8929, 8957, 8984, /* 224 - 255*/ + 9011, 9038, 9066, 9093, 9120, 9147, 9174, 9202, 9229, 9256, 9283, 9310, 9338, 9365, 9392, 9419, 9446, 9474, 9501, 9528, 9555, 9582, 9610, 9637, 9664, 9691, 9718, 9746, 9773, 9800, 9827, 9854, /* 256 - 287*/ + 9882, 9909, 9936, 9963, 9990, 10018, 10045, 10072, 10099, 10126, 10154, 10181, 10208, 10235, 10262, 10290, 10317, 10344, 10371, 10398, 10426, 10453, 10480, 10507, 10534, 10562, 10589, 10616, 10643, 10670, 10698, 10725, /* 288 - 319*/ + 10752, 10779, 10806, 10834, 10861, 10888, 10915, 10942, 10970, 10997, 11024, 11051, 11078, 11106, 11133, 11160, 11187, 11214, 11242, 11269, 11296, 11323, 11350, 11378, 11405, 11432, 11459, 11486, 11514, 11541, 11568, 11595, /* 320 - 351*/ + 11622, 11650, 11677, 11704, 11731, 11758, 11786, 11813, 11840, 11867, 11894, 11922, 11949, 11976, 12003, 12030, 12058, 12085, 12112, 12139, 12166, 12194, 12221, 12248, 12275, 12302, 12330, 12357, 12384, 12411, 12438, 12466, /* 352 - 383*/ + 12493, 12520, 12547, 12574, 12602, 12629, 12656, 12683, 12710, 12738, 12765, 12792, 12819, 12846, 12874, 12901, 12928, 12955, 12982, 13010, 13037, 13064, 13091, 13118, 13146, 13173, 13200, 13227, 13254, 13282, 13309, 13336, /* 384 - 415*/ + 13363, 13390, 13418, 13445, 13472, 13499, 13526, 13554, 13581, 13608, 13635, 13662, 13690, 13717, 13744, 13771, 13798, 13826, 13853, 13880, 13907, 13934, 13962, 13989, 14016, 14043, 14070, 14098, 14125, 14152, 14179, 14206, /* 416 - 447*/ + 14234, 14261, 14288, 14315, 14342, 14370, 14397, 14424, 14451, 14478, 14506, 14533, 14560, 14587, 14614, 14642, 14669, 14696, 14723, 14750, 14778, 14805, 14832, 14859, 14886, 14914, 14941, 14968, 14995, 15022, 15050, 15077, /* 448 - 479*/ + 15104, 15131, 15158, 15186, 15213, 15240, 15267, 15294, 15322, 15349, 15376, 15403, 15430, 15458, 15485, 15512, 15539, 15566, 15594, 15621, 15648, 15675, 15702, 15730, 15757, 15784, 15811, 15838, 15866, 15893, 15920, 15947, /* 480 - 511*/ + 15974, 16002, 16029, 16056, 16083, 16110, 16138, 16165, 16192, 16219, 16246, 16274, 16301, 16328, 16355, 16382, 16410, 16437, 16464, 16491, 16518, 16546, 16573, 16600, 16627, 16654, 16682, 16709, 16736, 16763, 16790, 16818, /* 512 - 543*/ + 16845, 16872, 16899, 16926, 16954, 16981, 17008, 17035, 17062, 17090, 17117, 17144, 17171, 17198, 17226, 17253, 17280, 17307, 17334, 17362, 17389, 17416, 17443, 17470, 17498, 17525, 17552, 17579, 17606, 17634, 17661, 17688, /* 544 - 575*/ + 17715, 17742, 17770, 17797, 17824, 17851, 17878, 17906, 17933, 17960, 17987, 18014, 18042, 18069, 18096, 18123, 18150, 18178, 18205, 18232, 18259, 18286, 18314, 18341, 18368, 18395, 18422, 18450, 18477, 18504, 18531, 18558, /* 576 - 607*/ + 18586, 18613, 18640, 18667, 18694, 18722, 18749, 18776, 18803, 18830, 18858, 18885, 18912, 18939, 18966, 18994, 19021, 19048, 19075, 19102, 19130, 19157, 19184, 19211, 19238, 19266, 19293, 19320, 19347, 19374, 19402, 19429, /* 608 - 639*/ + 19456, 19483, 19510, 19538, 19565, 19592, 19619, 19646, 19674, 19701, 19728, 19755, 19782, 19810, 19837, 19864, 19891, 19918, 19946, 19973, 20000, 20027, 20054, 20082, 20109, 20136, 20163, 20190, 20218, 20245, 20272, 20299, /* 640 - 671*/ + 20326, 20354, 20381, 20408, 20435, 20462, 20490, 20517, 20544, 20571, 20598, 20626, 20653, 20680, 20707, 20734, 20762, 20789, 20816, 20843, 20870, 20898, 20925, 20952, 20979, 21006, 21034, 21061, 21088, 21115, 21142, 21170, /* 672 - 703*/ + 21197, 21224, 21251, 21278, 21306, 21333, 21360, 21387, 21414, 21442, 21469, 21496, 21523, 21550, 21578, 21605, 21632, 21659, 21686, 21714, 21741, 21768, 21795, 21822, 21850, 21877, 21904, 21931, 21958, 21986, 22013, 22040, /* 704 - 735*/ + 22067, 22094, 22122, 22149, 22176, 22203, 22230, 22258, 22285, 22312, 22339, 22366, 22394, 22421, 22448, 22475, 22502, 22530, 22557, 22584, 22611, 22638, 22666, 22693, 22720, 22747, 22774, 22802, 22829, 22856, 22883, 22910, /* 736 - 767*/ + 22938, 22965, 22992, 23019, 23047, 23074, 23101, 23129, 23156, 23184, 23211, 23239, 23266, 23294, 23322, 23349, 23377, 23405, 23432, 23460, 23488, 23516, 23544, 23572, 23600, 23628, 23656, 23684, 23712, 23740, 23768, 23797, /* 768 - 799*/ + 23825, 23853, 23881, 23910, 23938, 23967, 23995, 24024, 24052, 24081, 24109, 24138, 24167, 24196, 24224, 24253, 24282, 24311, 24340, 24369, 24398, 24427, 24456, 24485, 24515, 24544, 24573, 24603, 24632, 24661, 24691, 24720, /* 800 - 831*/ + 24750, 24779, 24809, 24839, 24869, 24898, 24928, 24958, 24988, 25018, 25048, 25078, 25108, 25138, 25169, 25199, 25229, 25260, 25290, 25320, 25351, 25381, 25412, 25443, 25474, 25504, 25535, 25566, 25597, 25628, 25659, 25690, /* 832 - 863*/ + 25721, 25753, 25784, 25815, 25847, 25878, 25910, 25941, 25973, 26004, 26036, 26068, 26100, 26132, 26164, 26196, 26228, 26260, 26293, 26325, 26357, 26390, 26422, 26455, 26488, 26520, 26553, 26586, 26619, 26652, 26685, 26718, /* 864 - 895*/ + 26752, 26785, 26818, 26852, 26885, 26919, 26953, 26986, 27020, 27054, 27088, 27123, 27157, 27191, 27225, 27260, 27295, 27329, 27364, 27399, 27434, 27469, 27504, 27539, 27574, 27610, 27645, 27681, 27717, 27753, 27788, 27825, /* 896 - 927*/ + 27861, 27897, 27933, 27970, 28006, 28043, 28080, 28117, 28154, 28191, 28229, 28266, 28304, 28341, 28379, 28417, 28455, 28493, 28532, 28570, 28609, 28648, 28687, 28726, 28765, 28805, 28844, 28884, 28924, 28964, 29005, 29045, /* 928 - 959*/ + 29086, 29127, 29168, 29209, 29250, 29292, 29334, 29376, 29418, 29461, 29503, 29546, 29589, 29633, 29676, 29720, 29765, 29809, 29854, 29899, 29944, 29990, 30036, 30082, 30128, 30175, 30223, 30270, 30318, 30367, 30415, 30465, /* 960 - 991*/ + 30514, 30564, 30615, 30666, 30718, 30770, 30823, 30876, 30930, 30984, 31040, 31096, 31153, 31210, 31269, 31328, 31389, 31450, 31513, 31577, 31643, 31710, 31779, 31850, 31924, 32000, 32079, 32163, 32251, 32347, 32452, 32574, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + { + 0, 124, 212, 290, 362, 431, 496, 558, 619, 678, 736, 792, 847, 901, 954, 1006, 1058, 1108, 1158, 1208, 1257, 1305, 1353, 1400, 1447, 1493, 1539, 1585, 1630, 1675, 1719, 1763, /* 0 - 31*/ + 1807, 1850, 1894, 1936, 1979, 2021, 2064, 2105, 2147, 2188, 2229, 2270, 2311, 2352, 2392, 2432, 2472, 2511, 2551, 2590, 2629, 2668, 2707, 2746, 2784, 2823, 2861, 2899, 2937, 2975, 3012, 3050, /* 32 - 63*/ + 3087, 3124, 3161, 3198, 3235, 3272, 3308, 3345, 3381, 3418, 3454, 3490, 3526, 3561, 3597, 3633, 3668, 3703, 3739, 3774, 3809, 3844, 3879, 3914, 3948, 3983, 4018, 4052, 4086, 4121, 4155, 4189, /* 64 - 95*/ + 4223, 4257, 4291, 4325, 4358, 4392, 4426, 4459, 4492, 4526, 4559, 4592, 4625, 4658, 4691, 4724, 4757, 4790, 4823, 4855, 4888, 4921, 4953, 4985, 5018, 5050, 5082, 5114, 5147, 5179, 5211, 5242, /* 96 - 127*/ + 5274, 5306, 5338, 5370, 5401, 5433, 5464, 5496, 5527, 5559, 5590, 5621, 5653, 5684, 5715, 5746, 5777, 5808, 5839, 5870, 5901, 5931, 5962, 5993, 6023, 6054, 6085, 6115, 6145, 6176, 6206, 6237, /* 128 - 159*/ + 6267, 6297, 6327, 6358, 6388, 6418, 6448, 6478, 6508, 6538, 6567, 6597, 6627, 6657, 6687, 6716, 6746, 6775, 6805, 6835, 6864, 6893, 6923, 6952, 6982, 7011, 7040, 7069, 7099, 7128, 7157, 7186, /* 160 - 191*/ + 7215, 7244, 7273, 7302, 7331, 7360, 7389, 7417, 7446, 7475, 7504, 7532, 7561, 7590, 7618, 7647, 7675, 7704, 7732, 7761, 7789, 7818, 7846, 7874, 7903, 7931, 7959, 7987, 8015, 8044, 8072, 8100, /* 192 - 223*/ + 8128, 8156, 8184, 8212, 8240, 8268, 8295, 8323, 8351, 8379, 8407, 8434, 8462, 8490, 8518, 8545, 8573, 8600, 8628, 8656, 8683, 8711, 8738, 8765, 8793, 8820, 8848, 8875, 8902, 8929, 8957, 8984, /* 224 - 255*/ + 9011, 9038, 9066, 9093, 9120, 9147, 9174, 9202, 9229, 9256, 9283, 9310, 9338, 9365, 9392, 9419, 9446, 9474, 9501, 9528, 9555, 9582, 9610, 9637, 9664, 9691, 9718, 9746, 9773, 9800, 9827, 9854, /* 256 - 287*/ + 9882, 9909, 9936, 9963, 9990, 10018, 10045, 10072, 10099, 10126, 10154, 10181, 10208, 10235, 10262, 10290, 10317, 10344, 10371, 10398, 10426, 10453, 10480, 10507, 10534, 10562, 10589, 10616, 10643, 10670, 10698, 10725, /* 288 - 319*/ + 10752, 10779, 10806, 10834, 10861, 10888, 10915, 10942, 10970, 10997, 11024, 11051, 11078, 11106, 11133, 11160, 11187, 11214, 11242, 11269, 11296, 11323, 11350, 11378, 11405, 11432, 11459, 11486, 11514, 11541, 11568, 11595, /* 320 - 351*/ + 11622, 11650, 11677, 11704, 11731, 11758, 11786, 11813, 11840, 11867, 11894, 11922, 11949, 11976, 12003, 12030, 12058, 12085, 12112, 12139, 12166, 12194, 12221, 12248, 12275, 12302, 12330, 12357, 12384, 12411, 12438, 12466, /* 352 - 383*/ + 12493, 12520, 12547, 12574, 12602, 12629, 12656, 12683, 12710, 12738, 12765, 12792, 12819, 12846, 12874, 12901, 12928, 12955, 12982, 13010, 13037, 13064, 13091, 13118, 13146, 13173, 13200, 13227, 13254, 13282, 13309, 13336, /* 384 - 415*/ + 13363, 13390, 13418, 13445, 13472, 13499, 13526, 13554, 13581, 13608, 13635, 13662, 13690, 13717, 13744, 13771, 13798, 13826, 13853, 13880, 13907, 13934, 13962, 13989, 14016, 14043, 14070, 14098, 14125, 14152, 14179, 14206, /* 416 - 447*/ + 14234, 14261, 14288, 14315, 14342, 14370, 14397, 14424, 14451, 14478, 14506, 14533, 14560, 14587, 14614, 14642, 14669, 14696, 14723, 14750, 14778, 14805, 14832, 14859, 14886, 14914, 14941, 14968, 14995, 15022, 15050, 15077, /* 448 - 479*/ + 15104, 15131, 15158, 15186, 15213, 15240, 15267, 15294, 15322, 15349, 15376, 15403, 15430, 15458, 15485, 15512, 15539, 15566, 15594, 15621, 15648, 15675, 15702, 15730, 15757, 15784, 15811, 15838, 15866, 15893, 15920, 15947, /* 480 - 511*/ + 15974, 16002, 16029, 16056, 16083, 16110, 16138, 16165, 16192, 16219, 16246, 16274, 16301, 16328, 16355, 16382, 16410, 16437, 16464, 16491, 16518, 16546, 16573, 16600, 16627, 16654, 16682, 16709, 16736, 16763, 16790, 16818, /* 512 - 543*/ + 16845, 16872, 16899, 16926, 16954, 16981, 17008, 17035, 17062, 17090, 17117, 17144, 17171, 17198, 17226, 17253, 17280, 17307, 17334, 17362, 17389, 17416, 17443, 17470, 17498, 17525, 17552, 17579, 17606, 17634, 17661, 17688, /* 544 - 575*/ + 17715, 17742, 17770, 17797, 17824, 17851, 17878, 17906, 17933, 17960, 17987, 18014, 18042, 18069, 18096, 18123, 18150, 18178, 18205, 18232, 18259, 18286, 18314, 18341, 18368, 18395, 18422, 18450, 18477, 18504, 18531, 18558, /* 576 - 607*/ + 18586, 18613, 18640, 18667, 18694, 18722, 18749, 18776, 18803, 18830, 18858, 18885, 18912, 18939, 18966, 18994, 19021, 19048, 19075, 19102, 19130, 19157, 19184, 19211, 19238, 19266, 19293, 19320, 19347, 19374, 19402, 19429, /* 608 - 639*/ + 19456, 19483, 19510, 19538, 19565, 19592, 19619, 19646, 19674, 19701, 19728, 19755, 19782, 19810, 19837, 19864, 19891, 19918, 19946, 19973, 20000, 20027, 20054, 20082, 20109, 20136, 20163, 20190, 20218, 20245, 20272, 20299, /* 640 - 671*/ + 20326, 20354, 20381, 20408, 20435, 20462, 20490, 20517, 20544, 20571, 20598, 20626, 20653, 20680, 20707, 20734, 20762, 20789, 20816, 20843, 20870, 20898, 20925, 20952, 20979, 21006, 21034, 21061, 21088, 21115, 21142, 21170, /* 672 - 703*/ + 21197, 21224, 21251, 21278, 21306, 21333, 21360, 21387, 21414, 21442, 21469, 21496, 21523, 21550, 21578, 21605, 21632, 21659, 21686, 21714, 21741, 21768, 21795, 21822, 21850, 21877, 21904, 21931, 21958, 21986, 22013, 22040, /* 704 - 735*/ + 22067, 22094, 22122, 22149, 22176, 22203, 22230, 22258, 22285, 22312, 22339, 22366, 22394, 22421, 22448, 22475, 22502, 22530, 22557, 22584, 22611, 22638, 22666, 22693, 22720, 22747, 22774, 22802, 22829, 22856, 22883, 22910, /* 736 - 767*/ + 22938, 22965, 22992, 23019, 23047, 23074, 23101, 23129, 23156, 23184, 23211, 23239, 23266, 23294, 23322, 23349, 23377, 23405, 23432, 23460, 23488, 23516, 23544, 23572, 23600, 23628, 23656, 23684, 23712, 23740, 23768, 23797, /* 768 - 799*/ + 23825, 23853, 23881, 23910, 23938, 23967, 23995, 24024, 24052, 24081, 24109, 24138, 24167, 24196, 24224, 24253, 24282, 24311, 24340, 24369, 24398, 24427, 24456, 24485, 24515, 24544, 24573, 24603, 24632, 24661, 24691, 24720, /* 800 - 831*/ + 24750, 24779, 24809, 24839, 24869, 24898, 24928, 24958, 24988, 25018, 25048, 25078, 25108, 25138, 25169, 25199, 25229, 25260, 25290, 25320, 25351, 25381, 25412, 25443, 25474, 25504, 25535, 25566, 25597, 25628, 25659, 25690, /* 832 - 863*/ + 25721, 25753, 25784, 25815, 25847, 25878, 25910, 25941, 25973, 26004, 26036, 26068, 26100, 26132, 26164, 26196, 26228, 26260, 26293, 26325, 26357, 26390, 26422, 26455, 26488, 26520, 26553, 26586, 26619, 26652, 26685, 26718, /* 864 - 895*/ + 26752, 26785, 26818, 26852, 26885, 26919, 26953, 26986, 27020, 27054, 27088, 27123, 27157, 27191, 27225, 27260, 27295, 27329, 27364, 27399, 27434, 27469, 27504, 27539, 27574, 27610, 27645, 27681, 27717, 27753, 27788, 27825, /* 896 - 927*/ + 27861, 27897, 27933, 27970, 28006, 28043, 28080, 28117, 28154, 28191, 28229, 28266, 28304, 28341, 28379, 28417, 28455, 28493, 28532, 28570, 28609, 28648, 28687, 28726, 28765, 28805, 28844, 28884, 28924, 28964, 29005, 29045, /* 928 - 959*/ + 29086, 29127, 29168, 29209, 29250, 29292, 29334, 29376, 29418, 29461, 29503, 29546, 29589, 29633, 29676, 29720, 29765, 29809, 29854, 29899, 29944, 29990, 30036, 30082, 30128, 30175, 30223, 30270, 30318, 30367, 30415, 30465, /* 960 - 991*/ + 30514, 30564, 30615, 30666, 30718, 30770, 30823, 30876, 30930, 30984, 31040, 31096, 31153, 31210, 31269, 31328, 31389, 31450, 31513, 31577, 31643, 31710, 31779, 31850, 31924, 32000, 32079, 32163, 32251, 32347, 32452, 32574, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, 5056, 5088, /* 128 - 159*/ + 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, 6112, /* 160 - 191*/ + 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, /* 192 - 223*/ + 7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160, /* 224 - 255*/ + 8192, 8224, 8256, 8288, 8320, 8352, 8384, 8416, 8448, 8480, 8512, 8544, 8576, 8608, 8640, 8672, 8704, 8736, 8768, 8800, 8832, 8864, 8896, 8928, 8960, 8992, 9024, 9056, 9088, 9120, 9152, 9184, /* 256 - 287*/ + 9216, 9248, 9280, 9312, 9344, 9376, 9408, 9440, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9760, 9792, 9824, 9856, 9888, 9920, 9952, 9984, 10016, 10048, 10080, 10112, 10144, 10176, 10208, /* 288 - 319*/ + 10240, 10272, 10304, 10336, 10368, 10400, 10432, 10464, 10496, 10528, 10560, 10592, 10624, 10656, 10688, 10720, 10752, 10784, 10816, 10848, 10880, 10912, 10944, 10976, 11008, 11040, 11072, 11104, 11136, 11168, 11200, 11232, /* 320 - 351*/ + 11264, 11296, 11328, 11360, 11392, 11424, 11456, 11488, 11520, 11552, 11584, 11616, 11648, 11680, 11712, 11744, 11776, 11808, 11840, 11872, 11904, 11936, 11968, 12000, 12032, 12064, 12096, 12128, 12160, 12192, 12224, 12256, /* 352 - 383*/ + 12288, 12320, 12352, 12384, 12416, 12448, 12480, 12512, 12544, 12576, 12608, 12640, 12672, 12704, 12736, 12768, 12800, 12832, 12864, 12896, 12928, 12960, 12992, 13024, 13056, 13088, 13120, 13152, 13184, 13216, 13248, 13280, /* 384 - 415*/ + 13312, 13344, 13376, 13408, 13440, 13472, 13504, 13536, 13568, 13600, 13632, 13664, 13696, 13728, 13760, 13792, 13824, 13856, 13888, 13920, 13952, 13984, 14016, 14048, 14080, 14112, 14144, 14176, 14208, 14240, 14272, 14304, /* 416 - 447*/ + 14336, 14368, 14400, 14432, 14464, 14496, 14528, 14560, 14592, 14624, 14656, 14688, 14720, 14752, 14784, 14816, 14848, 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, /* 448 - 479*/ + 15360, 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, 15904, 15936, 15968, 16000, 16032, 16064, 16096, 16128, 16160, 16192, 16224, 16256, 16288, 16320, 16352, /* 480 - 511*/ + 16384, 16416, 16448, 16480, 16512, 16544, 16576, 16608, 16640, 16672, 16704, 16736, 16768, 16800, 16832, 16864, 16896, 16928, 16960, 16992, 17024, 17056, 17088, 17120, 17152, 17184, 17216, 17248, 17280, 17312, 17344, 17376, /* 512 - 543*/ + 17408, 17440, 17472, 17504, 17536, 17568, 17600, 17632, 17664, 17696, 17728, 17760, 17792, 17824, 17856, 17888, 17920, 17952, 17984, 18016, 18048, 18080, 18112, 18144, 18176, 18208, 18240, 18272, 18304, 18336, 18368, 18400, /* 544 - 575*/ + 18432, 18464, 18496, 18528, 18560, 18592, 18624, 18656, 18688, 18720, 18752, 18784, 18816, 18848, 18880, 18912, 18944, 18976, 19008, 19040, 19072, 19104, 19136, 19168, 19200, 19232, 19264, 19296, 19328, 19360, 19392, 19424, /* 576 - 607*/ + 19456, 19488, 19520, 19552, 19584, 19616, 19648, 19680, 19712, 19744, 19776, 19808, 19840, 19872, 19904, 19936, 19968, 20000, 20032, 20064, 20096, 20128, 20160, 20192, 20224, 20256, 20288, 20320, 20352, 20384, 20416, 20448, /* 608 - 639*/ + 20480, 20512, 20544, 20576, 20608, 20640, 20672, 20704, 20736, 20768, 20800, 20832, 20864, 20896, 20928, 20960, 20992, 21024, 21056, 21088, 21120, 21152, 21184, 21216, 21248, 21280, 21312, 21344, 21376, 21408, 21440, 21472, /* 640 - 671*/ + 21504, 21536, 21568, 21600, 21632, 21664, 21696, 21728, 21760, 21792, 21824, 21856, 21888, 21920, 21952, 21984, 22016, 22048, 22080, 22112, 22144, 22176, 22208, 22240, 22272, 22304, 22336, 22368, 22400, 22432, 22464, 22496, /* 672 - 703*/ + 22528, 22560, 22592, 22624, 22656, 22688, 22720, 22752, 22784, 22816, 22848, 22880, 22912, 22944, 22976, 23008, 23040, 23072, 23104, 23136, 23168, 23200, 23232, 23264, 23296, 23328, 23360, 23392, 23424, 23456, 23488, 23520, /* 704 - 735*/ + 23552, 23584, 23616, 23648, 23680, 23712, 23744, 23776, 23808, 23840, 23872, 23904, 23936, 23968, 24000, 24032, 24064, 24096, 24128, 24160, 24192, 24224, 24256, 24288, 24320, 24352, 24384, 24416, 24448, 24480, 24512, 24544, /* 736 - 767*/ + 24576, 24608, 24640, 24672, 24704, 24736, 24768, 24800, 24832, 24864, 24896, 24928, 24960, 24992, 25024, 25056, 25088, 25120, 25152, 25184, 25216, 25248, 25280, 25312, 25344, 25376, 25408, 25440, 25472, 25504, 25536, 25568, /* 768 - 799*/ + 25600, 25632, 25664, 25696, 25728, 25760, 25792, 25824, 25856, 25888, 25920, 25952, 25984, 26016, 26048, 26080, 26112, 26144, 26176, 26208, 26240, 26272, 26304, 26336, 26368, 26400, 26432, 26464, 26496, 26528, 26560, 26592, /* 800 - 831*/ + 26624, 26656, 26688, 26720, 26752, 26784, 26816, 26848, 26880, 26912, 26944, 26976, 27008, 27040, 27072, 27104, 27136, 27168, 27200, 27232, 27264, 27296, 27328, 27360, 27392, 27424, 27456, 27488, 27520, 27552, 27584, 27616, /* 832 - 863*/ + 27648, 27680, 27712, 27744, 27776, 27808, 27840, 27872, 27904, 27936, 27968, 28000, 28032, 28064, 28096, 28128, 28160, 28192, 28224, 28256, 28288, 28320, 28352, 28384, 28416, 28448, 28480, 28512, 28544, 28576, 28608, 28640, /* 864 - 895*/ + 28672, 28704, 28736, 28768, 28800, 28832, 28864, 28896, 28928, 28960, 28992, 29024, 29056, 29088, 29120, 29152, 29184, 29216, 29248, 29280, 29312, 29344, 29376, 29408, 29440, 29472, 29504, 29536, 29568, 29600, 29632, 29664, /* 896 - 927*/ + 29696, 29728, 29760, 29792, 29824, 29856, 29888, 29920, 29952, 29984, 30016, 30048, 30080, 30112, 30144, 30176, 30208, 30240, 30272, 30304, 30336, 30368, 30400, 30432, 30464, 30496, 30528, 30560, 30592, 30624, 30656, 30688, /* 928 - 959*/ + 30720, 30752, 30784, 30816, 30848, 30880, 30912, 30944, 30976, 31008, 31040, 31072, 31104, 31136, 31168, 31200, 31232, 31264, 31296, 31328, 31360, 31392, 31424, 31456, 31488, 31520, 31552, 31584, 31616, 31648, 31680, 31712, /* 960 - 991*/ + 31744, 31776, 31808, 31840, 31872, 31904, 31936, 31968, 32000, 32032, 32064, 32096, 32128, 32160, 32192, 32224, 32256, 32288, 32320, 32352, 32384, 32416, 32448, 32480, 32512, 32544, 32576, 32608, 32640, 32672, 32704, 32736, /* 992 - 1023*/ + 32768, /*1024 - 1024*/ + }, + }, + /* tHistWt */ + { + /* 0 */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + }, + /* 1 */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + }, + /* 2 */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + }, + /* 3 */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + }, + /* 4 */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + }, + /* 5 */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + }, + /* 6 */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + }, + /* 7 */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + }, + /* 8 */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + }, + /* 9 */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + }, + /* 10 */ + { + /* 0 */ + { + /* nHistogramWeight[63] */ + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0 - 31*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*32 - 62*/ + }, + }, + /* 1 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 2 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 3 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 4 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 5 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 6 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 7 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 8 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 9 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 10 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 11 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 12 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 13 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 14 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + /* 15 */ + { + /* nHistogramWeight[63] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32 - 62*/ + }, + }, + }, + }, + }, +}; + +static AX_ISP_IQ_DEMOSAIC_PARAM_T demosaic_param_sdr = { + /* nDemosaicEn */ + 1, + /* nEdgeDirectEstStrength */ + 64, + /* nFcCorEnable */ + 1, + /* nFcCorUvLevel */ + 16, + /* nFcCorLevel */ + 0, +}; + +static AX_ISP_IQ_GIC_PARAM_T gic_param_sdr = { + /* nGicEnable */ + 0, + /* nGicStrengthLut[9] */ + {128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 8*/}, +}; + +static AX_ISP_IQ_DEPURPLE_PARAM_T depurple_param_sdr = { + /* nEnable */ + 1, + /* nAutoMode */ + 0, + /* nRefMode */ + 1, + /* nDepurpleMode */ + 1, + /* tDetParam */ + { + /* nDetMode */ + 0, + /* nDetEdgeSlope */ + 32, + /* nDetEdgeOffset */ + -101, + /* nDetColorCenter[4][3] */ + { + {592, 880, -223, /*0 - 2*/}, + {320, 1216, -207, /*0 - 2*/}, + {800, 1216, -206, /*0 - 2*/}, + {800, 1216, -207, /*0 - 2*/}, + }, + /* nDetColorRadius[4][3] */ + { + {464, 720, 4095, /*0 - 2*/}, + {941, 655, 450, /*0 - 2*/}, + {1440, 1024, 1024, /*0 - 2*/}, + {1440, 1024, 1024, /*0 - 2*/}, + }, + /* nDetStrength */ + 32, + /* nDetGetcompcolorGrad[4][3] */ + { + {4, 4, 4, /*0 - 2*/}, + {4, 4, 4, /*0 - 2*/}, + {4, 4, 4, /*0 - 2*/}, + {4, 4, 4, /*0 - 2*/}, + }, + }, + /* tCmpParam */ + { + /* nCompTargetLuma[8] */ + {0, 0, 0, 49, 102, 102, 102, 128, /*0 - 7*/}, + /* nCompTargetHue[16] */ + {128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, /*0 - 15*/}, + /* nCompTargetSat[6] */ + {0, 64, 96, 125, 125, 125, /*0 - 5*/}, + /* nCompUvLevel */ + 128, + }, + /* tManualParam */ + { + /* nManualCompStrength */ + 128, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 16, + /* nRefVal[16] */ + {2048, 4124, 8248, 12372, 16496, 24744, 32992, 41240, 49488, 57736, 63922, 95883, 127844, 159805, 191766, 223727, /*0 - 15*/}, + /* nAutoCompStrength[16] */ + {48, 48, 32, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + }, +}; + +static AX_ISP_IQ_CC_PARAM_T cc_param_sdr = { + /* nCcEn */ + 1, + /* nCcMode */ + 1, + /* nAutoMode */ + 1, + /* nRefMode */ + 1, + /* nLumaRatio[2] */ + {38, 14, /*0 - 1*/}, + /* tManualParam */ + { + /* nCcmCtrlLevel */ + 256, + /* nCcmSat */ + -5, + /* nCcmHue */ + 0, + /* nCcmMatrix[6] */ + {-85, -124, -140, -119, -24, -218, /*0 - 5*/}, + /* nXcmCtrlLevel[16] */ + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + /* nXcmSat[16] */ + {0, 0, 0, -8, -16, -16, -24, -16, -8, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + /* nXcmHue[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* tAutoParam */ + { + /* nLightSourceRatio */ + 0, + /* tColorTempAuto */ + { + /* nCtNum */ + 6, + /* nRefValCt[12] */ + {2300, 2800, 3800, 4100, 5000, 6500, /*0 - 5*/}, + /* nLuxGainNum */ + 5, + /* nRefValLuxGain[12][5] */ + { + {1024, 4096, 16384, 65536, 262144, /*0 - 4*/}, + {1024, 4096, 16384, 65536, 262144, /*0 - 4*/}, + {1024, 4096, 16384, 65536, 262144, /*0 - 4*/}, + {1024, 4096, 16384, 65536, 262144, /*0 - 4*/}, + {1024, 4096, 16384, 65536, 262144, /*0 - 4*/}, + {1024, 4096, 16384, 65536, 262144, /*0 - 4*/}, + }, + /* nCcmCtrlLevel[12][5] */ + { + {256, 256, 256, 256, 256, /*0 - 4*/}, + {256, 256, 256, 256, 256, /*0 - 4*/}, + {256, 256, 256, 256, 256, /*0 - 4*/}, + {256, 256, 256, 256, 256, /*0 - 4*/}, + {256, 256, 256, 256, 256, /*0 - 4*/}, + {256, 256, 256, 256, 256, /*0 - 4*/}, + }, + /* nCcmSat[12][5] */ + { + {-5, -10, -20, -20, -30, /*0 - 4*/}, + {-5, -10, -20, -20, -30, /*0 - 4*/}, + {-5, -10, -20, -20, -30, /*0 - 4*/}, + {-5, -10, -20, -20, -30, /*0 - 4*/}, + {-5, -10, -20, -20, -30, /*0 - 4*/}, + {-5, -10, -20, -20, -30, /*0 - 4*/}, + }, + /* nCcmHue[12][5] */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nCcmMatrix[12][5][6] */ + { + /* nCcmMatrix 0 */ + { + {0, -282, -189, 112, -60, -329, /*0 - 5*/}, + {0, -282, -189, 112, -60, -329, /*0 - 5*/}, + {0, -282, -189, 112, -60, -329, /*0 - 5*/}, + {0, -281, -188, 112, -59, -328, /*0 - 5*/}, + {0, -281, -188, 112, -59, -328, /*0 - 5*/}, + }, + /* nCcmMatrix 1 */ + { + {0, -282, -189, 112, -60, -329, /*0 - 5*/}, + {0, -282, -189, 112, -60, -329, /*0 - 5*/}, + {0, -282, -189, 112, -60, -329, /*0 - 5*/}, + {0, -281, -188, 112, -59, -328, /*0 - 5*/}, + {0, -281, -188, 112, -59, -328, /*0 - 5*/}, + }, + /* nCcmMatrix 2 */ + { + {-106, -162, -178, -67, -6, -308, /*0 - 5*/}, + {-106, -162, -178, -67, -6, -308, /*0 - 5*/}, + {-106, -162, -178, -67, -6, -308, /*0 - 5*/}, + {-105, -161, -177, -66, -5, -307, /*0 - 5*/}, + {-105, -161, -177, -66, -5, -307, /*0 - 5*/}, + }, + /* nCcmMatrix 3 */ + { + {-274, -104, -169, -50, -5, -319, /*0 - 5*/}, + {-274, -104, -169, -50, -5, -319, /*0 - 5*/}, + {-274, -104, -169, -50, -5, -319, /*0 - 5*/}, + {-273, -103, -168, -49, -4, -318, /*0 - 5*/}, + {-273, -103, -168, -49, -4, -318, /*0 - 5*/}, + }, + /* nCcmMatrix 4 */ + { + {-49, -134, -158, -107, -39, -220, /*0 - 5*/}, + {-49, -134, -158, -107, -39, -220, /*0 - 5*/}, + {-49, -134, -158, -107, -39, -220, /*0 - 5*/}, + {-48, -133, -157, -106, -38, -219, /*0 - 5*/}, + {-48, -133, -157, -106, -38, -219, /*0 - 5*/}, + }, + /* nCcmMatrix 5 */ + { + {-123, -114, -120, -132, -8, -216, /*0 - 5*/}, + {-123, -114, -120, -132, -8, -216, /*0 - 5*/}, + {-123, -114, -120, -132, -8, -216, /*0 - 5*/}, + {-122, -113, -119, -131, -7, -215, /*0 - 5*/}, + {-122, -113, -119, -131, -7, -215, /*0 - 5*/}, + }, + }, + /* nXcmCtrlLevel[12][5][16] */ + { + /* nXcmCtrlLevel 0 */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + }, + /* nXcmCtrlLevel 1 */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + }, + /* nXcmCtrlLevel 2 */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + }, + /* nXcmCtrlLevel 3 */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + }, + /* nXcmCtrlLevel 4 */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + }, + /* nXcmCtrlLevel 5 */ + { + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*0 - 15*/}, + }, + }, + /* nXcmSat[12][5][16] */ + { + /* nXcmSat 0 */ + { + {-12, 0, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, 0, -12, -24, -24, /*0 - 15*/}, + {-24, -12, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, 0, -12, -32, -32, /*0 - 15*/}, + {-16, -8, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, -12, -24, -32, -32, /*0 - 15*/}, + {0, 0, 0, -8, -16, -8, -8, -4, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, -4, -16, -8, -8, 0, 15, 15, 15, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmSat 1 */ + { + {-12, 0, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, 0, -12, -24, -24, /*0 - 15*/}, + {-12, 0, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, 0, -12, -32, -32, /*0 - 15*/}, + {-16, -8, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, -12, -24, -32, -32, /*0 - 15*/}, + {0, 0, 0, -8, -16, -8, -8, -4, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, -4, -16, -8, -8, 0, 15, 15, 15, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmSat 2 */ + { + {-12, 0, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, -12, -24, -24, -24, /*0 - 15*/}, + {-12, 0, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, -12, -24, -24, -24, /*0 - 15*/}, + {-16, -8, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, -8, -16, -32, -32, /*0 - 15*/}, + {0, 0, 0, -8, -16, -8, -8, -4, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, -4, -16, -8, -8, 0, 15, 15, 15, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmSat 3 */ + { + {0, 0, 0, -8, -16, -12, -16, -8, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {-16, 0, 0, -8, -16, -12, -12, -24, -12, 0, 0, 0, 0, -16, -16, -16, /*0 - 15*/}, + {-16, 0, 0, -8, -16, -12, -12, -24, -12, 0, 0, 0, 0, -16, -16, -16, /*0 - 15*/}, + {0, 0, 0, 0, -4, -16, -8, -8, 0, 15, 15, 15, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmSat 4 */ + { + {0, 0, 0, -8, -16, -16, -24, -16, -8, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {-8, 0, 0, -8, -16, -12, -13, -24, -12, 0, 0, 0, 0, -16, -16, -16, /*0 - 15*/}, + {-8, 0, 0, -8, -16, -12, -13, -24, -12, 0, 0, 0, 0, -16, -16, -16, /*0 - 15*/}, + {0, 0, 0, 0, -4, -16, -8, -8, 0, 15, 15, 15, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmSat 5 */ + { + {0, 0, 0, -8, -16, -16, -24, -16, -8, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, -8, -16, -12, -8, -4, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {-16, 0, 0, -8, -16, -12, -12, -24, -12, 0, 0, 0, 0, -16, -16, -16, /*0 - 15*/}, + {0, 0, 0, -8, -16, -8, -8, -4, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, -4, -16, -8, -8, 0, 15, 15, 15, 0, 0, 0, 0, /*0 - 15*/}, + }, + }, + /* nXcmHue[12][5][16] */ + { + /* nXcmHue 0 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmHue 1 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmHue 2 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmHue 3 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmHue 4 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmHue 5 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 320, 320, 320, 320, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + }, + }, + }, + /* tLightSourceAuto */ + { + /* nLightSource */ + 0, + /* nLightSourceNum */ + 0, + /* nCcmCtrlLevel[12] */ + {0, /*0 - 0*/}, + /* nCcmSat[12] */ + {0, /*0 - 0*/}, + /* nCcmHue[12] */ + {0, /*0 - 0*/}, + /* nCcmMatrix[12][6] */ + { + {0, 0, 0, 0, 0, 0, /*0 - 5*/}, + }, + /* nXcmCtrlLevel[12][16] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmSat[12][16] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + }, + /* nXcmHue[12][16] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + }, + }, + }, +}; + +static AX_ISP_IQ_3DLUT_PARAM_T isp_3dlut_param_sdr = { + /* n3DlutEn */ + 0, + /* nAutoMode */ + 0, + /* nRefMode */ + 1, + /* nConvergeSpeed */ + 5, + /* nGainTrigger */ + 10240, + /* nLuxTrigger */ + 10240, + /* nCctTrigger */ + 50, + /* eLutSizeType */ + /* 17:AX_ISP_3DLUT_LUT_SIZE_TYPE_17, 21:AX_ISP_3DLUT_LUT_SIZE_TYPE_21, 27:AX_ISP_3DLUT_LUT_SIZE_TYPE_27 */ + AX_ISP_3DLUT_LUT_SIZE_TYPE_17, + /* tManualParam */ + { + /* tAnchorTbl */ + { + /* nHueTbl[16][24] */ + { + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + }, + /* nSatTbl[16][24] */ + { + {4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, /*0 - 23*/}, + {8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, /*0 - 23*/}, + {12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, /*0 - 23*/}, + {16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /*0 - 23*/}, + {20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, /*0 - 23*/}, + {24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, /*0 - 23*/}, + {28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, /*0 - 23*/}, + {32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, /*0 - 23*/}, + {36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, /*0 - 23*/}, + {40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, /*0 - 23*/}, + {45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, /*0 - 23*/}, + {49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, /*0 - 23*/}, + {53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, /*0 - 23*/}, + {57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, /*0 - 23*/}, + {61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, /*0 - 23*/}, + {65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, /*0 - 23*/}, + }, + }, + }, + /* tAutoParam */ + { + /* nRefListNum */ + 1, + /* tRefTbl[12] */ + { + /* 0 */ + { + /* nRefStartVal */ + 1, + /* nRefEndVal */ + 1, + /* nCctListNum */ + 1, + /* tCctTbl[16] */ + { + /* 0 */ + { + /* nCctStart */ + 1, + /* nCctEnd */ + 1, + /* tAnchorTbl */ + { + /* nHueTbl[16][24] */ + { + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + {0, 1920, 3840, 5760, 7680, 9600, 11520, 13440, 15360, 17280, 19200, 21120, 23040, 24960, 26880, 28800, 30720, 32640, 34560, 36480, 38400, 40320, 42240, 44160, /*0 - 23*/}, + }, + /* nSatTbl[16][24] */ + { + {4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, /*0 - 23*/}, + {8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, /*0 - 23*/}, + {12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, 12288, /*0 - 23*/}, + {16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, /*0 - 23*/}, + {20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480, /*0 - 23*/}, + {24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, /*0 - 23*/}, + {28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, 28672, /*0 - 23*/}, + {32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768, /*0 - 23*/}, + {36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, 36864, /*0 - 23*/}, + {40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, /*0 - 23*/}, + {45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, 45056, /*0 - 23*/}, + {49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, /*0 - 23*/}, + {53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, 53248, /*0 - 23*/}, + {57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, 57344, /*0 - 23*/}, + {61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, 61440, /*0 - 23*/}, + {65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, /*0 - 23*/}, + }, + }, + }, + }, + }, + }, + }, +}; + +static AX_ISP_IQ_GAMMA_PARAM_T gamma_param_sdr = { + /* nGammaEn */ + 1, + /* nAutoMode */ + 0, + /* nRefMode */ + 0, + /* eGammaMode */ + /* 0:AX_ISP_GAM_USER_GAMMA, 1:AX_ISP_GAM_PRESET_GAMMA */ + AX_ISP_GAM_PRESET_GAMMA, + /* ePresetGammaType */ + /* 0:AX_ISP_GAM_LINEAR, 1:AX_ISP_GAM_BT709, 2:AX_ISP_GAM_SRGB, 10:AX_ISP_GAM_AX_GAM0, 11:AX_ISP_GAM_AX_GAM1, 12:AX_ISP_GAM_AX_GAM2 */ + AX_ISP_GAM_AX_GAM2, + /* eLutMode */ + /* 0:AX_ISP_GAM_LUT_LINEAR, 1:AX_ISP_GAM_EXPONENTIAL */ + AX_ISP_GAM_EXPONENTIAL, + /* tManualParam */ + { + /* tGammaLut */ + { + /* nLut[129] */ + { + 0, 13, 26, 40, 53, 67, 81, 95, 109, 123, 137, 152, 166, 181, 195, 210, 225, 240, 255, 270, 285, 301, 316, 332, 348, 364, 379, 395, 412, 428, 444, 461, /* 0 - 31*/ + 477, 511, 544, 579, 613, 648, 684, 720, 756, 793, 830, 868, 906, 944, 983, 1022, 1061, 1142, 1224, 1307, 1392, 1479, 1567, 1657, 1748, 1841, 1935, 2030, 2127, 2226, 2326, 2427, /* 32 - 63*/ + 2530, 2734, 2934, 3129, 3321, 3508, 3691, 3871, 4047, 4220, 4389, 4555, 4718, 4878, 5034, 5188, 5340, 5634, 5918, 6193, 6459, 6717, 6966, 7208, 7442, 7669, 7890, 8105, 8313, 8516, 8713, 8905, /* 64 - 95*/ + 9092, 9451, 9792, 10116, 10424, 10718, 10998, 11265, 11520, 11764, 11997, 12220, 12433, 12638, 12834, 13021, 13202, 13540, 13852, 14139, 14405, 14650, 14877, 15086, 15280, 15459, 15624, 15777, 15918, 16049, 16169, 16280, /* 96 - 127*/ + 16383, /*128 - 128*/ + }, + }, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 3, + /* nRefValStart[3] */ + {0, 100, 500, /*0 - 2*/}, + /* nRefValEnd[3] */ + {50, 200, 1000, /*0 - 2*/}, + /* tGammaLut[3] */ + { + /* 0 */ + { + /* nLut[129] */ + { + 0, 26, 52, 79, 105, 132, 158, 185, 211, 238, 264, 291, 317, 344, 370, 397, 423, 450, 476, 503, 529, 556, 582, 609, 635, 662, 688, 715, 741, 768, 794, 821, /* 0 - 31*/ + 847, 900, 953, 1006, 1059, 1112, 1165, 1218, 1271, 1324, 1377, 1430, 1483, 1536, 1589, 1642, 1695, 1800, 1906, 2012, 2118, 2224, 2330, 2436, 2542, 2648, 2754, 2860, 2966, 3072, 3178, 3284, /* 32 - 63*/ + 3390, 3597, 3794, 3983, 4165, 4340, 4508, 4671, 4828, 4980, 5128, 5271, 5410, 5545, 5677, 5805, 5930, 6171, 6402, 6623, 6835, 7039, 7235, 7425, 7608, 7786, 7958, 8124, 8287, 8444, 8598, 8748, /* 64 - 95*/ + 8894, 9175, 9444, 9702, 9949, 10187, 10416, 10637, 10851, 11058, 11259, 11453, 11643, 11827, 12006, 12180, 12351, 12679, 12993, 13293, 13582, 13859, 14127, 14385, 14634, 14876, 15110, 15337, 15558, 15772, 15981, 16185, /* 96 - 127*/ + 16383, /*128 - 128*/ + }, + }, + /* 1 */ + { + /* nLut[129] */ + { + 0, 21, 43, 65, 87, 109, 131, 153, 175, 197, 219, 242, 264, 286, 308, 331, 353, 375, 397, 420, 442, 465, 487, 510, 532, 555, 577, 600, 623, 645, 668, 691, /* 0 - 31*/ + 714, 759, 805, 851, 897, 943, 989, 1035, 1081, 1128, 1175, 1221, 1268, 1315, 1362, 1409, 1457, 1552, 1647, 1743, 1839, 1936, 2033, 2130, 2228, 2326, 2425, 2524, 2624, 2724, 2824, 2924, /* 32 - 63*/ + 3026, 3224, 3416, 3600, 3779, 3952, 4119, 4282, 4441, 4595, 4745, 4891, 5034, 5173, 5309, 5443, 5573, 5825, 6068, 6302, 6527, 6744, 6954, 7158, 7355, 7547, 7733, 7913, 8089, 8260, 8427, 8590, /* 64 - 95*/ + 8748, 9054, 9347, 9627, 9895, 10153, 10401, 10640, 10870, 11092, 11306, 11514, 11715, 11910, 12099, 12282, 12460, 12801, 13124, 13430, 13721, 13999, 14264, 14516, 14759, 14990, 15213, 15427, 15633, 15831, 16021, 16206, /* 96 - 127*/ + 16383, /*128 - 128*/ + }, + }, + /* 2 */ + { + /* nLut[129] */ + { + 0, 13, 26, 40, 53, 67, 81, 95, 109, 123, 137, 152, 166, 181, 195, 210, 225, 240, 255, 270, 285, 301, 316, 332, 348, 364, 379, 395, 412, 428, 444, 461, /* 0 - 31*/ + 477, 511, 544, 579, 613, 649, 684, 720, 756, 793, 830, 868, 906, 944, 983, 1022, 1061, 1142, 1224, 1307, 1392, 1479, 1567, 1657, 1748, 1841, 1935, 2031, 2128, 2226, 2326, 2427, /* 32 - 63*/ + 2530, 2734, 2934, 3130, 3321, 3508, 3692, 3871, 4047, 4220, 4389, 4555, 4718, 4878, 5035, 5189, 5340, 5634, 5919, 6194, 6460, 6717, 6966, 7208, 7442, 7670, 7891, 8105, 8314, 8517, 8714, 8906, /* 64 - 95*/ + 9092, 9451, 9792, 10116, 10425, 10718, 10998, 11266, 11521, 11764, 11998, 12221, 12434, 12639, 12834, 13022, 13202, 13541, 13853, 14140, 14406, 14651, 14877, 15087, 15280, 15459, 15625, 15778, 15919, 16050, 16170, 16281, /* 96 - 127*/ + 16383, /*128 - 128*/ + }, + }, + }, + }, +}; + +static AX_ISP_IQ_DEHAZE_PARAM_T dehaze_param_sdr = { + /* nDehazeEn */ + 0, + /* nAutoMode */ + 0, + /* nRefMode */ + 1, + /* tGlbParam */ + { + /* eTuningMode */ + /* 0:AX_ISP_DEHAZE_STR_MANUAL, 1:AX_ISP_DEHAZE_STR_LUMA, 2:AX_ISP_DEHAZE_STR_SPATIAL, 3:AX_ISP_DEHAZE_STR_LUMA_AND_SPATIAL */ + AX_ISP_DEHAZE_STR_MANUAL, + /* nGrayMode */ + 0, + /* nGrayRatio[3] */ + {64, 127, 64, /*0 - 2*/}, + /* nAirReflect */ + 52224, + /* nStrengthLimit */ + 26, + }, + /* tManualParam */ + { + /* nEffectStrength */ + 102, + /* nGrayDcRatio */ + 64, + /* nLumaStrengthIndex[9] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + /* nLumaStrengthValue[9] */ + {16, 16, 16, 16, 16, 16, 16, 16, 16, /*0 - 8*/}, + /* tSpatialStrengthLut */ + { + /* nSpatialStrengthLut[9][9] */ + { + {128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 8*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 8*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 8*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 8*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 8*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 8*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 8*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 8*/}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, /*0 - 8*/}, + }, + }, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 0, + /* nRefVal[16] */ + {0, /*0 - 0*/}, + /* nEffectStrength[16] */ + {0, /*0 - 0*/}, + /* nGrayDcRatio[16] */ + {0, /*0 - 0*/}, + /* nLumaStrengthIndex[16][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nLumaStrengthValue[16][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* tSpatialStrengthLut[16] */ + { + /* 0 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 1 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 2 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 3 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 4 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 5 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 6 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 7 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 8 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 9 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 10 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 11 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 12 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 13 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 14 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* 15 */ + { + /* nSpatialStrengthLut[9][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + }, + }, +}; + +static AX_ISP_IQ_CSC_PARAM_T csc_param_sdr = { + /* nMatrix[3][3] */ + { + {76, 150, 29, /*0 - 2*/}, + {-43, -85, 128, /*0 - 2*/}, + {128, -107, -21, /*0 - 2*/}, + }, + /* eColorSpaceMode */ + /* 0:AX_ISP_CSC_USER, 1:AX_ISP_CSC_BT601, 2:AX_ISP_CSC_BT709, 3:AX_ISP_CSC_BT2020, 4:AX_ISP_CSC_BUTT */ + AX_ISP_CSC_USER, + /* eUvSeqSel */ + /* 0:AX_ISP_NV12_SEL, 1:AX_ISP_NV21_SEL */ + AX_ISP_NV12_SEL, +}; + +static AX_ISP_IQ_CA_PARAM_T ca_param_sdr = { + /* nCppEn */ + 0, + /* nAutoMode */ + 0, + /* nRefMode */ + 0, + /* tManualParam */ + { + /* nCtrlLevel */ + 256, + /* nSat */ + 0, + /* nHue */ + 0, + /* nCmtx[2][2] */ + { + {256, 0, /*0 - 1*/}, + {0, 256, /*0 - 1*/}, + }, + }, + /* tAutoParam */ + { + /* nParamGrpNumCt */ + 0, + /* nParamGrpNumLG */ + 0, + /* nRefValCt[12] */ + {0, /*0 - 0*/}, + /* nRefValLG[12][5] */ + { + {0, /*0 - 0*/}, + }, + /* nCmtx[12][5][4] */ + { + /* nCmtx 0 */ + { + {0, 0, 0, 0, /*0 - 3*/}, + }, + }, + }, +}; + +static AX_ISP_IQ_YNR_PARAM_T ynr_param_sdr = { + /* nYnrEn */ + 1, + /* nDbpcEn */ + 0, + /* nColorTargetEn */ + 0, + /* nAutoMode */ + 1, + /* nRefMode */ + 1, + /* nIoFlag */ + 0, + /* tManualParam */ + { + /* nYnrCenter[3] */ + {0, 0, 0, /*0 - 2*/}, + /* nYnrRadius[3] */ + {0, 0, 0, /*0 - 2*/}, + /* nYnrSmooth[3] */ + {0, 0, 0, /*0 - 2*/}, + /* nYnrLevel[2] */ + {255, 0, /*0 - 1*/}, + /* nYnrInvNrLut[4] */ + {2047, 2047, 2047, 2047, /*0 - 3*/}, + /* nDbpcEdSlope */ + 18, + /* nDbpcEdOffsetLut[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[16] */ + {1024, 2048, 8192, 12288, 16384, 65536, 131072, 896000, /*0 - 7*/}, + /* nYnrCenter[16][3] */ + { + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + }, + /* nYnrRadius[16][3] */ + { + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + }, + /* nYnrSmooth[16][3] */ + { + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + }, + /* nYnrLevel[16][2] */ + { + {255, 0, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + {255, 0, /*0 - 1*/}, + }, + /* nYnrInvNrLut[16][4] */ + { + {2047, 2047, 2047, 2047, /*0 - 3*/}, + {2047, 2047, 2047, 2047, /*0 - 3*/}, + {2047, 2047, 2047, 2047, /*0 - 3*/}, + {2047, 2047, 2047, 2047, /*0 - 3*/}, + {2047, 2047, 2047, 2047, /*0 - 3*/}, + {2047, 2047, 2047, 2047, /*0 - 3*/}, + {2047, 2047, 2047, 2047, /*0 - 3*/}, + {2047, 2047, 2047, 2047, /*0 - 3*/}, + }, + /* nDbpcEdSlope[16] */ + {18, 18, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + /* nDbpcEdOffsetLut[16][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + {256, 256, 256, 256, /*0 - 3*/}, + }, + }, +}; + +static AX_ISP_IQ_AYNR_PARAM_T aynr_param_sdr = { + /* nAutoMode */ + 1, + /* nRefMode */ + 1, + /* nFilterMode[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* tManualParam */ + { + /* nAYnrEdDeteThre[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nAYnrEdDeteSlope[4] */ + {1280, 1280, 1280, 1280, /*0 - 3*/}, + /* nAYnrIddDetStren[4] */ + {224, 224, 224, 224, /*0 - 3*/}, + /* tAYnrFilterCoef[4] */ + { + /* 0 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 4, 24, 4, 0, 0, 24, 143, 24, 0, 0, 4, 24, 4, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + }, + /* tAYnrFilterStrength[4] */ + { + /* 0 */ + { + /* nAYnrFilter0Strength */ + 64, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Strength */ + 32, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + }, + /* nAYnrStrength[4] */ + {160, 16, 0, 0, /*0 - 3*/}, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[16] */ + {1024, 2048, 8192, 12288, 32768, 65536, 131072, 1024000, /*0 - 7*/}, + /* nAYnrEdDeteThre[16][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nAYnrEdDeteSlope[16][4] */ + { + {1280, 1280, 1280, 1280, /*0 - 3*/}, + {1280, 1280, 1280, 1280, /*0 - 3*/}, + {1280, 1280, 1280, 1280, /*0 - 3*/}, + {1280, 1280, 1280, 1280, /*0 - 3*/}, + {1280, 1280, 1280, 1280, /*0 - 3*/}, + {1280, 1280, 1280, 1280, /*0 - 3*/}, + {1280, 1280, 1280, 1280, /*0 - 3*/}, + {1280, 1280, 1280, 1280, /*0 - 3*/}, + }, + /* nAYnrIddDetStren[16][4] */ + { + {224, 224, 224, 224, /*0 - 3*/}, + {224, 224, 224, 224, /*0 - 3*/}, + {224, 224, 224, 224, /*0 - 3*/}, + {224, 224, 224, 224, /*0 - 3*/}, + {224, 224, 224, 224, /*0 - 3*/}, + {224, 224, 224, 224, /*0 - 3*/}, + {224, 224, 224, 224, /*0 - 3*/}, + {224, 224, 224, 224, /*0 - 3*/}, + }, + /* tAYnrFilterCoef */ + { + /* 0 */ + { + /* 0 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 4, 24, 4, 0, 0, 24, 143, 24, 0, 0, 4, 24, 4, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + }, + /* 1 */ + { + /* 0 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 4, 24, 4, 0, 0, 24, 143, 24, 0, 0, 4, 24, 4, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + }, + /* 2 */ + { + /* 0 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 4, 24, 4, 0, 0, 24, 143, 24, 0, 0, 4, 24, 4, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + }, + /* 3 */ + { + /* 0 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 4, 24, 4, 0, 0, 24, 143, 24, 0, 0, 4, 24, 4, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + }, + /* 4 */ + { + /* 0 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 4, 24, 4, 0, 0, 24, 143, 24, 0, 0, 4, 24, 4, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + }, + /* 5 */ + { + /* 0 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 4, 24, 4, 0, 0, 24, 143, 24, 0, 0, 4, 24, 4, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + }, + /* 6 */ + { + /* 0 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 4, 24, 4, 0, 0, 24, 143, 24, 0, 0, 4, 24, 4, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + }, + /* 7 */ + { + /* 0 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 4, 24, 4, 0, 0, 24, 143, 24, 0, 0, 4, 24, 4, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 63, 98, 63, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 0, 16, 0, 0, 0, 0, 63, 0, 0, 0, 0, 98, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 0, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 0, 0, 4, 0, 0, 0, 57, 0, 0, 0, 137, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {4, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 4, /*0 - 24*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Coef[25] */ + {1, 4, 6, 4, 1, 4, 15, 24, 15, 4, 6, 24, 37, 24, 6, 4, 15, 24, 15, 4, 1, 4, 6, 4, 1, /*0 - 24*/}, + /* nAYnrFilter1Coef[25] */ + {0, 0, 0, 0, 0, 2, 8, 12, 8, 2, 12, 47, 73, 47, 12, 2, 8, 12, 8, 2, 0, 0, 0, 0, 0, /*0 - 24*/}, + /* nAYnrFilter2Coef[25] */ + {0, 2, 12, 2, 0, 0, 8, 47, 8, 0, 0, 12, 73, 12, 0, 0, 8, 47, 8, 0, 0, 2, 12, 2, 0, /*0 - 24*/}, + /* nAYnrFilter3Coef[25] */ + {0, 0, 1, 4, 2, 0, 2, 24, 30, 4, 1, 23, 72, 25, 1, 4, 29, 25, 2, 0, 2, 4, 1, 0, 0, /*0 - 24*/}, + /* nAYnrFilter4Coef[25] */ + {2, 4, 1, 0, 0, 4, 30, 25, 2, 0, 1, 24, 72, 25, 1, 0, 2, 23, 29, 4, 0, 0, 1, 4, 2, /*0 - 24*/}, + }, + }, + }, + /* tAYnrFilterStrength */ + { + /* 0 */ + { + /* 0 */ + { + /* nAYnrFilter0Strength */ + 64, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Strength */ + 32, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + }, + /* 1 */ + { + /* 0 */ + { + /* nAYnrFilter0Strength */ + 64, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Strength */ + 32, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + }, + /* 2 */ + { + /* 0 */ + { + /* nAYnrFilter0Strength */ + 64, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Strength */ + 32, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + }, + /* 3 */ + { + /* 0 */ + { + /* nAYnrFilter0Strength */ + 64, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Strength */ + 32, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + }, + /* 4 */ + { + /* 0 */ + { + /* nAYnrFilter0Strength */ + 64, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Strength */ + 32, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + }, + /* 5 */ + { + /* 0 */ + { + /* nAYnrFilter0Strength */ + 64, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Strength */ + 32, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + }, + /* 6 */ + { + /* 0 */ + { + /* nAYnrFilter0Strength */ + 64, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Strength */ + 32, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + }, + /* 7 */ + { + /* 0 */ + { + /* nAYnrFilter0Strength */ + 64, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 1 */ + { + /* nAYnrFilter0Strength */ + 32, + /* nAYnrFilter1Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 0, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 0, /*0 - 1*/}, + }, + /* 2 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + /* 3 */ + { + /* nAYnrFilter0Strength */ + 128, + /* nAYnrFilter1Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter2Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter3Strength[2] */ + {128, 64, /*0 - 1*/}, + /* nAYnrFilter4Strength[2] */ + {128, 64, /*0 - 1*/}, + }, + }, + }, + /* nAYnrStrength[16][4] */ + { + {220, 32, 0, 0, /*0 - 3*/}, + {180, 16, 0, 0, /*0 - 3*/}, + {160, 16, 0, 0, /*0 - 3*/}, + {160, 16, 0, 0, /*0 - 3*/}, + {160, 16, 0, 0, /*0 - 3*/}, + {160, 16, 0, 0, /*0 - 3*/}, + {160, 16, 0, 0, /*0 - 3*/}, + {160, 16, 0, 0, /*0 - 3*/}, + }, + }, +}; + +static AX_ISP_IQ_CNR_PARAM_T cnr_param_sdr = { + /* nCnrEn */ + 1, + /* nAutoMode */ + 1, + /* nRefMode */ + 1, + /* tManualParam */ + { + /* nCnrLevel */ + 0, + /* nCnrInvNrLut[4] */ + {1024, 1024, 1024, 1024, /*0 - 3*/}, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[16] */ + {1024, 2048, 8192, 12288, 12289, 65536, 131072, 896000, /*0 - 7*/}, + /* nCnrLevel[16] */ + {0, 0, 16, 16, 16, 16, 16, 16, /*0 - 7*/}, + /* nCnrInvNrLut[16][4] */ + { + {1024, 1024, 1024, 1024, /*0 - 3*/}, + {1024, 1024, 1024, 1024, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + {128, 128, 128, 128, /*0 - 3*/}, + }, + }, +}; + +static AX_ISP_IQ_ACNR_PARAM_T acnr_param_sdr = { + /* nAutoMode */ + 1, + /* nRefMode */ + 1, + /* tManualParam */ + { + /* nACnrCoringThre[4] */ + {80, 80, 80, 80, /*0 - 3*/}, + /* nACnrCoringSlope[4] */ + {3, 3, 3, 3, /*0 - 3*/}, + /* nACnrEdgeThre[4] */ + {1024, 1024, 1024, 1024, /*0 - 3*/}, + /* nACnrEdgeSlope[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nACnrNvLut[36] */ + { + 48, 64, 80, 96, 112, 160, 192, 224, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, /*32 - 35*/ + }, + /* nACnrStrength[4] */ + {128, 0, 0, 0, /*0 - 3*/}, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[16] */ + {1024, 2048, 8192, 12288, 12289, 65536, 131072, 896000, /*0 - 7*/}, + /* nACnrCoringThre[16][4] */ + { + {80, 80, 80, 80, /*0 - 3*/}, + {80, 80, 80, 80, /*0 - 3*/}, + {80, 80, 80, 80, /*0 - 3*/}, + {80, 80, 80, 80, /*0 - 3*/}, + {80, 80, 80, 80, /*0 - 3*/}, + {80, 80, 80, 80, /*0 - 3*/}, + {80, 80, 80, 80, /*0 - 3*/}, + {80, 80, 80, 80, /*0 - 3*/}, + }, + /* nACnrCoringSlope[16][4] */ + { + {3, 3, 3, 3, /*0 - 3*/}, + {3, 3, 3, 3, /*0 - 3*/}, + {3, 3, 3, 3, /*0 - 3*/}, + {3, 3, 3, 3, /*0 - 3*/}, + {3, 3, 3, 3, /*0 - 3*/}, + {3, 3, 3, 3, /*0 - 3*/}, + {3, 3, 3, 3, /*0 - 3*/}, + {3, 3, 3, 3, /*0 - 3*/}, + }, + /* nACnrEdgeThre[16][4] */ + { + {1024, 1024, 1024, 1024, /*0 - 3*/}, + {1024, 1024, 1024, 1024, /*0 - 3*/}, + {1024, 1024, 1024, 1024, /*0 - 3*/}, + {1024, 1024, 1024, 1024, /*0 - 3*/}, + {1024, 1024, 1024, 1024, /*0 - 3*/}, + {1024, 1024, 1024, 1024, /*0 - 3*/}, + {1024, 1024, 1024, 1024, /*0 - 3*/}, + {1024, 1024, 1024, 1024, /*0 - 3*/}, + }, + /* nACnrEdgeSlope[16][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nACnrNvLut[16][36] */ + { + { + 48, 64, 80, 96, 112, 160, 192, 224, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, /*32 - 35*/ + }, + { + 48, 64, 80, 96, 112, 160, 192, 224, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 0, /*32 - 35*/ + }, + { + 48, 64, 80, 96, 112, 160, 192, 224, 240, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, /* 0 - 31*/ + 96, 96, 96, 96, /*32 - 35*/ + }, + { + 48, 64, 80, 96, 112, 160, 192, 224, 240, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, /* 0 - 31*/ + 96, 96, 96, 96, /*32 - 35*/ + }, + { + 48, 64, 80, 96, 112, 160, 192, 224, 240, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, /* 0 - 31*/ + 96, 96, 96, 96, /*32 - 35*/ + }, + { + 48, 64, 80, 96, 112, 160, 192, 224, 240, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, /* 0 - 31*/ + 96, 96, 96, 96, /*32 - 35*/ + }, + { + 48, 64, 80, 96, 112, 160, 192, 224, 240, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, /* 0 - 31*/ + 96, 96, 96, 96, /*32 - 35*/ + }, + { + 48, 64, 80, 96, 112, 160, 192, 224, 240, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, 96, 96, 96, 96, 48, 64, 80, 96, 96, /* 0 - 31*/ + 96, 96, 96, 96, /*32 - 35*/ + }, + }, + /* nACnrStrength[16][4] */ + { + {128, 0, 0, 0, /*0 - 3*/}, + {128, 0, 0, 0, /*0 - 3*/}, + {256, 256, 256, 0, /*0 - 3*/}, + {256, 256, 256, 0, /*0 - 3*/}, + {256, 256, 256, 0, /*0 - 3*/}, + {256, 256, 256, 0, /*0 - 3*/}, + {256, 256, 256, 0, /*0 - 3*/}, + {256, 256, 256, 0, /*0 - 3*/}, + }, + }, +}; + +static AX_ISP_IQ_SHARPEN_PARAM_T sharpen_param_sdr = { + /* nShpEn */ + 1, + /* nShpMotionEn */ + 1, + /* nColorTargetEn[3] */ + {0, 0, 0, /*0 - 2*/}, + /* nAutoMode */ + 1, + /* nRefMode */ + 1, + /* nIoFlag[3] */ + {0, 0, 0, /*0 - 2*/}, + /* tManualParam */ + { + /* nShpMotionStren */ + -121, + /* nShpStillStren */ + 0, + /* nShpCenter[3][3] */ + { + {3200, 2048, 2048, /*0 - 2*/}, + {-352, -224, -224, /*0 - 2*/}, + {288, 240, 240, /*0 - 2*/}, + }, + /* nShpRadius[3][3] */ + { + {256, 512, 512, /*0 - 2*/}, + {128, 96, 96, /*0 - 2*/}, + {128, 160, 160, /*0 - 2*/}, + }, + /* nShpSmooth[3][3] */ + { + {6, 6, 6, /*0 - 2*/}, + {3, 3, 3, /*0 - 2*/}, + {4, 4, 4, /*0 - 2*/}, + }, + /* nShpLevelLut0[51] */ + { + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*32 - 50*/ + }, + /* nShpCoring[3] */ + {10, 10, 10, /*0 - 2*/}, + /* nShpEdSlope[3] */ + {16, 16, 16, /*0 - 2*/}, + /* nShpEdOffset[3] */ + {-64, -32, 0, /*0 - 2*/}, + /* nShpEdLlimit[3] */ + {128, 64, 32, /*0 - 2*/}, + /* nShpGain[3][2] */ + { + {24, 20, /*0 - 1*/}, + {36, 28, /*0 - 1*/}, + {28, 20, /*0 - 1*/}, + }, + /* nShpLimit[3][2] */ + { + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + }, + /* nShpOsLimit[3][2] */ + { + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + {-100, 100, /*0 - 1*/}, + }, + /* nShpOsGain[3] */ + {2, 2, 2, /*0 - 2*/}, + /* nShpHpfBsigma[3] */ + {0, 16, 24, /*0 - 2*/}, + /* nShpHpfDsigma[3] */ + {24, 24, 32, /*0 - 2*/}, + /* nShpHpfScale[3] */ + {128, 128, 128, /*0 - 2*/}, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[16] */ + {1024, 2048, 8192, 12288, 32768, 65536, 128000, 1024000, /*0 - 7*/}, + /* nShpMotionStren[16] */ + {-120, -128, -160, -256, -512, -1024, -1024, -1024, /*0 - 7*/}, + /* nShpStillStren[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + /* tShpCenter[16][3][3] */ + { + /* tShpCenter 0 */ + { + {3200, 2048, 2048, /*0 - 2*/}, + {-352, -224, -224, /*0 - 2*/}, + {288, 240, 240, /*0 - 2*/}, + }, + /* tShpCenter 1 */ + { + {3200, 2048, 2048, /*0 - 2*/}, + {-352, -224, -224, /*0 - 2*/}, + {288, 240, 240, /*0 - 2*/}, + }, + /* tShpCenter 2 */ + { + {704, 2048, 2048, /*0 - 2*/}, + {176, -224, -224, /*0 - 2*/}, + {32, 240, 240, /*0 - 2*/}, + }, + /* tShpCenter 3 */ + { + {704, 2048, 2048, /*0 - 2*/}, + {176, -224, -224, /*0 - 2*/}, + {32, 240, 240, /*0 - 2*/}, + }, + /* tShpCenter 4 */ + { + {704, 2048, 2048, /*0 - 2*/}, + {176, -224, -224, /*0 - 2*/}, + {32, 240, 240, /*0 - 2*/}, + }, + /* tShpCenter 5 */ + { + {704, 2048, 2048, /*0 - 2*/}, + {176, -224, -224, /*0 - 2*/}, + {32, 240, 240, /*0 - 2*/}, + }, + /* tShpCenter 6 */ + { + {704, 2048, 2048, /*0 - 2*/}, + {176, -224, -224, /*0 - 2*/}, + {32, 240, 240, /*0 - 2*/}, + }, + /* tShpCenter 7 */ + { + {704, 2048, 2048, /*0 - 2*/}, + {176, -224, -224, /*0 - 2*/}, + {32, 240, 240, /*0 - 2*/}, + }, + }, + /* tShpRadius[16][3][3] */ + { + /* tShpRadius 0 */ + { + {256, 512, 512, /*0 - 2*/}, + {128, 96, 96, /*0 - 2*/}, + {128, 160, 160, /*0 - 2*/}, + }, + /* tShpRadius 1 */ + { + {256, 512, 512, /*0 - 2*/}, + {128, 96, 96, /*0 - 2*/}, + {128, 160, 160, /*0 - 2*/}, + }, + /* tShpRadius 2 */ + { + {256, 512, 512, /*0 - 2*/}, + {128, 96, 96, /*0 - 2*/}, + {128, 160, 160, /*0 - 2*/}, + }, + /* tShpRadius 3 */ + { + {256, 512, 512, /*0 - 2*/}, + {128, 96, 96, /*0 - 2*/}, + {128, 160, 160, /*0 - 2*/}, + }, + /* tShpRadius 4 */ + { + {256, 512, 512, /*0 - 2*/}, + {128, 96, 96, /*0 - 2*/}, + {128, 160, 160, /*0 - 2*/}, + }, + /* tShpRadius 5 */ + { + {256, 512, 512, /*0 - 2*/}, + {128, 96, 96, /*0 - 2*/}, + {128, 160, 160, /*0 - 2*/}, + }, + /* tShpRadius 6 */ + { + {256, 512, 512, /*0 - 2*/}, + {128, 96, 96, /*0 - 2*/}, + {128, 160, 160, /*0 - 2*/}, + }, + /* tShpRadius 7 */ + { + {256, 512, 512, /*0 - 2*/}, + {128, 96, 96, /*0 - 2*/}, + {128, 160, 160, /*0 - 2*/}, + }, + }, + /* tShpSmooth[16][3][3] */ + { + /* tShpSmooth 0 */ + { + {6, 6, 6, /*0 - 2*/}, + {3, 3, 3, /*0 - 2*/}, + {4, 4, 4, /*0 - 2*/}, + }, + /* tShpSmooth 1 */ + { + {6, 6, 6, /*0 - 2*/}, + {3, 3, 3, /*0 - 2*/}, + {4, 4, 4, /*0 - 2*/}, + }, + /* tShpSmooth 2 */ + { + {4, 6, 6, /*0 - 2*/}, + {1, 3, 3, /*0 - 2*/}, + {3, 4, 4, /*0 - 2*/}, + }, + /* tShpSmooth 3 */ + { + {4, 6, 6, /*0 - 2*/}, + {1, 3, 3, /*0 - 2*/}, + {3, 4, 4, /*0 - 2*/}, + }, + /* tShpSmooth 4 */ + { + {4, 6, 6, /*0 - 2*/}, + {1, 3, 3, /*0 - 2*/}, + {3, 4, 4, /*0 - 2*/}, + }, + /* tShpSmooth 5 */ + { + {4, 6, 6, /*0 - 2*/}, + {1, 3, 3, /*0 - 2*/}, + {3, 4, 4, /*0 - 2*/}, + }, + /* tShpSmooth 6 */ + { + {4, 6, 6, /*0 - 2*/}, + {1, 3, 3, /*0 - 2*/}, + {3, 4, 4, /*0 - 2*/}, + }, + /* tShpSmooth 7 */ + { + {4, 6, 6, /*0 - 2*/}, + {1, 3, 3, /*0 - 2*/}, + {3, 4, 4, /*0 - 2*/}, + }, + }, + /* nShpLevelLut0[16][51] */ + { + { + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*32 - 50*/ + }, + { + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*32 - 50*/ + }, + { + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*32 - 50*/ + }, + { + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*32 - 50*/ + }, + { + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*32 - 50*/ + }, + { + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*32 - 50*/ + }, + { + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*32 - 50*/ + }, + { + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /*32 - 50*/ + }, + }, + /* nShpCoring[16][3] */ + { + {10, 10, 10, /*0 - 2*/}, + {10, 10, 10, /*0 - 2*/}, + {10, 10, 10, /*0 - 2*/}, + {10, 10, 10, /*0 - 2*/}, + {10, 10, 10, /*0 - 2*/}, + {10, 10, 10, /*0 - 2*/}, + {10, 10, 10, /*0 - 2*/}, + {10, 10, 10, /*0 - 2*/}, + }, + /* nShpEdSlope[16][3] */ + { + {16, 16, 16, /*0 - 2*/}, + {16, 16, 16, /*0 - 2*/}, + {16, 16, 16, /*0 - 2*/}, + {16, 16, 16, /*0 - 2*/}, + {16, 16, 16, /*0 - 2*/}, + {16, 16, 16, /*0 - 2*/}, + {16, 16, 16, /*0 - 2*/}, + {16, 16, 16, /*0 - 2*/}, + }, + /* nShpEdOffset[16][3] */ + { + {-64, -32, 0, /*0 - 2*/}, + {-64, -32, 0, /*0 - 2*/}, + {-64, -32, 0, /*0 - 2*/}, + {-64, -32, 0, /*0 - 2*/}, + {-64, -32, 0, /*0 - 2*/}, + {-64, -32, 0, /*0 - 2*/}, + {-64, -32, 0, /*0 - 2*/}, + {-64, -32, 0, /*0 - 2*/}, + }, + /* nShpEdLlimit[16][3] */ + { + {128, 64, 32, /*0 - 2*/}, + {128, 64, 32, /*0 - 2*/}, + {128, 64, 32, /*0 - 2*/}, + {128, 64, 32, /*0 - 2*/}, + {128, 64, 32, /*0 - 2*/}, + {128, 64, 32, /*0 - 2*/}, + {128, 64, 32, /*0 - 2*/}, + {128, 64, 32, /*0 - 2*/}, + }, + /* nShpGain[16][3][2] */ + { + /* nShpGain 0 */ + { + {24, 20, /*0 - 1*/}, + {36, 28, /*0 - 1*/}, + {28, 20, /*0 - 1*/}, + }, + /* nShpGain 1 */ + { + {24, 20, /*0 - 1*/}, + {36, 28, /*0 - 1*/}, + {28, 20, /*0 - 1*/}, + }, + /* nShpGain 2 */ + { + {24, 20, /*0 - 1*/}, + {36, 28, /*0 - 1*/}, + {28, 20, /*0 - 1*/}, + }, + /* nShpGain 3 */ + { + {24, 20, /*0 - 1*/}, + {36, 28, /*0 - 1*/}, + {28, 20, /*0 - 1*/}, + }, + /* nShpGain 4 */ + { + {24, 20, /*0 - 1*/}, + {36, 28, /*0 - 1*/}, + {28, 20, /*0 - 1*/}, + }, + /* nShpGain 5 */ + { + {8, 8, /*0 - 1*/}, + {32, 28, /*0 - 1*/}, + {24, 16, /*0 - 1*/}, + }, + /* nShpGain 6 */ + { + {8, 8, /*0 - 1*/}, + {32, 32, /*0 - 1*/}, + {24, 16, /*0 - 1*/}, + }, + /* nShpGain 7 */ + { + {8, 8, /*0 - 1*/}, + {24, 24, /*0 - 1*/}, + {16, 16, /*0 - 1*/}, + }, + }, + /* nShpLimit[16][3][2] */ + { + /* nShpLimit 0 */ + { + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + }, + /* nShpLimit 1 */ + { + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + }, + /* nShpLimit 2 */ + { + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + }, + /* nShpLimit 3 */ + { + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + }, + /* nShpLimit 4 */ + { + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + }, + /* nShpLimit 5 */ + { + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + }, + /* nShpLimit 6 */ + { + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + }, + /* nShpLimit 7 */ + { + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + {-1024, 1023, /*0 - 1*/}, + }, + }, + /* nShpOsLimit[16][3][2] */ + { + /* nShpOsLimit 0 */ + { + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + {-100, 100, /*0 - 1*/}, + }, + /* nShpOsLimit 1 */ + { + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + {-100, 100, /*0 - 1*/}, + }, + /* nShpOsLimit 2 */ + { + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + }, + /* nShpOsLimit 3 */ + { + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + }, + /* nShpOsLimit 4 */ + { + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + }, + /* nShpOsLimit 5 */ + { + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + }, + /* nShpOsLimit 6 */ + { + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + }, + /* nShpOsLimit 7 */ + { + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + {-128, 127, /*0 - 1*/}, + }, + }, + /* nShpOsGain[16][3] */ + { + {2, 2, 2, /*0 - 2*/}, + {3, 3, 3, /*0 - 2*/}, + {4, 6, 6, /*0 - 2*/}, + {4, 6, 6, /*0 - 2*/}, + {4, 6, 6, /*0 - 2*/}, + {4, 6, 6, /*0 - 2*/}, + {4, 6, 6, /*0 - 2*/}, + {4, 6, 6, /*0 - 2*/}, + }, + /* nShpHpfBsigma[16][3] */ + { + {0, 16, 24, /*0 - 2*/}, + {0, 16, 24, /*0 - 2*/}, + {0, 16, 24, /*0 - 2*/}, + {0, 16, 24, /*0 - 2*/}, + {0, 16, 24, /*0 - 2*/}, + {0, 16, 24, /*0 - 2*/}, + {0, 16, 24, /*0 - 2*/}, + {0, 16, 24, /*0 - 2*/}, + }, + /* nShpHpfDsigma[16][3] */ + { + {24, 24, 32, /*0 - 2*/}, + {24, 24, 32, /*0 - 2*/}, + {24, 24, 32, /*0 - 2*/}, + {24, 24, 32, /*0 - 2*/}, + {24, 24, 32, /*0 - 2*/}, + {24, 24, 32, /*0 - 2*/}, + {24, 24, 32, /*0 - 2*/}, + {24, 24, 32, /*0 - 2*/}, + }, + /* nShpHpfScale[16][3] */ + { + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + {128, 128, 128, /*0 - 2*/}, + }, + }, +}; + +static AX_ISP_IQ_MDE_PARAM_T mde_param_sdr = { + /* nColorTargetEn[8] */ + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + /* nAutoMode */ + 1, + /* nRefMode */ + 1, + /* nIoFlag[8] */ + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + /* tManualParam */ + { + /* tMdeCenter[3][8] */ + { + {1216, 1872, 352, 1408, 656, 1120, 1200, 2400, /*0 - 7*/}, + {-704, -1072, 1600, -800, 528, 256, 0, 0, /*0 - 7*/}, + {1152, -1408, -272, 128, 656, -800, 0, 0, /*0 - 7*/}, + }, + /* tMdeRadius[3][8] */ + { + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + }, + /* tMdeSmooth[3][8] */ + { + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + }, + /* nMdeStrength0[4][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength1[4][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength2[4][9] */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength3[4][5] */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength4[4][5] */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength5[4][5] */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength6[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nMdeStrength7[4] */ + {0, 0, 0, 0, /*0 - 3*/}, + /* nMdeLumaLut[4][129] */ + { + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + }, + /* nMdeLevelLut[4][129] */ + { + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + }, + /* nMdeGain[4] */ + {594, 400, 256, 256, /*0 - 3*/}, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[16] */ + {1024, 2048, 8192, 12288, 12289, 65536, 131072, 896000, /*0 - 7*/}, + /* tMdeCenter[16][3][8] */ + { + /* tMdeCenter 0 */ + { + {1216, 1872, 352, 1408, 656, 1120, 1200, 2400, /*0 - 7*/}, + {-704, -1072, 1600, -800, 528, 256, 0, 0, /*0 - 7*/}, + {1152, -1408, -272, 128, 656, -800, 0, 0, /*0 - 7*/}, + }, + /* tMdeCenter 1 */ + { + {1216, 1872, 352, 1408, 656, 1120, 1200, 2400, /*0 - 7*/}, + {-704, -1072, 1600, -800, 528, 256, 0, 0, /*0 - 7*/}, + {1152, -1408, -272, 128, 656, -800, 0, 0, /*0 - 7*/}, + }, + /* tMdeCenter 2 */ + { + {1216, 1872, 352, 1408, 656, 1120, 1200, 2400, /*0 - 7*/}, + {-704, -1072, 1600, -800, 528, 256, 0, 0, /*0 - 7*/}, + {1152, -1408, -272, 128, 656, -800, 0, 0, /*0 - 7*/}, + }, + /* tMdeCenter 3 */ + { + {1216, 1872, 352, 1408, 656, 1120, 1200, 2400, /*0 - 7*/}, + {-704, -1072, 1600, -800, 528, 256, 0, 0, /*0 - 7*/}, + {1152, -1408, -272, 128, 656, -800, 0, 0, /*0 - 7*/}, + }, + /* tMdeCenter 4 */ + { + {1216, 1872, 352, 1408, 656, 1120, 1200, 2400, /*0 - 7*/}, + {-704, -1072, 1600, -800, 528, 256, 0, 0, /*0 - 7*/}, + {1152, -1408, -272, 128, 656, -800, 0, 0, /*0 - 7*/}, + }, + /* tMdeCenter 5 */ + { + {1216, 1872, 352, 1408, 656, 1120, 1200, 2400, /*0 - 7*/}, + {-704, -1072, 1600, -800, 528, 256, 0, 0, /*0 - 7*/}, + {1152, -1408, -272, 128, 656, -800, 0, 0, /*0 - 7*/}, + }, + /* tMdeCenter 6 */ + { + {1216, 1872, 352, 1408, 656, 1120, 1200, 2400, /*0 - 7*/}, + {-704, -1072, 1600, -800, 528, 256, 0, 0, /*0 - 7*/}, + {1152, -1408, -272, 128, 656, -800, 0, 0, /*0 - 7*/}, + }, + /* tMdeCenter 7 */ + { + {1216, 1872, 352, 1408, 656, 1120, 1200, 2400, /*0 - 7*/}, + {-704, -1072, 1600, -800, 528, 256, 0, 0, /*0 - 7*/}, + {1152, -1408, -272, 128, 656, -800, 0, 0, /*0 - 7*/}, + }, + }, + /* tMdeRadius[16][3][8] */ + { + /* tMdeRadius 0 */ + { + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + }, + /* tMdeRadius 1 */ + { + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + }, + /* tMdeRadius 2 */ + { + {96, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {80, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + }, + /* tMdeRadius 3 */ + { + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + }, + /* tMdeRadius 4 */ + { + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + }, + /* tMdeRadius 5 */ + { + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + }, + /* tMdeRadius 6 */ + { + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + }, + /* tMdeRadius 7 */ + { + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + {64, 64, 64, 64, 64, 64, 64, 64, /*0 - 7*/}, + }, + }, + /* tMdeSmooth[16][3][8] */ + { + /* tMdeSmooth 0 */ + { + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + }, + /* tMdeSmooth 1 */ + { + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + }, + /* tMdeSmooth 2 */ + { + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + }, + /* tMdeSmooth 3 */ + { + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + }, + /* tMdeSmooth 4 */ + { + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + }, + /* tMdeSmooth 5 */ + { + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + }, + /* tMdeSmooth 6 */ + { + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + }, + /* tMdeSmooth 7 */ + { + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + {3, 3, 3, 3, 3, 3, 3, 3, /*0 - 7*/}, + }, + }, + /* nMdeStrength0[16][4][9] */ + { + /* nMdeStrength0 0 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength0 1 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength0 2 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength0 3 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength0 4 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength0 5 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength0 6 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength0 7 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* nMdeStrength1[16][4][9] */ + { + /* nMdeStrength1 0 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength1 1 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength1 2 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength1 3 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength1 4 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength1 5 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength1 6 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength1 7 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* nMdeStrength2[16][4][9] */ + { + /* nMdeStrength2 0 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength2 1 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength2 2 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength2 3 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength2 4 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength2 5 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength2 6 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + /* nMdeStrength2 7 */ + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 8*/}, + }, + }, + /* nMdeStrength3[16][4][5] */ + { + /* nMdeStrength3 0 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength3 1 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength3 2 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength3 3 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength3 4 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength3 5 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength3 6 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength3 7 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + }, + /* nMdeStrength4[16][4][5] */ + { + /* nMdeStrength4 0 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength4 1 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength4 2 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength4 3 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength4 4 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength4 5 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength4 6 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength4 7 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + }, + /* nMdeStrength5[16][4][5] */ + { + /* nMdeStrength5 0 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength5 1 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength5 2 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength5 3 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength5 4 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength5 5 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength5 6 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + /* nMdeStrength5 7 */ + { + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + {0, 0, 0, 0, 0, /*0 - 4*/}, + }, + }, + /* nMdeStrength6[16][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nMdeStrength7[16][4] */ + { + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + {0, 0, 0, 0, /*0 - 3*/}, + }, + /* nMdeLumaLut[16][4][129] */ + { + /* nMdeLumaLut 0 */ + { + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + }, + /* nMdeLumaLut 1 */ + { + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + }, + /* nMdeLumaLut 2 */ + { + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + }, + /* nMdeLumaLut 3 */ + { + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + }, + /* nMdeLumaLut 4 */ + { + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + }, + /* nMdeLumaLut 5 */ + { + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + }, + /* nMdeLumaLut 6 */ + { + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + }, + /* nMdeLumaLut 7 */ + { + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 0 - 31*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 32 - 63*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 64 - 95*/ + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, /* 96 - 127*/ + 256, /*128 - 128*/ + }, + }, + }, + /* nMdeLevelLut[16][4][129] */ + { + /* nMdeLevelLut 0 */ + { + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + }, + /* nMdeLevelLut 1 */ + { + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + }, + /* nMdeLevelLut 2 */ + { + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + }, + /* nMdeLevelLut 3 */ + { + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + }, + /* nMdeLevelLut 4 */ + { + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + }, + /* nMdeLevelLut 5 */ + { + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + }, + /* nMdeLevelLut 6 */ + { + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + }, + /* nMdeLevelLut 7 */ + { + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, /* 0 - 31*/ + 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, /* 32 - 63*/ + 2048, 2080, 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, 2944, 2976, 3008, 3040, /* 64 - 95*/ + 3072, 3104, 3136, 3168, 3200, 3232, 3264, 3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, 4000, 4032, 4064, /* 96 - 127*/ + 4095, /*128 - 128*/ + }, + }, + }, + /* nMdeGain[16][4] */ + { + {600, 400, 256, 256, /*0 - 3*/}, + {512, 400, 256, 256, /*0 - 3*/}, + {512, 400, 256, 256, /*0 - 3*/}, + {384, 384, 256, 256, /*0 - 3*/}, + {384, 384, 256, 256, /*0 - 3*/}, + {384, 384, 256, 256, /*0 - 3*/}, + {384, 384, 256, 256, /*0 - 3*/}, + {384, 384, 256, 256, /*0 - 3*/}, + }, + }, +}; + +static AX_ISP_IQ_CCMP_PARAM_T ccmp_param_sdr = { + /* nChromaCompEn */ + 1, + /* nAutoMode */ + 1, + /* nRefMode */ + 1, + /* tManualParam */ + { + /* nChromaCompY[29] */ + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 28*/}, + /* nChromaCompSat[23] */ + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 22*/}, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 8, + /* nRefVal[16] */ + {1024, 2048, 8192, 16384, 32768, 65536, 256000, 1024000, 255688, 383532, 511376, 767064, 1022752, 1278440, 1534128, 1789816, /*0 - 15*/}, + /* nChromaCompY[16][29] */ + { + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 28*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 28*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 28*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 28*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 28*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 28*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 28*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 28*/}, + {496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, /*0 - 28*/}, + {494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, /*0 - 28*/}, + {492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, /*0 - 28*/}, + {490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, /*0 - 28*/}, + {488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, /*0 - 28*/}, + {486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, /*0 - 28*/}, + {484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, /*0 - 28*/}, + {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, /*0 - 28*/}, + }, + /* nChromaCompSat[16][23] */ + { + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 22*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 22*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 22*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 22*/}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 22*/}, + {138, 200, 250, 280, 330, 370, 410, 440, 470, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 22*/}, + {138, 200, 250, 280, 330, 370, 410, 440, 470, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 22*/}, + {138, 200, 250, 280, 330, 370, 410, 440, 470, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, /*0 - 22*/}, + {496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, /*0 - 22*/}, + {494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, /*0 - 22*/}, + {492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, /*0 - 22*/}, + {490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, /*0 - 22*/}, + {488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, /*0 - 22*/}, + {486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, /*0 - 22*/}, + {484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, /*0 - 22*/}, + {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, /*0 - 22*/}, + }, + }, +}; + +static AX_ISP_IQ_SCM_PARAM_T scm_param_sdr = { + /* nScmEn */ + 0, + /* nAutoMode */ + 0, + /* nRefMode */ + 0, + /* nScmIoFlag */ + 0, + /* tManualParam */ + { + /* nScmColor[2] */ + {0, 0, /*0 - 1*/}, + /* nScmCenterY */ + 0, + /* nScmCenterUv[2] */ + {0, 0, /*0 - 1*/}, + /* nScmRadius[3] */ + {0, 0, 0, /*0 - 2*/}, + /* nScmSmooth[3] */ + {0, 0, 0, /*0 - 2*/}, + }, + /* tAutoParam */ + { + /* nParamGrpNum */ + 16, + /* nRefVal[16] */ + {2048, 4124, 8248, 16496, 32992, 49488, 63922, 127844, 255688, 383532, 511376, 767064, 1022752, 1278440, 1534128, 1789816, /*0 - 15*/}, + /* nScmColor[16][2] */ + { + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + }, + /* nScmCenterY[16] */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0 - 15*/}, + /* nScmCenterUv[16][2] */ + { + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + {0, 0, /*0 - 1*/}, + }, + /* nScmRadius[16][3] */ + { + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + }, + /* nScmSmooth[16][3] */ + { + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + }, + }, +}; + +static AX_ISP_IQ_YCPROC_PARAM_T ycproc_param_sdr = { + /* nYCprocEn */ + 0, + /* nBrightness */ + 256, + /* nContrast */ + 256, + /* nSaturation */ + 4096, + /* nHue */ + 0, +}; + +static AX_ISP_IQ_YCRT_PARAM_T ycrt_param_sdr = { + /* nYcrtEn */ + 1, + /* nSignalRangeMode */ + 1, + /* nYrtInputRange[2] */ + {256, 4095, /*0 - 1*/}, + /* nYrtOutputRange[2] */ + {256, 3840, /*0 - 1*/}, + /* nCrtInputRange[2] */ + {256, 3840, /*0 - 1*/}, + /* nCrtOutputRange[2] */ + {256, 3840, /*0 - 1*/}, + /* nClipLevelY[2] */ + {0, 4095, /*0 - 1*/}, + /* nClipLevelUV[2] */ + {-2048, 2047, /*0 - 1*/}, +}; + +static AX_ISP_IQ_DEPWL_PARAM_T depwl_param_sdr = { + /* nUserModeEn */ + 0, + /* tDePwlLut */ + { + /* nLut[513] */ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 31*/ + 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32 - 63*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 64 - 95*/ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, /* 96 - 127*/ + 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, /* 128 - 159*/ + 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, /* 160 - 191*/ + 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, /* 192 - 223*/ + 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 52, 53, 54, 55, 56, 57, 58, 59, /* 224 - 255*/ + 60, 62, 64, 66, 67, 69, 71, 73, 75, 77, 79, 81, 82, 84, 86, 88, 90, 92, 94, 96, 97, 99, 101, 103, 105, 107, 109, 111, 112, 114, 116, 118, /* 256 - 287*/ + 120, 124, 127, 131, 135, 139, 142, 146, 150, 154, 157, 161, 165, 169, 172, 176, 180, 184, 187, 191, 195, 199, 202, 206, 210, 214, 217, 221, 225, 229, 232, 236, /* 288 - 319*/ + 240, 247, 255, 262, 270, 277, 285, 292, 300, 307, 315, 322, 330, 337, 345, 352, 360, 367, 375, 382, 390, 397, 405, 412, 420, 427, 435, 442, 450, 457, 465, 472, /* 320 - 351*/ + 480, 495, 510, 525, 540, 555, 570, 585, 600, 615, 630, 645, 660, 675, 690, 705, 720, 735, 750, 765, 780, 795, 810, 825, 840, 855, 870, 885, 900, 915, 930, 945, /* 352 - 383*/ + 960, 990, 1020, 1050, 1080, 1110, 1140, 1170, 1200, 1230, 1260, 1290, 1320, 1350, 1380, 1410, 1440, 1470, 1500, 1530, 1560, 1590, 1620, 1650, 1680, 1710, 1740, 1770, 1800, 1830, 1860, 1890, /* 384 - 415*/ + 1920, 1980, 2040, 2100, 2160, 2220, 2280, 2340, 2400, 2460, 2520, 2580, 2640, 2700, 2760, 2820, 2880, 2940, 3000, 3060, 3120, 3180, 3240, 3300, 3360, 3420, 3480, 3540, 3600, 3660, 3720, 3780, /* 416 - 447*/ + 3840, 3960, 4080, 4200, 4320, 4440, 4560, 4680, 4800, 4920, 5040, 5160, 5280, 5400, 5520, 5640, 5760, 5880, 6000, 6120, 6240, 6360, 6480, 6600, 6720, 6840, 6960, 7080, 7200, 7320, 7440, 7560, /* 448 - 479*/ + 7680, 7919, 8159, 8399, 8639, 8879, 9119, 9359, 9599, 9839, 10079, 10319, 10559, 10799, 11039, 11279, 11519, 11759, 11999, 12239, 12479, 12719, 12959, 13199, 13439, 13679, 13919, 14159, 14399, 14639, 14879, 15119, /* 480 - 511*/ + 15359, /*512 - 512*/ + }, + }, +}; + +static AX_ISP_IQ_LDC_PARAM_T ldc_param_sdr = { + /* nLdcEnable */ + 0, + /* nType */ + 0, + /* tLdcV1Param */ + { + /* bAspect */ + /* 0:AX_FALSE, 1:AX_TRUE */ + AX_FALSE, + /* nXRatio */ + 0, + /* nYRatio */ + 0, + /* nXYRatio */ + 0, + /* nCenterXOffset */ + 0, + /* nCenterYOffset */ + 0, + /* nDistortionRatio */ + 0, + /* nSpreadCoef */ + 0, + }, + /* tLdcV2Param */ + { + /* nMatrix[3][3] */ + { + {0, 0, 0, /*0 - 2*/}, + {0, 0, 0, /*0 - 2*/}, + {0, 0, 1, /*0 - 2*/}, + }, + /* nDistortionCoeff[8] */ + {0, 0, 0, 0, 0, 0, 0, 0, /*0 - 7*/}, + }, +}; + +#endif ax_isp_iq_param_t g_selected_params[] = { {AX_ISP_PARAM_VERSION, &ax_isp_version_param_sdr}, - {AX_ISP_PARAM_DEPURPLE, &depurple_param_sdr}, + {AX_ISP_PARAM_SCENE, &scene_param_sdr}, + {AX_ISP_PARAM_AE, &ae_param_sdr}, + {AX_ISP_PARAM_AWB, &awb_param_sdr}, + {AX_ISP_PARAM_DPC, &dpc_param_sdr}, {AX_ISP_PARAM_BLC, &blc_param_sdr}, - {AX_ISP_PARAM_GAMMA, &gamma_param_sdr}, + {AX_ISP_PARAM_HDR, &hdr_param_sdr}, + {AX_ISP_PARAM_AINR, &ainr_param_sdr}, + {AX_ISP_PARAM_AICE, &aice_param_sdr}, + {AX_ISP_PARAM_RAW3DNR, &raw3dnr_param_sdr}, + {AX_ISP_PARAM_LSC, &lsc_param_sdr}, + {AX_ISP_PARAM_RLTM, &rltm_param_sdr}, {AX_ISP_PARAM_DEMOSAIC, &demosaic_param_sdr}, {AX_ISP_PARAM_GIC, &gic_param_sdr}, - {AX_ISP_PARAM_CSC, &csc_param_sdr}, + {AX_ISP_PARAM_DEPURPLE, &depurple_param_sdr}, {AX_ISP_PARAM_CC, &cc_param_sdr}, - {AX_ISP_PARAM_SHARPEN, &sharpen_param_sdr}, - {AX_ISP_PARAM_MDE, &mde_param_sdr}, + {AX_ISP_PARAM_3DLUT, &isp_3dlut_param_sdr}, + {AX_ISP_PARAM_GAMMA, &gamma_param_sdr}, + {AX_ISP_PARAM_DEHAZE, &dehaze_param_sdr}, + {AX_ISP_PARAM_CSC, &csc_param_sdr}, + {AX_ISP_PARAM_CA, &ca_param_sdr}, {AX_ISP_PARAM_YNR, &ynr_param_sdr}, {AX_ISP_PARAM_AYNR, &aynr_param_sdr}, {AX_ISP_PARAM_CNR, &cnr_param_sdr}, {AX_ISP_PARAM_ACNR, &acnr_param_sdr}, + {AX_ISP_PARAM_SHARPEN, &sharpen_param_sdr}, + {AX_ISP_PARAM_MDE, &mde_param_sdr}, + {AX_ISP_PARAM_CCMP, &ccmp_param_sdr}, {AX_ISP_PARAM_SCM, &scm_param_sdr}, {AX_ISP_PARAM_YCPROC, &ycproc_param_sdr}, - {AX_ISP_PARAM_CCMP, &ccmp_param_sdr}, {AX_ISP_PARAM_YCRT, &ycrt_param_sdr}, - {AX_ISP_PARAM_AINR, &ainr_param_sdr}, - {AX_ISP_PARAM_AICE, &aice_param_sdr}, - {AX_ISP_PARAM_AWB, &awb_param_sdr}, - {AX_ISP_PARAM_RLTM, &rltm_param_sdr}, - {AX_ISP_PARAM_RAW3DNR, &raw3dnr_param_sdr}, - {AX_ISP_PARAM_LSC, &lsc_param_sdr}, - {AX_ISP_PARAM_DPC, &dpc_param_sdr}, - {AX_ISP_PARAM_CA, &ca_param_sdr}, - {AX_ISP_PARAM_AE, &ae_param_sdr}, - {AX_ISP_PARAM_3DLUT, &isp_3dlut_param_sdr}, - {AX_ISP_PARAM_SCENE, &scene_param_sdr}, + {AX_ISP_PARAM_DEPWL, &depwl_param_sdr}, {AX_ISP_PARAM_NONE, AX_NULL}, }; diff --git a/msp/component/isp_proton/sensor/makebin/ax_isp_params.so b/msp/component/isp_proton/sensor/makebin/ax_isp_params.so index 9dbc6b6..8255f65 100644 Binary files a/msp/component/isp_proton/sensor/makebin/ax_isp_params.so and b/msp/component/isp_proton/sensor/makebin/ax_isp_params.so differ diff --git a/msp/component/isp_proton/sensor/makebin/ax_isp_stub.c b/msp/component/isp_proton/sensor/makebin/ax_isp_stub.c index 280db61..d66ed67 100644 --- a/msp/component/isp_proton/sensor/makebin/ax_isp_stub.c +++ b/msp/component/isp_proton/sensor/makebin/ax_isp_stub.c @@ -1,33 +1,36 @@ ax_isp_iq_param_t g_selected_params[] = { {AX_ISP_PARAM_VERSION, &ax_isp_version_param_sdr}, - {AX_ISP_PARAM_DEPURPLE, &depurple_param_sdr}, + {AX_ISP_PARAM_SCENE, &scene_param_sdr}, + {AX_ISP_PARAM_AE, &ae_param_sdr}, + {AX_ISP_PARAM_AWB, &awb_param_sdr}, + {AX_ISP_PARAM_DPC, &dpc_param_sdr}, {AX_ISP_PARAM_BLC, &blc_param_sdr}, - {AX_ISP_PARAM_GAMMA, &gamma_param_sdr}, + {AX_ISP_PARAM_HDR, &hdr_param_sdr}, + {AX_ISP_PARAM_AINR, &ainr_param_sdr}, + {AX_ISP_PARAM_AICE, &aice_param_sdr}, + {AX_ISP_PARAM_RAW3DNR, &raw3dnr_param_sdr}, + {AX_ISP_PARAM_LSC, &lsc_param_sdr}, + {AX_ISP_PARAM_RLTM, &rltm_param_sdr}, {AX_ISP_PARAM_DEMOSAIC, &demosaic_param_sdr}, {AX_ISP_PARAM_GIC, &gic_param_sdr}, - {AX_ISP_PARAM_CSC, &csc_param_sdr}, + {AX_ISP_PARAM_DEPURPLE, &depurple_param_sdr}, {AX_ISP_PARAM_CC, &cc_param_sdr}, - {AX_ISP_PARAM_SHARPEN, &sharpen_param_sdr}, - {AX_ISP_PARAM_MDE, &mde_param_sdr}, + {AX_ISP_PARAM_3DLUT, &isp_3dlut_param_sdr}, + {AX_ISP_PARAM_GAMMA, &gamma_param_sdr}, + {AX_ISP_PARAM_DEHAZE, &dehaze_param_sdr}, + {AX_ISP_PARAM_CSC, &csc_param_sdr}, + {AX_ISP_PARAM_CA, &ca_param_sdr}, {AX_ISP_PARAM_YNR, &ynr_param_sdr}, {AX_ISP_PARAM_AYNR, &aynr_param_sdr}, {AX_ISP_PARAM_CNR, &cnr_param_sdr}, {AX_ISP_PARAM_ACNR, &acnr_param_sdr}, + {AX_ISP_PARAM_SHARPEN, &sharpen_param_sdr}, + {AX_ISP_PARAM_MDE, &mde_param_sdr}, + {AX_ISP_PARAM_CCMP, &ccmp_param_sdr}, {AX_ISP_PARAM_SCM, &scm_param_sdr}, {AX_ISP_PARAM_YCPROC, &ycproc_param_sdr}, - {AX_ISP_PARAM_CCMP, &ccmp_param_sdr}, {AX_ISP_PARAM_YCRT, &ycrt_param_sdr}, - {AX_ISP_PARAM_AINR, &ainr_param_sdr}, - {AX_ISP_PARAM_AICE, &aice_param_sdr}, - {AX_ISP_PARAM_AWB, &awb_param_sdr}, - {AX_ISP_PARAM_RLTM, &rltm_param_sdr}, - {AX_ISP_PARAM_RAW3DNR, &raw3dnr_param_sdr}, - {AX_ISP_PARAM_LSC, &lsc_param_sdr}, - {AX_ISP_PARAM_DPC, &dpc_param_sdr}, - {AX_ISP_PARAM_CA, &ca_param_sdr}, - {AX_ISP_PARAM_AE, &ae_param_sdr}, - {AX_ISP_PARAM_3DLUT, &isp_3dlut_param_sdr}, - {AX_ISP_PARAM_SCENE, &scene_param_sdr}, + {AX_ISP_PARAM_DEPWL, &depwl_param_sdr}, {AX_ISP_PARAM_NONE, AX_NULL}, }; diff --git a/msp/component/isp_proton/sensor/ov_os08a20/Makefile.dynamic b/msp/component/isp_proton/sensor/ov_os08a20/Makefile.dynamic index cb48861..93109a8 100644 --- a/msp/component/isp_proton/sensor/ov_os08a20/Makefile.dynamic +++ b/msp/component/isp_proton/sensor/ov_os08a20/Makefile.dynamic @@ -59,11 +59,7 @@ DEBUG_TARGET := lib$(MOD_NAME).debug # build flags CFLAGS := -shared -fPIC -ifeq ($(debug),yes) -CFLAGS += -Werror -Wall -O0 -g -else -CFLAGS += -Werror -Wall -O2 -endif +CFLAGS += -Wall -Werror -O2 -ggdb3 CFLAGS += -Wno-unused-variable CFLAGS += -DLINUX #CFLAGS += -DSENSOR_LOG_USE_PRINTF diff --git a/msp/component/isp_proton/sensor/ov_os08a20/Makefile.static b/msp/component/isp_proton/sensor/ov_os08a20/Makefile.static index 362094f..d0c1ccf 100644 --- a/msp/component/isp_proton/sensor/ov_os08a20/Makefile.static +++ b/msp/component/isp_proton/sensor/ov_os08a20/Makefile.static @@ -61,11 +61,7 @@ STATIC_TARGET := $(LINKNAME) # build flags CFLAGS := $(STATIC_FLAG) -ifeq ($(debug),yes) -CFLAGS += -Werror -Wall -O0 -g -else -CFLAGS += -Werror -Wall -O2 -endif +CFLAGS += -Wall -Werror -O2 -ggdb3 CFLAGS += -Wno-unused-variable CFLAGS += -DLINUX #CFLAGS += -DSENSOR_LOG_USE_PRINTF diff --git a/msp/component/isp_proton/sensor/ov_os08a20/os08a20.c b/msp/component/isp_proton/sensor/ov_os08a20/os08a20.c index 6a1e47c..8d21658 100644 --- a/msp/component/isp_proton/sensor/ov_os08a20/os08a20.c +++ b/msp/component/isp_proton/sensor/ov_os08a20/os08a20.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_ctrl.c b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_ctrl.c index 28c3198..dabcb4c 100644 --- a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_ctrl.c +++ b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_ctrl.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_ctrl.h b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_ctrl.h index df74692..35eb5af 100644 --- a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_ctrl.h +++ b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_ctrl.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_params.h b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_params.h index 80144fe..04f8be4 100644 --- a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_params.h +++ b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_ae_params.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_lf.c b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_lf.c index 1f70199..258a2a6 100644 --- a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_lf.c +++ b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_lf.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_reg.c b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_reg.c index 76c186b..7fe98d8 100644 --- a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_reg.c +++ b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_reg.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_reg.h b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_reg.h index b4cfba6..5059cd5 100644 --- a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_reg.h +++ b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_reg.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_settings.h b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_settings.h index 4a1e39b..94d0402 100644 --- a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_settings.h +++ b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_settings.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_sf.c b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_sf.c index 3f894ff..e3d3c37 100644 --- a/msp/component/isp_proton/sensor/ov_os08a20/os08a20_sf.c +++ b/msp/component/isp_proton/sensor/ov_os08a20/os08a20_sf.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_adec_api.h b/msp/out/include/ax_adec_api.h index 8a79685..26c89fd 100644 --- a/msp/out/include/ax_adec_api.h +++ b/msp/out/include/ax_adec_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_aenc_api.h b/msp/out/include/ax_aenc_api.h index da0509f..44c8837 100644 --- a/msp/out/include/ax_aenc_api.h +++ b/msp/out/include/ax_aenc_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_ai_api.h b/msp/out/include/ax_ai_api.h index ce53024..f6bb3a2 100644 --- a/msp/out/include/ax_ai_api.h +++ b/msp/out/include/ax_ai_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_ao_api.h b/msp/out/include/ax_ao_api.h index 9de1774..e447988 100644 --- a/msp/out/include/ax_ao_api.h +++ b/msp/out/include/ax_ao_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_audio_process.h b/msp/out/include/ax_audio_process.h index 16409d6..41b5e81 100644 --- a/msp/out/include/ax_audio_process.h +++ b/msp/out/include/ax_audio_process.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_avs_api.h b/msp/out/include/ax_avs_api.h index b5545dd..175bd36 100644 --- a/msp/out/include/ax_avs_api.h +++ b/msp/out/include/ax_avs_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_base_type.h b/msp/out/include/ax_base_type.h index 9e2f38a..dcbbd1c 100644 --- a/msp/out/include/ax_base_type.h +++ b/msp/out/include/ax_base_type.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_buffer_tool.h b/msp/out/include/ax_buffer_tool.h index 29642da..9edf794 100644 --- a/msp/out/include/ax_buffer_tool.h +++ b/msp/out/include/ax_buffer_tool.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_cipher_api.h b/msp/out/include/ax_cipher_api.h index 78f9f42..44c373f 100644 --- a/msp/out/include/ax_cipher_api.h +++ b/msp/out/include/ax_cipher_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_codec_comm.h b/msp/out/include/ax_codec_comm.h index 377c482..c139e91 100644 --- a/msp/out/include/ax_codec_comm.h +++ b/msp/out/include/ax_codec_comm.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_comm_aio.h b/msp/out/include/ax_comm_aio.h index b2a85e5..de454a4 100644 --- a/msp/out/include/ax_comm_aio.h +++ b/msp/out/include/ax_comm_aio.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_dmadim_api.h b/msp/out/include/ax_dmadim_api.h index 2e20808..dda6106 100644 --- a/msp/out/include/ax_dmadim_api.h +++ b/msp/out/include/ax_dmadim_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor Co., Ltd. * **************************************************************************************************/ @@ -88,6 +88,11 @@ AX_S32 AX_DMADIM_Start(AX_S32 s32DmaChn, AX_S32 s32Id); AX_S32 AX_DMADIM_Waitdone(AX_S32 s32DmaChn, AX_DMADIM_XFER_STAT_T *pXferStat, AX_S32 s32Timeout); AX_S32 AX_DMADIM_Close(AX_S32 s32DmaChn); +AX_S32 AX_DMA_MemCopy(AX_U64 u64PhyDst, AX_U64 u64PhySrc, AX_U64 U64Size); +AX_S32 AX_DMA_MemSet(AX_U64 u64PhyDst, AX_U8 u8InitVal, AX_U64 U64Size); +AX_S32 AX_DMA_MemCopyXD(AX_DMADIM_DESC_XD_T tDimDesc, AX_DMADIM_XFER_MODE_E eMode); +AX_S32 AX_DMA_CheckSum(AX_U32 *u32Result, AX_U64 u64PhySrc, AX_U64 U64Size); + enum { AX_DMADIM_ERRNO_DEFAULT = 0x80, AX_DMADIM_ERRNO_ENOENT = 0x82, diff --git a/msp/out/include/ax_dmaxor_api.h b/msp/out/include/ax_dmaxor_api.h index fa67e37..026fb2e 100644 --- a/msp/out/include/ax_dmaxor_api.h +++ b/msp/out/include/ax_dmaxor_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_dsp_api.h b/msp/out/include/ax_dsp_api.h index f819d40..20b996b 100644 --- a/msp/out/include/ax_dsp_api.h +++ b/msp/out/include/ax_dsp_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #ifndef _AX_DSP_API_H_ diff --git a/msp/out/include/ax_dsp_cv_api.h b/msp/out/include/ax_dsp_cv_api.h index f2dc4c7..6d5c57c 100644 --- a/msp/out/include/ax_dsp_cv_api.h +++ b/msp/out/include/ax_dsp_cv_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #ifndef _AX_DSP_CV_API_H_ diff --git a/msp/out/include/ax_efuse_api.h b/msp/out/include/ax_efuse_api.h index 35937e1..e79dd44 100644 --- a/msp/out/include/ax_efuse_api.h +++ b/msp/out/include/ax_efuse_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_engine_api.h b/msp/out/include/ax_engine_api.h index 08928ad..e937e66 100644 --- a/msp/out/include/ax_engine_api.h +++ b/msp/out/include/ax_engine_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor Co., Ltd. * **************************************************************************************************/ @@ -31,12 +31,17 @@ DLLEXPORT AX_S32 AX_ENGINE_CreateHandleV2(AX_ENGINE_HANDLE* pHandle, const AX_VO DLLEXPORT AX_S32 AX_ENGINE_DestroyHandle(AX_ENGINE_HANDLE nHandle); DLLEXPORT AX_S32 AX_ENGINE_GetIOInfo(AX_ENGINE_HANDLE nHandle, AX_ENGINE_IO_INFO_T** pIO); +DLLEXPORT AX_S32 AX_ENGINE_GetGroupIOInfoCount(AX_ENGINE_HANDLE nHandle, AX_U32* pCount); +DLLEXPORT AX_S32 AX_ENGINE_GetGroupIOInfo(AX_ENGINE_HANDLE nHandle, AX_U32 nIndex, AX_ENGINE_IO_INFO_T** pIO); + +DLLEXPORT AX_S32 AX_ENGINE_GetHandleModelType(AX_ENGINE_HANDLE nHandle, AX_ENGINE_MODEL_TYPE_T* pModelType); DLLEXPORT AX_S32 AX_ENGINE_CreateContext(AX_ENGINE_HANDLE handle); DLLEXPORT AX_S32 AX_ENGINE_CreateContextV2(AX_ENGINE_HANDLE nHandle, AX_ENGINE_CONTEXT_T* pContext); DLLEXPORT AX_S32 AX_ENGINE_RunSync(AX_ENGINE_HANDLE handle, AX_ENGINE_IO_T* pIO); DLLEXPORT AX_S32 AX_ENGINE_RunSyncV2(AX_ENGINE_HANDLE handle, AX_ENGINE_CONTEXT_T context, AX_ENGINE_IO_T* pIO); +DLLEXPORT AX_S32 AX_ENGINE_RunGroupIOSync(AX_ENGINE_HANDLE handle, AX_ENGINE_CONTEXT_T context, AX_U32 nIndex, AX_ENGINE_IO_T* pIO); DLLEXPORT AX_S32 AX_ENGINE_SetAffinity(AX_ENGINE_HANDLE nHandle, AX_ENGINE_NPU_SET_T nNpuSet); DLLEXPORT AX_S32 AX_ENGINE_GetAffinity(AX_ENGINE_HANDLE nHandle, AX_ENGINE_NPU_SET_T* pNpuSet); diff --git a/msp/out/include/ax_engine_type.h b/msp/out/include/ax_engine_type.h index 73d51ca..8ff4bf5 100644 --- a/msp/out/include/ax_engine_type.h +++ b/msp/out/include/ax_engine_type.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor Co., Ltd. * **************************************************************************************************/ @@ -95,7 +95,8 @@ typedef enum { AX_ENGINE_VIRTUAL_NPU_DISABLE = 0, // virtual_npu disable AX_ENGINE_VIRTUAL_NPU_STD = 1, AX_ENGINE_VIRTUAL_NPU_BIG_LITTLE = 2, - AX_ENGINE_VIRTUAL_NPU_BUTT = 3 + AX_ENGINE_VIRTUAL_NPU_LITTLE_BIG = 3, + AX_ENGINE_VIRTUAL_NPU_BUTT = 4, } AX_ENGINE_NPU_MODE_T; typedef enum { @@ -165,11 +166,11 @@ typedef struct _AX_ENGINE_IO_INFO_T typedef struct _AX_ENGINE_IO_BUFFER_T { - AX_ADDR phyAddr; + AX_U64 phyAddr; AX_VOID *pVirAddr; AX_U32 nSize; // total size of memory /*! - * pStride holds the number of elements in stride of each dimension + * pStride holds the bytes of each dimension * set pStride to NULL to disable stride function * * `nStrideSize` should be equal to `nShapeSize` diff --git a/msp/out/include/ax_global_type.h b/msp/out/include/ax_global_type.h index 4041a63..56bd1cb 100644 --- a/msp/out/include/ax_global_type.h +++ b/msp/out/include/ax_global_type.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -14,7 +14,7 @@ #define DEF_ALL_MOD_GRP_MAX (164) #define DEF_ALL_MOD_CHN_MAX (128) -#define AX_LINK_DEST_MAXNUM (4) +#define AX_LINK_DEST_MAXNUM (6) #define AX_MAX_COLOR_COMPONENT (3) /* VENC support Y/U/V three planes come from external input */ #define AX_MAX_COMPRESS_LOSSY_LEVEL (10) #define AX_INVALID_ID (-1U) @@ -503,6 +503,8 @@ typedef enum { AX_ERR_UNKNOWN = 0x29, /* unexpected failure, please contact manufacturer support */ /*reserved*/ + AX_ERR_OS_FAIL = 0x30, /* os failure, please contact manufacturer support */ + AX_ERR_BUTT = 0x7F, /* maxium code, private error code of all modules ** must be greater than it */ } AX_ERR_CODE_E; diff --git a/msp/out/include/ax_isp_3a_api.h b/msp/out/include/ax_isp_3a_api.h index ed6a52d..770bd76 100644 --- a/msp/out/include/ax_isp_3a_api.h +++ b/msp/out/include/ax_isp_3a_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_isp_3a_plus.h b/msp/out/include/ax_isp_3a_plus.h index df550ea..745956c 100644 --- a/msp/out/include/ax_isp_3a_plus.h +++ b/msp/out/include/ax_isp_3a_plus.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_isp_3a_struct.h b/msp/out/include/ax_isp_3a_struct.h index 2c30d65..e061278 100644 --- a/msp/out/include/ax_isp_3a_struct.h +++ b/msp/out/include/ax_isp_3a_struct.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_isp_api.h b/msp/out/include/ax_isp_api.h index 349875d..f174c80 100644 --- a/msp/out/include/ax_isp_api.h +++ b/msp/out/include/ax_isp_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_isp_common.h b/msp/out/include/ax_isp_common.h index a47fca8..aa13cd6 100644 --- a/msp/out/include/ax_isp_common.h +++ b/msp/out/include/ax_isp_common.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_isp_error_code.h b/msp/out/include/ax_isp_error_code.h index 1b17847..7f874c2 100644 --- a/msp/out/include/ax_isp_error_code.h +++ b/msp/out/include/ax_isp_error_code.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_isp_iq_api.h b/msp/out/include/ax_isp_iq_api.h index 4a0c81c..cb4b7e6 100644 --- a/msp/out/include/ax_isp_iq_api.h +++ b/msp/out/include/ax_isp_iq_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_isp_version.h b/msp/out/include/ax_isp_version.h index 86ae057..fd1d5ee 100644 --- a/msp/out/include/ax_isp_version.h +++ b/msp/out/include/ax_isp_version.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_ive_api.h b/msp/out/include/ax_ive_api.h index ae4264c..f2d016e 100644 --- a/msp/out/include/ax_ive_api.h +++ b/msp/out/include/ax_ive_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -552,43 +552,56 @@ AX_S32 AX_IVE_CropResize2ForSplitYUV(AX_IVE_HANDLE *pIveHandle, AX_IVE_SRC_IMAGE AX_IVE_CROP_IMAGE_CTRL_T *pstCropResize2Ctrl, AX_IVE_ENGINE_E enEngine, AX_BOOL bInstant); /***************************************************************************** -* Prototype : AX_IVE_MAU_CreateMatMulHandle -* Description : Create matrix mul handle(for MAU or NPU engine). +* Prototype : AX_IVE_MAU_MatMul +* Description : Calculate matrix mul using MAU. +* Parameters : AX_IVE_HANDLE *pIveHandle Reserved. +* AX_IVE_MAU_MATMUL_INPUT_T *pstSrc Input source. +* AX_IVE_MAU_MATMUL_OUTPUT_T *pastDst Output result. +* AX_IVE_MAU_MATMUL_CTRL_T *pstMatMulCtrl Control parameter. +* AX_IVE_ENGINE_E enEngine Hardware engine choise (Reserved). +* AX_BOOL bInstant Reserved. +* Return Value : AX_SUCCESS: Success;Error codes: Failure. +* Spec : +* +*****************************************************************************/ +AX_S32 AX_IVE_MAU_MatMul(AX_IVE_HANDLE *pIveHandle, AX_IVE_MAU_MATMUL_INPUT_T *pstSrc, AX_IVE_MAU_MATMUL_OUTPUT_T *pstDst, + AX_IVE_MAU_MATMUL_CTRL_T *pstMatMulCtrl, AX_IVE_ENGINE_E enEngine, AX_BOOL bInstant); + +/***************************************************************************** +* Prototype : AX_IVE_NPU_CreateMatMulHandle +* Description : Create matrix mul handle for NPU engine. * Parameters : AX_IVE_MATMUL_HANDLE *pHandle Return MatMul handle. -* AX_IVE_NPU_MATMUL_CTRL_T *pstMatMulCtrl Control parameter(only for NPU engine). -* AX_IVE_ENGINE_E enEngine Hardware engine choise. +* AX_IVE_NPU_MATMUL_CTRL_T *pstMatMulCtrl Control parameter. * Return Value : AX_SUCCESS: Success;Error codes: Failure. * Spec : * *****************************************************************************/ -AX_S32 AX_IVE_MAU_CreateMatMulHandle(AX_IVE_MATMUL_HANDLE *pHandle, AX_IVE_NPU_MATMUL_CTRL_T *pstMatMulCtrl, AX_IVE_ENGINE_E enEngine); +AX_S32 AX_IVE_NPU_CreateMatMulHandle(AX_IVE_MATMUL_HANDLE *pHandle, AX_IVE_NPU_MATMUL_CTRL_T *pstMatMulCtrl); /***************************************************************************** -* Prototype : AX_IVE_MAU_DestroyMatMulHandle(used in pairs with AX_IVE_MAU_CreateMatMulHandle) -* Description : Destroy matrix mul handle(for MAU or NPU engine). -* Parameters : AX_IVE_NPU_MATMUL_HANDLE *pHandle Input MatMul handle created. -* AX_IVE_ENGINE_E enEngine Hardware engine choise. +* Prototype : AX_IVE_NPU_DestroyMatMulHandle(used in pairs with AX_IVE_NPU_CreateMatMulHandle) +* Description : Destroy matrix mul handle for NPU engine. +* Parameters : AX_IVE_MATMUL_HANDLE *pHandle Input MatMul handle created. * Return Value : AX_SUCCESS: Success;Error codes: Failure. * Spec : * *****************************************************************************/ -AX_S32 AX_IVE_MAU_DestroyMatMulHandle(AX_IVE_MATMUL_HANDLE *pHandle, AX_IVE_ENGINE_E enEngine); +AX_S32 AX_IVE_NPU_DestroyMatMulHandle(AX_IVE_MATMUL_HANDLE *pHandle); /***************************************************************************** -* Prototype : AX_IVE_MAU_MatMul -* Description : Calculate matrix mul using MAU or NPU. +* Prototype : AX_IVE_NPU_MatMul +* Description : Calculate matrix mul using NPU. * Parameters : AX_IVE_MATMUL_HANDLE hHandle Handle for MatMul. * AX_IVE_MAU_MATMUL_INPUT_T *pstSrc Input source. * AX_IVE_MAU_MATMUL_OUTPUT_T *pastDst Output result. -* AX_IVE_MAU_MATMUL_CTRL_T *pstMatMulCtrl Control parameter(Only for MAU engine, NPU engine sets parameter when create handle). -* AX_IVE_ENGINE_E enEngine Hardware engine choise. -* AX_BOOL bInstant Reserved +* AX_IVE_ENGINE_E enEngine Hardware engine choise (Reserved). +* AX_BOOL bInstant Reserved. * Return Value : AX_SUCCESS: Success;Error codes: Failure. * Spec : * *****************************************************************************/ -AX_S32 AX_IVE_MAU_MatMul(AX_IVE_MATMUL_HANDLE hHandle, AX_IVE_MAU_MATMUL_INPUT_T *pstSrc, AX_IVE_MAU_MATMUL_OUTPUT_T *pstDst, - AX_IVE_MAU_MATMUL_CTRL_T *pstMatMulCtrl, AX_IVE_ENGINE_E enEngine, AX_BOOL bInstant); +AX_S32 AX_IVE_NPU_MatMul(AX_IVE_MATMUL_HANDLE hHandle, AX_IVE_MAU_MATMUL_INPUT_T *pstSrc, AX_IVE_MAU_MATMUL_OUTPUT_T *pstDst, + AX_IVE_ENGINE_E enEngine, AX_BOOL bInstant); #ifdef __cplusplus } diff --git a/msp/out/include/ax_ive_type.h b/msp/out/include/ax_ive_type.h index 669ec24..f12ef11 100644 --- a/msp/out/include/ax_ive_type.h +++ b/msp/out/include/ax_ive_type.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_ives_api.h b/msp/out/include/ax_ives_api.h index ff5cbe0..76cae1d 100644 --- a/msp/out/include/ax_ives_api.h +++ b/msp/out/include/ax_ives_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_ivps_api.h b/msp/out/include/ax_ivps_api.h index 81721f4..06e49c5 100644 --- a/msp/out/include/ax_ivps_api.h +++ b/msp/out/include/ax_ivps_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -152,6 +152,17 @@ extern "C" AX_U32 nFRC; /* Reserved */ } AX_IVPS_CHN_ATTR_T; + typedef struct + { + /* Range: [0, 100] */ + AX_U64 TDP0_duty_cycle; + AX_U64 TDP1_duty_cycle; + AX_U64 GDC_duty_cycle; + AX_U64 VPP_duty_cycle; + AX_U64 VGP_duty_cycle; + AX_U64 VDSP_duty_cycle; + } AX_IVPS_DUTY_CYCLE_ATTR_T; + AX_S32 AX_IVPS_Init(AX_VOID); AX_S32 AX_IVPS_Deinit(AX_VOID); AX_S32 AX_IVPS_CreateGrp(IVPS_GRP IvpsGrp, const AX_IVPS_GRP_ATTR_T *ptGrpAttr); @@ -193,12 +204,13 @@ extern "C" AX_S32 AX_IVPS_DisableBackupFrame(IVPS_GRP IvpsGrp); AX_S32 AX_IVPS_ResetGrp(IVPS_GRP IvpsGrp); + AX_S32 AX_IVPS_GetEngineDutyCycle(AX_IVPS_DUTY_CYCLE_ATTR_T *ptDutyCycle); /***************************************************************************************************************/ /* REGION */ /***************************************************************************************************************/ typedef AX_S32 IVPS_RGN_HANDLE; -#define AX_IVPS_MAX_RGN_HANDLE_NUM (64) +#define AX_IVPS_MAX_RGN_HANDLE_NUM (128) #define AX_IVPS_INVALID_REGION_HANDLE (IVPS_RGN_HANDLE)(-1) #define AX_IVPS_REGION_MAX_DISP_NUM (32) @@ -243,14 +255,8 @@ extern "C" IVPS_RGB nColor; /* RW; range: [0, 0xffffff]; color RGB888; 0xRRGGBB */ AX_U8 nAlpha; /* RW; range: [0, 255]; 0: transparent, 255: opaque*/ AX_BOOL bSolid; /* if AX_TRUE, fill the rect with the nColor */ - /* - The style of rectangle is like below - [ ] - - [ ] - if bCornerRect is AX_TRUE, then bSolid is always AX_FALSE - */ - AX_BOOL bCornerRect; + + AX_IVPS_CORNER_RECT_ATTR_T tCornerRect; } AX_IVPS_RGN_POLYGON_T; typedef struct @@ -290,6 +296,7 @@ extern "C" AX_U32 nColor; AX_BOOL bSolid; /* if AX_TRUE, fill the rect with the nColor */ AX_BOOL bAbsCoo; /* is Absolute Coordinate */ + AX_IVPS_CORNER_RECT_ATTR_T tCornerRect; } AX_IVPS_GDI_ATTR_T; typedef struct @@ -361,6 +368,9 @@ extern "C" const AX_IVPS_ASPECT_RATIO_T *ptAspectRatio); AX_S32 AX_IVPS_CscVpp(const AX_VIDEO_FRAME_T *ptSrc, AX_VIDEO_FRAME_T *ptDst); AX_S32 AX_IVPS_DrawMosaicVpp(const AX_VIDEO_FRAME_T *ptSrc, AX_IVPS_RGN_MOSAIC_T tMosaic[], AX_U32 nNum); + + AX_S32 AX_IVPS_SetScaleCoefLevelVpp(const AX_IVPS_SCALE_RANGE_T *ScaleRange, const AX_IVPS_SCALE_COEF_LEVEL_T *CoefLevel); + AX_S32 AX_IVPS_GetScaleCoefLevelVpp(const AX_IVPS_SCALE_RANGE_T *ScaleRange, AX_IVPS_SCALE_COEF_LEVEL_T *CoefLevel); /***************************************************************************************************************/ /* VGP */ /***************************************************************************************************************/ @@ -378,6 +388,8 @@ extern "C" AX_S32 AX_IVPS_AlphaBlendingV3Vgp(const AX_VIDEO_FRAME_T *ptSrc, const AX_OVERLAY_T *ptOverlay, AX_VIDEO_FRAME_T *ptDst); AX_S32 AX_IVPS_DrawMosaicVgp(const AX_VIDEO_FRAME_T *ptSrc, AX_IVPS_RGN_MOSAIC_T tMosaic[], AX_U32 nNum); + AX_S32 AX_IVPS_SetScaleCoefLevelVgp(const AX_IVPS_SCALE_RANGE_T *ScaleRange, const AX_IVPS_SCALE_COEF_LEVEL_T *CoefLevel); + AX_S32 AX_IVPS_GetScaleCoefLevelVgp(const AX_IVPS_SCALE_RANGE_T *ScaleRange, AX_IVPS_SCALE_COEF_LEVEL_T *CoefLevel); /***************************************************************************************************************/ /* CPU */ /***************************************************************************************************************/ @@ -440,7 +452,7 @@ extern "C" /***************************************************************************** * Prototype : AX_IVPS_FisheyePointQueryDst2Src - * Description : This API is used to find the source image coordinate point according to the fisheye correction output image coordinate point. + * Description : This API is used to find a point of the source image according to a point of output image. * Parameters : ptSrcPoint The coordinate points found on the fisheye original map. * ptDstPoint Coordinate points on fisheye correction map that need to find mapping relationship. * nInputW Width of input frame. @@ -450,7 +462,23 @@ extern "C" * Return Value : 0: Success; Error codes: Failure. * Spec : *****************************************************************************/ - AX_S32 AX_IVPS_FisheyePointQueryDst2Src(AX_IVPS_POINT_T *ptSrcPoint, const AX_IVPS_POINT_T *ptDstPoint, + AX_S32 AX_IVPS_FisheyePointQueryDst2Src(AX_IVPS_POINT_NICE_T *ptSrcPoint, const AX_IVPS_POINT_NICE_T *ptDstPoint, + AX_U16 nInputW, AX_U16 nInputH, AX_U8 nRgnIdx, + const AX_IVPS_FISHEYE_ATTR_T *ptFisheyeAttr); + + /***************************************************************************** + * Prototype : AX_IVPS_FisheyePointQuerySrc2Dst + * Description : This API is used to find a point of the output image according to a point of source image. + * Parameters : ptDstPoint Coordinate points on fisheye correction map that need to find mapping relationship. + * ptSrcPoint The coordinate points found on the fisheye original map. + * nInputW Width of input frame. + * nInputH Height of input frame. + * nRgnIdx Fisheye region index. + * ptFisheyeAttr Fisheye correction Attribute. + * Return Value : 0: Success; Error codes: Failure. + * Spec : + *****************************************************************************/ + AX_S32 AX_IVPS_FisheyePointQuerySrc2Dst(AX_IVPS_POINT_NICE_T *ptDstPoint, const AX_IVPS_POINT_NICE_T *ptSrcPoint, AX_U16 nInputW, AX_U16 nInputH, AX_U8 nRgnIdx, const AX_IVPS_FISHEYE_ATTR_T *ptFisheyeAttr); #ifdef __cplusplus diff --git a/msp/out/include/ax_ivps_type.h b/msp/out/include/ax_ivps_type.h index a6a9a1d..764f4b8 100644 --- a/msp/out/include/ax_ivps_type.h +++ b/msp/out/include/ax_ivps_type.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -129,6 +129,12 @@ typedef struct AX_S16 nY; } AX_IVPS_POINT_T; +typedef struct +{ + AX_F32 fX; + AX_F32 fY; +} AX_IVPS_POINT_NICE_T; + typedef struct { AX_U16 nW; @@ -263,6 +269,8 @@ typedef struct AX_S16 nFanStrength; /* RW; range: [-760, 760]; strength coefficient of fan correction */ AX_IVPS_FISHEYE_MOUNT_MODE_E eMountMode; /* RW; range: [0, 2]; gdc mount mode */ AX_U8 nRgnNum; /* RW; range: [1, 9]; gdc correction region number */ + AX_BOOL bRgnUpdate; /* RW; range: [0, 1]; wether update only one of gdc correction regions */ + AX_U8 nRgnUpdateIdx; /* RW; range: [0, 8]; gdc correction region update index */ AX_BOOL bRoiXY; /* RW; range: [0, 1]; 0: Polar coordinates with nPan and nTilt; 1: Planar coordinates with nCenterX and nCenterY */ AX_IVPS_FISHEYE_RGN_ATTR_T tFisheyeRgnAttr[AX_IVPS_FISHEYE_MAX_RGN_NUM]; /* RW; attribution of gdc correction region */ } AX_IVPS_FISHEYE_ATTR_T; @@ -296,7 +304,7 @@ typedef struct AX_U16 nDstStride; /* RW; range: [128, 8192]; 128 pixels aligned; format of output picture */ AX_U16 nDstWidth; /* RW; range: [2, 8192]; 2 pixels aligned; width of output picture */ AX_U16 nDstHeight; /* RW; range: [2, 8192]; 2 pixels aligned; height of output picture */ - AX_IMG_FORMAT_E eDstFormat; /* RW; format of output picture; only support NV12 */ + AX_IMG_FORMAT_E eDstFormat; /* RW; format of output picture; only support NV12/NV21 */ } AX_IVPS_GDC_ATTR_T; @@ -434,4 +442,57 @@ typedef struct { AX_IVPS_RECT_T tCropRect; } AX_IVPS_CROP_INFO_T; +/* + * The style of rectangle is like below + * [ ] + * + * [ ] + * if bEnable is AX_TRUE, then bSolid is always AX_FALSE + */ +typedef struct +{ + AX_BOOL bEnable; + AX_U32 nHorLength; + AX_U32 nVerLength; +} AX_IVPS_CORNER_RECT_ATTR_T; + +typedef enum +{ + AX_IVPS_SCALE_RANGE_0 = 0, /* scale range < 8/64 */ + AX_IVPS_SCALE_RANGE_1, /* scale range >= 8/64 */ + AX_IVPS_SCALE_RANGE_2, /* scale range >= 16/64 */ + AX_IVPS_SCALE_RANGE_3, /* scale range >= 24/64 */ + AX_IVPS_SCALE_RANGE_4, /* scale range >= 32/64 */ + AX_IVPS_SCALE_RANGE_5, /* scale range >= 40/64 */ + AX_IVPS_SCALE_RANGE_6, /* scale range >= 48/64 */ + AX_IVPS_SCALE_RANGE_7, /* scale range >= 56/64 */ + AX_IVPS_SCALE_RANGE_8, /* scale range > 1 */ + AX_IVPS_SCALE_RANGE_BUTT +} AX_IVPS_SCALE_RANGE_TYPE_E; + +typedef struct { + AX_IVPS_SCALE_RANGE_TYPE_E eHorScaleRange; + AX_IVPS_SCALE_RANGE_TYPE_E eVerScaleRange; /* Reserved */ +} AX_IVPS_SCALE_RANGE_T; + +typedef enum +{ + AX_IVPS_COEF_LEVEL_0 = 0, /* coefficient level 0 */ + AX_IVPS_COEF_LEVEL_1, /* coefficient level 1 */ + AX_IVPS_COEF_LEVEL_2, /* coefficient level 2 */ + AX_IVPS_COEF_LEVEL_3, /* coefficient level 3 */ + AX_IVPS_COEF_LEVEL_4, /* coefficient level 4 */ + AX_IVPS_COEF_LEVEL_5, /* coefficient level 5 */ + AX_IVPS_COEF_LEVEL_6, /* coefficient level 6 */ + AX_IVPS_COEF_LEVEL_BUTT, +} AX_IVPS_COEF_LEVEL_E; + + +typedef struct { + AX_IVPS_COEF_LEVEL_E eHorLuma; /* horizontal luminance coefficient level */ + AX_IVPS_COEF_LEVEL_E eHorChroma; /* horizontal chrominance coefficient level Reserved */ + AX_IVPS_COEF_LEVEL_E eVerLuma; /* vertical luminance coefficient level Reserved */ + AX_IVPS_COEF_LEVEL_E eVerChroma; /* vertical chrominance coefficient level Reserved */ +} AX_IVPS_SCALE_COEF_LEVEL_T; + #endif diff --git a/msp/out/include/ax_mipi_rx_api.h b/msp/out/include/ax_mipi_rx_api.h index 0dcf27c..4f2ffcd 100644 --- a/msp/out/include/ax_mipi_rx_api.h +++ b/msp/out/include/ax_mipi_rx_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_mipi_tx_api.h b/msp/out/include/ax_mipi_tx_api.h index 9b3e54f..6278558 100644 --- a/msp/out/include/ax_mipi_tx_api.h +++ b/msp/out/include/ax_mipi_tx_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_nt_ctrl_api.h b/msp/out/include/ax_nt_ctrl_api.h index 48c2170..43999c8 100644 --- a/msp/out/include/ax_nt_ctrl_api.h +++ b/msp/out/include/ax_nt_ctrl_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_nt_stream_api.h b/msp/out/include/ax_nt_stream_api.h index 9debbf6..bbfd68a 100644 --- a/msp/out/include/ax_nt_stream_api.h +++ b/msp/out/include/ax_nt_stream_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_pcie_msg_api.h b/msp/out/include/ax_pcie_msg_api.h index d233035..eaca558 100644 --- a/msp/out/include/ax_pcie_msg_api.h +++ b/msp/out/include/ax_pcie_msg_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_pool_type.h b/msp/out/include/ax_pool_type.h index d8012e8..0ea8b22 100644 --- a/msp/out/include/ax_pool_type.h +++ b/msp/out/include/ax_pool_type.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -37,6 +37,8 @@ #define AX_ERR_POOL_MMAP_FAIL AX_DEF_ERR(AX_ID_SYS, 0x01, 0x80) //0x800B0180 #define AX_ERR_POOL_MUNMAP_FAIL AX_DEF_ERR(AX_ID_SYS, 0x01, 0x81) //0x800B0181 #define AX_ERR_POOL_BLKFREE_FAIL AX_DEF_ERR(AX_ID_SYS, 0x01, 0x82) //0x800B0182 +#define AX_ERR_POOL_COPY_TO_USER AX_DEF_ERR(AX_ID_SYS, 0x01, 0x83) //0x800B0183 +#define AX_ERR_POOL_COPY_FROM_USER AX_DEF_ERR(AX_ID_SYS, 0x01, 0x84) //0x800B0184 typedef AX_U32 AX_POOL; diff --git a/msp/out/include/ax_sensor_struct.h b/msp/out/include/ax_sensor_struct.h index 58a6d57..ea81cb9 100644 --- a/msp/out/include/ax_sensor_struct.h +++ b/msp/out/include/ax_sensor_struct.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_skel_api.h b/msp/out/include/ax_skel_api.h index fdad855..87b8030 100644 --- a/msp/out/include/ax_skel_api.h +++ b/msp/out/include/ax_skel_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_skel_type.h b/msp/out/include/ax_skel_type.h index fca32ba..30e7be1 100644 --- a/msp/out/include/ax_skel_type.h +++ b/msp/out/include/ax_skel_type.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_sys_api.h b/msp/out/include/ax_sys_api.h index 29c69fb..eeeeb97 100644 --- a/msp/out/include/ax_sys_api.h +++ b/msp/out/include/ax_sys_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -51,6 +51,8 @@ typedef struct { #define AX_ERR_PTS_NOTREADY AX_DEF_ERR(AX_ID_SYS, 0x02, AX_ERR_SYS_NOTREADY) //0x800B0210 #define AX_ERR_PTS_NOT_PERM AX_DEF_ERR(AX_ID_SYS, 0x02, AX_ERR_NOT_PERM) //0x800B0215 #define AX_ERR_PTS_UNKNOWN AX_DEF_ERR(AX_ID_SYS, 0x02, AX_ERR_UNKNOWN) //0x800B0229 +#define AX_ERR_PTS_COPY_TO_USER AX_DEF_ERR(AX_ID_SYS, 0x02, 0x82) //0x800B0282 +#define AX_ERR_PTS_COPY_FROM_USER AX_DEF_ERR(AX_ID_SYS, 0x02, 0x83) //0x800B0283 #define AX_ERR_LINK_ILLEGAL_PARAM AX_DEF_ERR(AX_ID_SYS, 0x03, AX_ERR_ILLEGAL_PARAM) //0x800B030A #define AX_ERR_LINK_NULL_PTR AX_DEF_ERR(AX_ID_SYS, 0x03, AX_ERR_NULL_PTR) //0x800B030B @@ -61,6 +63,8 @@ typedef struct { #define AX_ERR_LINK_UNKNOWN AX_DEF_ERR(AX_ID_SYS, 0x03, AX_ERR_UNKNOWN) //0x800B0329 #define AX_ERR_LINK_TABLE_FULL AX_DEF_ERR(AX_ID_SYS, 0x03, 0x80) //0x800B0380 #define AX_ERR_LINK_TABLE_EMPTY AX_DEF_ERR(AX_ID_SYS, 0x03, 0x81) //0x800B0381 +#define AX_ERR_LINK_COPY_TO_USER AX_DEF_ERR(AX_ID_SYS, 0x03, 0x82) //0x800B0382 +#define AX_ERR_LINK_COPY_FROM_USER AX_DEF_ERR(AX_ID_SYS, 0x03, 0x83) //0x800B0383 diff --git a/msp/out/include/ax_sys_log.h b/msp/out/include/ax_sys_log.h index aca7e2c..21c093b 100644 --- a/msp/out/include/ax_sys_log.h +++ b/msp/out/include/ax_sys_log.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_vdec_api.h b/msp/out/include/ax_vdec_api.h index e464122..af19b9a 100644 --- a/msp/out/include/ax_vdec_api.h +++ b/msp/out/include/ax_vdec_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -25,6 +25,9 @@ AX_S32 AX_VDEC_Deinit (AX_VOID); AX_S32 AX_VDEC_SetModParam (const AX_VDEC_MOD_PARAM_T* pstModParam); AX_S32 AX_VDEC_GetModParam (AX_VDEC_MOD_PARAM_T* pstModParam); +AX_S32 AX_VDEC_ExtractStreamHeaderInfo(const AX_VDEC_STREAM_T *pstStreamBuf, AX_PAYLOAD_TYPE_E enVideoType, + AX_VDEC_BITSTREAM_INFO_T *pstBitStreamInfo); + AX_S32 AX_VDEC_CreateGrp (AX_VDEC_GRP VdGrp, const AX_VDEC_GRP_ATTR_T *pstGrpAttr); AX_S32 AX_VDEC_DestroyGrp (AX_VDEC_GRP VdGrp); diff --git a/msp/out/include/ax_vdec_type.h b/msp/out/include/ax_vdec_type.h index d293013..917fdb1 100644 --- a/msp/out/include/ax_vdec_type.h +++ b/msp/out/include/ax_vdec_type.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -80,6 +80,12 @@ typedef enum axVDEC_ENABLE_MOD_E { typedef struct axVDEC_MOD_ATTR_T { AX_U32 u32MaxGroupCount; AX_VDEC_ENABLE_MOD_E enDecModule; + /* specifies the JDEC mapping virtual channel number. + * 0: do not map chn 0. + * 1: chn0 is mapped to chn1. + * 2: chn0 is mapped to chn2. + * others: illegal param. */ + AX_VDEC_CHN VdecVirtChn; } AX_VDEC_MOD_ATTR_T; typedef struct axVDEC_MOD_PARAM_T { @@ -141,6 +147,7 @@ typedef struct axVDEC_STREAM_T { AX_U8 ATTRIBUTE *pu8Addr; /* W; stream physical address */ AX_U64 u64PhyAddr; + AX_U64 u64UserData; } AX_VDEC_STREAM_T; @@ -348,6 +355,13 @@ typedef struct { AX_BOOL bEnable[AX_DEC_MAX_CHN_NUM]; } AX_VDEC_USRPIC_T; +typedef struct axVDEC_BITSTREAM_INFO_T { + AX_U32 u32Width; + AX_U32 u32Height; + AX_U32 u32RefFramesNum; + AX_U32 u32BitDepthY; + AX_U32 u32BitDepthC; +} AX_VDEC_BITSTREAM_INFO_T; /* invlalid channel ID */ #define AX_ERR_VDEC_INVALID_GRPID AX_DEF_ERR(AX_ID_VDEC, AX_ID_VDEC_NULL, AX_ERR_INVALID_GRPID) @@ -399,6 +413,9 @@ typedef struct { /* for vdec unknown error */ #define AX_ERR_VDEC_UNKNOWN AX_DEF_ERR(AX_ID_VDEC, AX_ID_VDEC_NULL, AX_ERR_UNKNOWN) +/* for vdec os failed */ +#define AX_ERR_VDEC_OS AX_DEF_ERR(AX_ID_VDEC, AX_ID_VDEC_NULL, AX_ERR_OS_FAIL) + /* run error */ #define AX_ERR_VDEC_RUN_ERROR AX_DEF_ERR(AX_ID_VDEC, AX_ID_VDEC_NULL, 0x80) /* stream error */ diff --git a/msp/out/include/ax_venc_api.h b/msp/out/include/ax_venc_api.h index 2f268d9..29e644b 100644 --- a/msp/out/include/ax_venc_api.h +++ b/msp/out/include/ax_venc_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_venc_comm.h b/msp/out/include/ax_venc_comm.h index 17013fe..82d4350 100644 --- a/msp/out/include/ax_venc_comm.h +++ b/msp/out/include/ax_venc_comm.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -52,12 +52,19 @@ extern "C" { #define MAX_VENC_USER_DATA_SIZE (2048) #define MAX_JENC_USER_DATA_SIZE (4096) -/* define for AX_VENC_ATTR_T::flag */ -#define VENC_CHN_ENABLE_MULTICORE (0x1) - typedef AX_S32 VENC_CHN; typedef AX_S32 VENC_GRP; +/* define for AX_VENC_ATTR_T::flag */ +typedef enum +{ + AX_VENC_FLAGS_NONE = 0, + AX_VENC_CHN_ENABLE_MULTICORE = (1 << 0), + AX_VENC_STREAM_CACHED = (1 << 1), + AX_VENC_HEADER_ATTACH_TO_PB = (1 << 2), + AX_VENC_FLAGS_BUTT +} AX_VENC_CHN_FLAGS_E; + typedef enum { AX_VENC_LINK_MODE = 0, @@ -890,7 +897,6 @@ typedef struct axVENC_SLICE_SPLIT_T #define AX_ERR_VENC_UNEXIST AX_DEF_ERR(AX_ID_VENC, AX_ID_VENC_COMMON, AX_ERR_UNEXIST) #define AX_ERR_VENC_NOT_PERMIT AX_DEF_ERR(AX_ID_VENC, AX_ID_VENC_COMMON, AX_ERR_NOT_PERM) -#define AX_ERR_VENC_UNKNOWN AX_DEF_ERR(AX_ID_VENC, AX_ID_VENC_COMMON, AX_ERR_UNKNOWN) #define AX_ERR_VENC_TIMEOUT AX_DEF_ERR(AX_ID_VENC, AX_ID_VENC_COMMON, AX_ERR_TIMED_OUT) #define AX_ERR_VENC_FLOW_END AX_DEF_ERR(AX_ID_VENC, AX_ID_VENC_COMMON, AX_ERR_FLOW_END) diff --git a/msp/out/include/ax_venc_rc.h b/msp/out/include/ax_venc_rc.h index cb7e6c5..dee8b90 100644 --- a/msp/out/include/ax_venc_rc.h +++ b/msp/out/include/ax_venc_rc.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -65,6 +65,16 @@ extern "C" { #define VENC_MAX_QP_DELTA_LOW (0) #define VENC_MAX_QP_DELTA_HIGH (4) +#define VENC_MIN_CHANGE_POS (20) +#define VENC_MAX_CHANGE_POS (100) +#define VENC_DEF_CHANGE_POS (90) + +#define VENC_MIN_STILL_PERCENT (10) +#define VENC_MAX_STILL_PERCENT (100) +#define VENC_DEF_STILL_PERCENT (25) + +#define VENC_MAX_STILL_QP_DEF (36) + /* rc mode */ typedef enum { @@ -187,6 +197,7 @@ typedef struct axVENC_H264_VBR_T AX_U32 u32MinIQp; /* Range:[0, 51]; the min I qp */ AX_S32 s32IntraQpDelta; /* Range:[-51, 51]; QP difference between target QP and intra frame QP */ AX_VENC_QPMAP_META_T stQpmapInfo; /* Qpmap related info */ + AX_U32 u32ChangePos; /* Range:[20, 100] */ } AX_VENC_H264_VBR_T; /* the attribute of h264e cvbr*/ @@ -233,6 +244,10 @@ typedef struct axVENC_H264_AVBR_T AX_U32 u32MinIQp; /* Range:[0, 51]; the min I qp */ AX_S32 s32IntraQpDelta; /* Range:[-51, 51]; QP difference between target QP and intra frame QP */ AX_VENC_QPMAP_META_T stQpmapInfo; /* Qpmap related info */ + + AX_U32 u32ChangePos; /* Range:[20, 100] */ + AX_U32 u32MinStillPercent; /* Range:[10, 100] */ + AX_U32 u32MaxStillQp; /* Range:[u32MinIQp, u32MaxIQp]; def 36 */ } AX_VENC_H264_AVBR_T; /* the attribute of h264e fixqp*/ diff --git a/msp/out/include/ax_vin_api.h b/msp/out/include/ax_vin_api.h index 36f767c..38edb27 100644 --- a/msp/out/include/ax_vin_api.h +++ b/msp/out/include/ax_vin_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_vin_error_code.h b/msp/out/include/ax_vin_error_code.h index 350b976..8b3b741 100644 --- a/msp/out/include/ax_vin_error_code.h +++ b/msp/out/include/ax_vin_error_code.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/out/include/ax_vo_api.h b/msp/out/include/ax_vo_api.h index 40ee9af..1ad6ea8 100644 --- a/msp/out/include/ax_vo_api.h +++ b/msp/out/include/ax_vo_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -68,6 +68,8 @@ typedef AX_COLORKEY_T AX_FB_COLORKEY_T; #define AX_FBIOGET_TYPE _IOR('F', 0x26, AX_U16) #define AX_FBIOGET_COLORKEY _IOR('F', 0x27, AX_FB_COLORKEY_T) #define AX_FBIOPUT_COLORKEY _IOW('F', 0x28, AX_FB_COLORKEY_T) +#define AX_FBIOGET_BLEND_INFO _IOR('F', 0x29, AX_FB_BLEND_INFO_T) +#define AX_FBIOPUT_BLEND_INFO _IOW('F', 0x2A, AX_FB_BLEND_INFO_T) typedef enum { AX_VO_MODE_OFFLINE, @@ -210,6 +212,8 @@ typedef struct axVSYNC_CALLBACK_FUNC_T { AX_VOID *pPrivateData; } AX_VSYNC_CALLBACK_FUNC_T; +#define AX_VO_FLAG_BLD_SINGLE_BUF (1 << 8) + typedef struct axVO_PUB_ATTR_T { AX_VO_MODE_E enMode; AX_VO_INTF_TYPE_E enIntfType; @@ -217,6 +221,7 @@ typedef struct axVO_PUB_ATTR_T { AX_VO_INTF_SYNC_E enIntfSync; AX_VO_SYNC_INFO_T stSyncInfo; AX_HDMI_ATTR_T stHdmiAttr; + AX_U32 u32Flags; } AX_VO_PUB_ATTR_T; typedef struct axVO_RESO_T { @@ -252,6 +257,7 @@ typedef enum axVO_PART_MODE_E { typedef enum axVO_BLEND_MODE_E { AX_VO_BLEND_MODE_DEFAULT = 0, AX_VO_BLEND_MODE_INDEPENDENT = 1, + AX_VO_BLEND_MODE_INDEPENDENT_EXT = 2, AX_VO_BLEND_MODE_BUTT } AX_VO_BLEND_MODE_E; @@ -413,6 +419,12 @@ typedef struct axFB_CURSOR_INFO_T { AX_FB_CURSOR_RES_T stRes; } AX_FB_CURSOR_INFO_T; +typedef struct axFB_BLEND_INFO_T { + AX_U16 u16Mode; + AX_U16 u16Stride; + AX_U64 u64PhyAddr; +} AX_FB_BLEND_INFO_T; + typedef struct axVO_MEMCPY_T { AX_VO_SIZE_T stSize; AX_U64 u64PhyAddr; @@ -469,6 +481,8 @@ AX_S32 AX_VO_UnBindVideoLayer(VO_LAYER VoLayer, VO_DEV VoDev); AX_S32 AX_VO_BindGraphicLayer(GRAPHIC_LAYER GraphicLayer, VO_DEV VoDev); AX_S32 AX_VO_UnBindGraphicLayer(GRAPHIC_LAYER GraphicLayer, VO_DEV VoDev); +AX_S32 AX_VO_SetGraphicLayerVrefresh(VO_DEV VoDev, GRAPHIC_LAYER GraphicLayer, AX_U32 u32Vrefresh); +AX_S32 AX_VO_GetGraphicLayerVrefresh(VO_DEV VoDev, GRAPHIC_LAYER GraphicLayer, AX_U32 *u32Vrefresh); /* This interface obtains the FD corresponding to the layer for the select operation. Closing operation is not allowed */ AX_S32 AX_VO_GetLayerFd(VO_LAYER VoLayer, AX_S32 *s32Fd); diff --git a/msp/out/lib/libax_3a.a b/msp/out/lib/libax_3a.a index e6bd08d..8c7611c 100644 Binary files a/msp/out/lib/libax_3a.a and b/msp/out/lib/libax_3a.a differ diff --git a/msp/out/lib/libax_3a.so b/msp/out/lib/libax_3a.so index 2522694..0b26f83 100644 Binary files a/msp/out/lib/libax_3a.so and b/msp/out/lib/libax_3a.so differ diff --git a/msp/out/lib/libax_audio.a b/msp/out/lib/libax_audio.a index abae353..52df148 100644 Binary files a/msp/out/lib/libax_audio.a and b/msp/out/lib/libax_audio.a differ diff --git a/msp/out/lib/libax_audio.so b/msp/out/lib/libax_audio.so index 8401921..f66aed1 100644 Binary files a/msp/out/lib/libax_audio.so and b/msp/out/lib/libax_audio.so differ diff --git a/msp/out/lib/libax_audio_3a.a b/msp/out/lib/libax_audio_3a.a index 969c6ed..9c11ed6 100644 Binary files a/msp/out/lib/libax_audio_3a.a and b/msp/out/lib/libax_audio_3a.a differ diff --git a/msp/out/lib/libax_audio_3a.so b/msp/out/lib/libax_audio_3a.so index cb2951e..ffaba4a 100644 Binary files a/msp/out/lib/libax_audio_3a.so and b/msp/out/lib/libax_audio_3a.so differ diff --git a/msp/out/lib/libax_avs.a b/msp/out/lib/libax_avs.a index d24e63d..b042a59 100644 Binary files a/msp/out/lib/libax_avs.a and b/msp/out/lib/libax_avs.a differ diff --git a/msp/out/lib/libax_avscali.a b/msp/out/lib/libax_avscali.a index 87c6cec..ca9d3a0 100644 Binary files a/msp/out/lib/libax_avscali.a and b/msp/out/lib/libax_avscali.a differ diff --git a/msp/out/lib/libax_cipher.a b/msp/out/lib/libax_cipher.a index e75e8d8..febd450 100644 Binary files a/msp/out/lib/libax_cipher.a and b/msp/out/lib/libax_cipher.a differ diff --git a/msp/out/lib/libax_cipher.so b/msp/out/lib/libax_cipher.so index b79dedf..4d822f6 100644 Binary files a/msp/out/lib/libax_cipher.so and b/msp/out/lib/libax_cipher.so differ diff --git a/msp/out/lib/libax_dmadim.a b/msp/out/lib/libax_dmadim.a index 0ba2358..e06ce3e 100644 Binary files a/msp/out/lib/libax_dmadim.a and b/msp/out/lib/libax_dmadim.a differ diff --git a/msp/out/lib/libax_dmadim.so b/msp/out/lib/libax_dmadim.so index dc1bbe8..a7e7fae 100644 Binary files a/msp/out/lib/libax_dmadim.so and b/msp/out/lib/libax_dmadim.so differ diff --git a/msp/out/lib/libax_dmaxor.a b/msp/out/lib/libax_dmaxor.a index db70935..8e10f89 100644 Binary files a/msp/out/lib/libax_dmaxor.a and b/msp/out/lib/libax_dmaxor.a differ diff --git a/msp/out/lib/libax_dmaxor.so b/msp/out/lib/libax_dmaxor.so index 7627154..f455b97 100644 Binary files a/msp/out/lib/libax_dmaxor.so and b/msp/out/lib/libax_dmaxor.so differ diff --git a/msp/out/lib/libax_dsp.a b/msp/out/lib/libax_dsp.a index 568c2ba..53a6b41 100644 Binary files a/msp/out/lib/libax_dsp.a and b/msp/out/lib/libax_dsp.a differ diff --git a/msp/out/lib/libax_dsp.so b/msp/out/lib/libax_dsp.so index 6eeaa9e..6ced07a 100644 Binary files a/msp/out/lib/libax_dsp.so and b/msp/out/lib/libax_dsp.so differ diff --git a/msp/out/lib/libax_dsp_cv.a b/msp/out/lib/libax_dsp_cv.a index aa6b613..3012540 100644 Binary files a/msp/out/lib/libax_dsp_cv.a and b/msp/out/lib/libax_dsp_cv.a differ diff --git a/msp/out/lib/libax_dsp_cv.so b/msp/out/lib/libax_dsp_cv.so index 2789f55..23d78d1 100644 Binary files a/msp/out/lib/libax_dsp_cv.so and b/msp/out/lib/libax_dsp_cv.so differ diff --git a/msp/out/lib/libax_efuse.a b/msp/out/lib/libax_efuse.a index a4646b1..f2c27bd 100644 Binary files a/msp/out/lib/libax_efuse.a and b/msp/out/lib/libax_efuse.a differ diff --git a/msp/out/lib/libax_efuse.so b/msp/out/lib/libax_efuse.so index 054fd24..9944e80 100644 Binary files a/msp/out/lib/libax_efuse.so and b/msp/out/lib/libax_efuse.so differ diff --git a/msp/out/lib/libax_engine.a b/msp/out/lib/libax_engine.a index d825c87..2214263 100644 Binary files a/msp/out/lib/libax_engine.a and b/msp/out/lib/libax_engine.a differ diff --git a/msp/out/lib/libax_engine.so b/msp/out/lib/libax_engine.so index f5b1b2f..c0bc35e 100644 Binary files a/msp/out/lib/libax_engine.so and b/msp/out/lib/libax_engine.so differ diff --git a/msp/out/lib/libax_interpreter.a b/msp/out/lib/libax_interpreter.a index f2c74ec..2dac124 100644 Binary files a/msp/out/lib/libax_interpreter.a and b/msp/out/lib/libax_interpreter.a differ diff --git a/msp/out/lib/libax_interpreter.so b/msp/out/lib/libax_interpreter.so index 9cad66f..6eed544 100644 Binary files a/msp/out/lib/libax_interpreter.so and b/msp/out/lib/libax_interpreter.so differ diff --git a/msp/out/lib/libax_ive.a b/msp/out/lib/libax_ive.a index b324438..155b147 100644 Binary files a/msp/out/lib/libax_ive.a and b/msp/out/lib/libax_ive.a differ diff --git a/msp/out/lib/libax_ive.so b/msp/out/lib/libax_ive.so index 9f39fe8..730e65b 100644 Binary files a/msp/out/lib/libax_ive.so and b/msp/out/lib/libax_ive.so differ diff --git a/msp/out/lib/libax_ives.a b/msp/out/lib/libax_ives.a index 3a9d753..a7f7697 100644 Binary files a/msp/out/lib/libax_ives.a and b/msp/out/lib/libax_ives.a differ diff --git a/msp/out/lib/libax_ives.so b/msp/out/lib/libax_ives.so index 05a9c71..34e0b65 100644 Binary files a/msp/out/lib/libax_ives.so and b/msp/out/lib/libax_ives.so differ diff --git a/msp/out/lib/libax_ivps.a b/msp/out/lib/libax_ivps.a index 88c4968..e595a53 100644 Binary files a/msp/out/lib/libax_ivps.a and b/msp/out/lib/libax_ivps.a differ diff --git a/msp/out/lib/libax_ivps.so b/msp/out/lib/libax_ivps.so index c7fca58..6d78334 100644 Binary files a/msp/out/lib/libax_ivps.so and b/msp/out/lib/libax_ivps.so differ diff --git a/msp/out/lib/libax_mipi.a b/msp/out/lib/libax_mipi.a index bed8b12..2b29bd4 100644 Binary files a/msp/out/lib/libax_mipi.a and b/msp/out/lib/libax_mipi.a differ diff --git a/msp/out/lib/libax_mipi.so b/msp/out/lib/libax_mipi.so index 85f220c..d628801 100644 Binary files a/msp/out/lib/libax_mipi.so and b/msp/out/lib/libax_mipi.so differ diff --git a/msp/out/lib/libax_nt_ctrl.a b/msp/out/lib/libax_nt_ctrl.a index 43b1cf6..e07ecea 100644 Binary files a/msp/out/lib/libax_nt_ctrl.a and b/msp/out/lib/libax_nt_ctrl.a differ diff --git a/msp/out/lib/libax_nt_ctrl.so b/msp/out/lib/libax_nt_ctrl.so index 6755ec7..10fc982 100644 Binary files a/msp/out/lib/libax_nt_ctrl.so and b/msp/out/lib/libax_nt_ctrl.so differ diff --git a/msp/out/lib/libax_nt_stream.a b/msp/out/lib/libax_nt_stream.a index b47769d..43c153d 100644 Binary files a/msp/out/lib/libax_nt_stream.a and b/msp/out/lib/libax_nt_stream.a differ diff --git a/msp/out/lib/libax_nt_stream.so b/msp/out/lib/libax_nt_stream.so index b4d724b..417daca 100644 Binary files a/msp/out/lib/libax_nt_stream.so and b/msp/out/lib/libax_nt_stream.so differ diff --git a/msp/out/lib/libax_pcie_dma.a b/msp/out/lib/libax_pcie_dma.a index 1f7d90f..2ddd9ef 100644 Binary files a/msp/out/lib/libax_pcie_dma.a and b/msp/out/lib/libax_pcie_dma.a differ diff --git a/msp/out/lib/libax_pcie_msg.a b/msp/out/lib/libax_pcie_msg.a index 5f27d5b..1a9ba4a 100644 Binary files a/msp/out/lib/libax_pcie_msg.a and b/msp/out/lib/libax_pcie_msg.a differ diff --git a/msp/out/lib/libax_proton.a b/msp/out/lib/libax_proton.a index a0caaaf..cc3f787 100644 Binary files a/msp/out/lib/libax_proton.a and b/msp/out/lib/libax_proton.a differ diff --git a/msp/out/lib/libax_proton.so b/msp/out/lib/libax_proton.so index 89c336e..370ee53 100644 Binary files a/msp/out/lib/libax_proton.so and b/msp/out/lib/libax_proton.so differ diff --git a/msp/out/lib/libax_skel.a b/msp/out/lib/libax_skel.a index 3ca3a14..fefb447 100644 Binary files a/msp/out/lib/libax_skel.a and b/msp/out/lib/libax_skel.a differ diff --git a/msp/out/lib/libax_skel.so b/msp/out/lib/libax_skel.so index 95acb31..73cd054 100644 Binary files a/msp/out/lib/libax_skel.so and b/msp/out/lib/libax_skel.so differ diff --git a/msp/out/lib/libax_sys.a b/msp/out/lib/libax_sys.a index f320d81..dd98938 100644 Binary files a/msp/out/lib/libax_sys.a and b/msp/out/lib/libax_sys.a differ diff --git a/msp/out/lib/libax_sys.so b/msp/out/lib/libax_sys.so index 4dfa3d0..c157a8c 100644 Binary files a/msp/out/lib/libax_sys.so and b/msp/out/lib/libax_sys.so differ diff --git a/msp/out/lib/libax_utility.a b/msp/out/lib/libax_utility.a index 2df4163..71ee0a6 100644 Binary files a/msp/out/lib/libax_utility.a and b/msp/out/lib/libax_utility.a differ diff --git a/msp/out/lib/libax_vdec.a b/msp/out/lib/libax_vdec.a index 7926e09..b016f54 100644 Binary files a/msp/out/lib/libax_vdec.a and b/msp/out/lib/libax_vdec.a differ diff --git a/msp/out/lib/libax_vdec.so b/msp/out/lib/libax_vdec.so index 9858c15..a43f1b7 100644 Binary files a/msp/out/lib/libax_vdec.so and b/msp/out/lib/libax_vdec.so differ diff --git a/msp/out/lib/libax_venc.a b/msp/out/lib/libax_venc.a index 72a6b4e..71f73a4 100644 Binary files a/msp/out/lib/libax_venc.a and b/msp/out/lib/libax_venc.a differ diff --git a/msp/out/lib/libax_venc.so b/msp/out/lib/libax_venc.so index 5521477..aa82e04 100644 Binary files a/msp/out/lib/libax_venc.so and b/msp/out/lib/libax_venc.so differ diff --git a/msp/out/lib/libax_vo.a b/msp/out/lib/libax_vo.a index b9a290a..be774cc 100644 Binary files a/msp/out/lib/libax_vo.a and b/msp/out/lib/libax_vo.a differ diff --git a/msp/out/lib/libax_vo.so b/msp/out/lib/libax_vo.so index 3850b77..e2b3dac 100644 Binary files a/msp/out/lib/libax_vo.so and b/msp/out/lib/libax_vo.so differ diff --git a/msp/out/lib/liblens_dciris.a b/msp/out/lib/liblens_dciris.a index da4ab87..2e2d95c 100644 Binary files a/msp/out/lib/liblens_dciris.a and b/msp/out/lib/liblens_dciris.a differ diff --git a/msp/out/lib/liblens_dciris.so b/msp/out/lib/liblens_dciris.so index 8897718..b9909ce 100644 Binary files a/msp/out/lib/liblens_dciris.so and b/msp/out/lib/liblens_dciris.so differ diff --git a/msp/out/lib/libsns_dummy.a b/msp/out/lib/libsns_dummy.a index d0c597b..1db318b 100644 Binary files a/msp/out/lib/libsns_dummy.a and b/msp/out/lib/libsns_dummy.a differ diff --git a/msp/out/lib/libsns_dummy.so b/msp/out/lib/libsns_dummy.so index 191e251..2cc12f2 100644 Binary files a/msp/out/lib/libsns_dummy.so and b/msp/out/lib/libsns_dummy.so differ diff --git a/msp/out/lib/libsns_os08a20.a b/msp/out/lib/libsns_os08a20.a index f525910..34a13b2 100644 Binary files a/msp/out/lib/libsns_os08a20.a and b/msp/out/lib/libsns_os08a20.a differ diff --git a/msp/out/lib/libsns_os08a20.so b/msp/out/lib/libsns_os08a20.so index 2c90d42..b03ec2f 100644 Binary files a/msp/out/lib/libsns_os08a20.so and b/msp/out/lib/libsns_os08a20.so differ diff --git a/msp/out/ta/5dbac793-f574-4871-8ad3-04331ec17f24.ta b/msp/out/ta/5dbac793-f574-4871-8ad3-04331ec17f24.ta index e9fd9e9..4b20a81 100644 Binary files a/msp/out/ta/5dbac793-f574-4871-8ad3-04331ec17f24.ta and b/msp/out/ta/5dbac793-f574-4871-8ad3-04331ec17f24.ta differ diff --git a/msp/out/ta/8aaaf200-2450-11e4-abe2-0002a5d5c51b.ta b/msp/out/ta/8aaaf200-2450-11e4-abe2-0002a5d5c51b.ta index 2077ed4..4cd6c86 100644 Binary files a/msp/out/ta/8aaaf200-2450-11e4-abe2-0002a5d5c51b.ta and b/msp/out/ta/8aaaf200-2450-11e4-abe2-0002a5d5c51b.ta differ diff --git a/msp/out/ta/a734eed9-d6a1-4244-aa50-7c99719e7b7b.ta b/msp/out/ta/a734eed9-d6a1-4244-aa50-7c99719e7b7b.ta index 443b513..0717c72 100644 Binary files a/msp/out/ta/a734eed9-d6a1-4244-aa50-7c99719e7b7b.ta and b/msp/out/ta/a734eed9-d6a1-4244-aa50-7c99719e7b7b.ta differ diff --git a/msp/out/ta/f4e750bb-1437-4fbf-8785-8d3580c34994.ta b/msp/out/ta/f4e750bb-1437-4fbf-8785-8d3580c34994.ta index fda8c01..5817574 100644 Binary files a/msp/out/ta/f4e750bb-1437-4fbf-8785-8d3580c34994.ta and b/msp/out/ta/f4e750bb-1437-4fbf-8785-8d3580c34994.ta differ diff --git a/msp/sample/Makefile b/msp/sample/Makefile index 7ad32da..da86457 100644 --- a/msp/sample/Makefile +++ b/msp/sample/Makefile @@ -1,7 +1,8 @@ -SUBDIRS = cmm pool rtc efuse ivps vo dsp vin isp_3a vin_vo vin_ivps_venc_rtsp +SUBDIRS = cmm pool rtc efuse ivps vo dsp vin isp_3a vin_vo vin_ivps_venc_rtsp vin_ivps_engine_venc_rtsp SUBDIRS += vdec vdec_ivps_vo vin_ivps_vo_venc vdec_ivps_venc SUBDIRS += cipher ive dmaxor dmadim sysmap SUBDIRS += pcie ives adc venc audio uvc npu efuse_hash avs +SUBDIRS += video_convert ################################################################################ # prepare param @@ -12,9 +13,7 @@ HOME_PATH := $(abspath $(LOCAL_PATH)/../..) include $(HOME_PATH)/build/color.mk include $(HOME_PATH)/build/config.mak -ifneq ($(strip $(SUPPORT_OPTEE)),false) -SUBDIRS += optee_hello_world optee_sec_storage optee_aes optee_acipher -endif + PRJ_OUT_HOME := $(HOME_PATH)/build/out/$(PROJECT) OBJ_OUT_PATH := $(PRJ_OUT_HOME)/objs MSP_OUT_PATH := $(HOME_PATH)/msp/out diff --git a/msp/sample/adc/sample_adc.c b/msp/sample/adc/sample_adc.c index 697aab8..6170e64 100644 --- a/msp/sample/adc/sample_adc.c +++ b/msp/sample/adc/sample_adc.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/audio/sample_audio_link.c b/msp/sample/audio/sample_audio_link.c index 2af3cbd..db70796 100644 --- a/msp/sample/audio/sample_audio_link.c +++ b/msp/sample/audio/sample_audio_link.c @@ -79,6 +79,9 @@ static AX_S32 gCtrl = 0; static AX_S32 gInstant = 0; static AX_S32 gInsertSilence = 0; static AX_S32 gSimDrop = 0; +static AX_S32 gAsyncTest = 0; +static const char *gAsyncTestName = NULL; +static AX_S32 gAsyncTestNumber = 10; int BitsToFormat(unsigned int bits, AX_AUDIO_BIT_WIDTH_E* format) { @@ -218,7 +221,7 @@ static void *AoCtrlThread(void *arg) int index = 0; while (!gLoopExit) { - printf("please enter[save(s), unsave(a), VqeVolume=1.0(1), VqeVolume=5.0(5), EnableResample(r), DisableResample(e), ToggleResample(t), mute(m), unmute(u), quit(q)]:\n"); + printf("please enter[save(s), unsave(a), VqeVolume=1.0(1), VqeVolume=5.0(5), EnableResample(r), DisableResample(e), ToggleResample(t), mute(m), unmute(u), PauseRecv(p), ResumeRecv(c), quit(q)]:\n"); key0 = getchar(); key1 = getchar(); key = (key0 == '\n') ? key1 : key0; @@ -300,8 +303,24 @@ static void *AoCtrlThread(void *arg) printf("AX_AO_SetVqeMute, ret: %x\n", ret); break; } + case 'p': + case 'P': { + ret = AX_AO_PauseRecvFrame(aoCtrlArgs->aoCardId, aoCtrlArgs->aoDevId); + printf("AX_AO_PauseRecvFrame, ret: %x\n", ret); + break; + } + case 'c': + case 'C': { + ret = AX_AO_ResumeRecvFrame(aoCtrlArgs->aoCardId, aoCtrlArgs->aoDevId); + printf("AX_AO_ResumeRecvFrame, ret: %x\n", ret); + break; + } case 'q': case 'Q': { + ret = AX_AO_DisableDev(aoCtrlArgs->aoCardId, aoCtrlArgs->aoDevId); + if (ret) { + printf("AX_AO_DisableDev failed! ret= %x\n",ret); + } gLoopExit = 1; break; } @@ -427,6 +446,29 @@ static int StringToPayloadTypeFileExt(const char* str, AX_PAYLOAD_TYPE_E *pType, return result; } +static void *AsyncTestThread(void *arg) +{ + AX_S32 ret = AX_SUCCESS; + + if (!strcmp(gAsyncTestName, "PauseResume")) { + sleep(1); + for (int i = 0; i < gAsyncTestNumber; i++) { + ret = AX_AO_PauseRecvFrame(gCardNum, gDeviceNum); + if (ret) { + printf("AX_AO_PauseRecvFrame failed! ret = %x", ret); + } + ret = AX_AO_ResumeRecvFrame(gCardNum, gDeviceNum); + if (ret) { + printf("AX_AO_ResumeRecvFrame failed! ret = %x", ret); + } + } + } else { + printf("Unknown async test name: %s\n", gAsyncTestName); + } + + return NULL; +} + static void SigInt(int sigNo) { printf("Catch signal %d\n", sigNo); @@ -479,6 +521,9 @@ static void PrintHelp() printf(" --period-count: period count. (support int), default: 4\n"); printf(" --insert-silence: insert silence enable. (support int), default: 0\n"); printf(" --sim-drop: sim drop enable. (support int), default: 0\n"); + printf(" --async-test: async test enable. (support int), default: 0\n"); + printf(" --async-test-name: async test name. (support char*), default: NULL\n"); + printf(" --async-test-number: async test number. (support int), default: 10\n"); } enum LONG_OPTION { @@ -506,6 +551,9 @@ enum LONG_OPTION { LONG_OPTION_PERIOD_COUNT, LONG_OPTION_INSERT_SILENCE, LONG_OPTION_SIM_DROP, + LONG_OPTION_ASYNC_TEST, + LONG_OPTION_ASYNC_TEST_NAME, + LONG_OPTION_ASYNC_TEST_NUMBER, LONG_OPTION_BUTT }; @@ -860,8 +908,11 @@ static int AudioOutput() aoCtrlArgs.aoCardId = card; aoCtrlArgs.aoDevId = device; pthread_t ctrlTid; + pthread_t asyncTestTid; if (gCtrl) { pthread_create(&ctrlTid, NULL, AoCtrlThread, (void *)&aoCtrlArgs); + } else if (gAsyncTest && gAsyncTestName) { + pthread_create(&asyncTestTid, NULL, AsyncTestThread, NULL); } AX_U64 BlkSize = 960; @@ -936,6 +987,8 @@ static int AudioOutput() if (gCtrl) { pthread_join(ctrlTid, NULL); + } else if (gAsyncTest && gAsyncTestName) { + pthread_join(asyncTestTid, NULL); } DIS_AO_DEVICE: @@ -1405,6 +1458,14 @@ static int AudioDecodeLink() return -1; } + SAMPLE_AO_CTRL_ARGS_S aoCtrlArgs; + aoCtrlArgs.aoCardId = card; + aoCtrlArgs.aoDevId = device; + pthread_t ctrlTid; + if (gCtrl) { + pthread_create(&ctrlTid, NULL, AoCtrlThread, (void *)&aoCtrlArgs); + } + AX_S32 loopNumber = 0; if ((pstAttr.enType == PT_G711A) || (pstAttr.enType == PT_G711U) || (pstAttr.enType == PT_LPCM) || (pstAttr.enType == PT_G726)){ @@ -1552,6 +1613,11 @@ static int AudioDecodeLink() } printf("adec_ao success.\n"); + + if (gCtrl) { + pthread_join(ctrlTid, NULL); + } + ret = AX_ADEC_DestroyChn(adChn); if (ret) { printf("AX_ADEC_DestroyChn failed!ret = %x \n",ret); @@ -1628,6 +1694,9 @@ int main(int argc, char *argv[]) {"period-count", required_argument, 0, LONG_OPTION_PERIOD_COUNT }, {"insert-silence", required_argument, 0, LONG_OPTION_INSERT_SILENCE}, {"sim-drop", required_argument, 0, LONG_OPTION_SIM_DROP}, + {"async-test", required_argument, 0, LONG_OPTION_ASYNC_TEST}, + {"async-test-name", required_argument, 0, LONG_OPTION_ASYNC_TEST_NAME}, + {"async-test-number", required_argument, 0, LONG_OPTION_ASYNC_TEST_NUMBER}, {0, 0, 0, 0 } }; @@ -1751,6 +1820,15 @@ int main(int argc, char *argv[]) case LONG_OPTION_SIM_DROP: gSimDrop = atoi(optarg); break; + case LONG_OPTION_ASYNC_TEST: + gAsyncTest = atoi(optarg); + break; + case LONG_OPTION_ASYNC_TEST_NAME: + gAsyncTestName = optarg; + break; + case LONG_OPTION_ASYNC_TEST_NUMBER: + gAsyncTestNumber = atoi(optarg); + break; default: isExit = 1; break; diff --git a/msp/sample/audio/wave_parser.c b/msp/sample/audio/wave_parser.c index 8f0f4cd..6636e26 100644 --- a/msp/sample/audio/wave_parser.c +++ b/msp/sample/audio/wave_parser.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/audio/wave_parser.h b/msp/sample/audio/wave_parser.h index 9d4806f..5311498 100644 --- a/msp/sample/audio/wave_parser.h +++ b/msp/sample/audio/wave_parser.h @@ -1,31 +1,31 @@ -/************************************************************************************************** - * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. - * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and - * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. - * - **************************************************************************************************/ - +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + #ifndef _WAVE_PARSER_H__ #define _WAVE_PARSER_H__ #include -#include +#include #include #include -#ifdef __cplusplus -extern "C" { +#ifdef __cplusplus +extern "C" { #endif int ParseWaveHeader(char *filename, FILE *file, uint16_t *num_channels, uint32_t *sample_rate, uint16_t *bits_per_sample); void LeaveWaveHeader(FILE *file); void WriteWaveHeader(FILE *file, unsigned int channels, unsigned int rate, uint16_t bits_per_sample, unsigned int frames); -#ifdef __cplusplus -} +#ifdef __cplusplus +} #endif #endif /* _WAVE_PARSER_H__ */ diff --git a/msp/sample/avs/sample_avs b/msp/sample/avs/sample_avs deleted file mode 100644 index c594dc0..0000000 Binary files a/msp/sample/avs/sample_avs and /dev/null differ diff --git a/msp/sample/cipher/sample_aes.c b/msp/sample/cipher/sample_aes.c index bb8b36d..6abcce4 100644 --- a/msp/sample/cipher/sample_aes.c +++ b/msp/sample/cipher/sample_aes.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -634,7 +634,7 @@ static int SAMPLE_CIPHER_AES_EncryptPhy_PerformanceTest() printf("PhySrc Alloc memory failed!\n"); return AX_ERR_CIPHER_NOMEM; } - ret1 = AX_SYS_MemAlloc(&phyDst, (AX_VOID **)&dst, 512, 64, (AX_S8 *)"ce_aes_sample"); + ret1 = AX_SYS_MemAlloc(&phyDst, (AX_VOID **)&dst, 1024 * 1024 * INPUT_DATA_LEN, 64, (AX_S8 *)"ce_aes_sample"); if (ret1 < 0) { AX_SYS_MemFree((AX_U64)phySrc, (AX_VOID *)src); printf("PhyDst Alloc memory failed!\n"); diff --git a/msp/sample/cipher/sample_cipher.c b/msp/sample/cipher/sample_cipher.c index 21bed24..4c61b1f 100644 --- a/msp/sample/cipher/sample_cipher.c +++ b/msp/sample/cipher/sample_cipher.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/cipher/sample_des.c b/msp/sample/cipher/sample_des.c index 71b07dc..ba9979f 100644 --- a/msp/sample/cipher/sample_des.c +++ b/msp/sample/cipher/sample_des.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/cipher/sample_hash.c b/msp/sample/cipher/sample_hash.c index 4b881fd..51b3602 100644 --- a/msp/sample/cipher/sample_hash.c +++ b/msp/sample/cipher/sample_hash.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/cipher/sample_rsa.c b/msp/sample/cipher/sample_rsa.c index aff05b5..09632d5 100644 --- a/msp/sample/cipher/sample_rsa.c +++ b/msp/sample/cipher/sample_rsa.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/cipher/sample_trng.c b/msp/sample/cipher/sample_trng.c index f4f2d2c..141de38 100644 --- a/msp/sample/cipher/sample_trng.c +++ b/msp/sample/cipher/sample_trng.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/cmm/sample_cmm.c b/msp/sample/cmm/sample_cmm.c index d149dde..ce3a128 100644 --- a/msp/sample/cmm/sample_cmm.c +++ b/msp/sample/cmm/sample_cmm.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_arg_parse.c b/msp/sample/common/common_arg_parse.c index 85e151d..4aeec4a 100644 --- a/msp/sample/common/common_arg_parse.c +++ b/msp/sample/common/common_arg_parse.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_arg_parse.h b/msp/sample/common/common_arg_parse.h index 86bf158..adb772f 100644 --- a/msp/sample/common/common_arg_parse.h +++ b/msp/sample/common/common_arg_parse.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_cam.c b/msp/sample/common/common_cam.c index 7a11211..ae54ca3 100644 --- a/msp/sample/common/common_cam.c +++ b/msp/sample/common/common_cam.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_cam.h b/msp/sample/common/common_cam.h index 030c7ca..f94af97 100644 --- a/msp/sample/common/common_cam.h +++ b/msp/sample/common/common_cam.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_config.h b/msp/sample/common/common_config.h index 017e2b6..8867913 100644 --- a/msp/sample/common/common_config.h +++ b/msp/sample/common/common_config.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_isp.c b/msp/sample/common/common_isp.c index 767dcfa..f81f7e9 100644 --- a/msp/sample/common/common_isp.c +++ b/msp/sample/common/common_isp.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_isp.h b/msp/sample/common/common_isp.h index 61cc1e5..e37c966 100644 --- a/msp/sample/common/common_isp.h +++ b/msp/sample/common/common_isp.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_nt.c b/msp/sample/common/common_nt.c index 0cd966c..4abf73a 100644 --- a/msp/sample/common/common_nt.c +++ b/msp/sample/common/common_nt.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_nt.h b/msp/sample/common/common_nt.h index 99128f4..e86eaad 100644 --- a/msp/sample/common/common_nt.h +++ b/msp/sample/common/common_nt.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_sys.c b/msp/sample/common/common_sys.c index 440317a..29cd90b 100644 --- a/msp/sample/common/common_sys.c +++ b/msp/sample/common/common_sys.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include diff --git a/msp/sample/common/common_sys.h b/msp/sample/common/common_sys.h index 2f034b2..5da2313 100644 --- a/msp/sample/common/common_sys.h +++ b/msp/sample/common/common_sys.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_type.h b/msp/sample/common/common_type.h index 78b5c58..79fa59c 100644 --- a/msp/sample/common/common_type.h +++ b/msp/sample/common/common_type.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_vdec.c b/msp/sample/common/common_vdec.c index f052010..71d6020 100644 --- a/msp/sample/common/common_vdec.c +++ b/msp/sample/common/common_vdec.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_vdec_api.h b/msp/sample/common/common_vdec_api.h index 3a7158c..f19344d 100644 --- a/msp/sample/common/common_vdec_api.h +++ b/msp/sample/common/common_vdec_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_vdec_cmd.c b/msp/sample/common/common_vdec_cmd.c index 993b322..b795348 100644 --- a/msp/sample/common/common_vdec_cmd.c +++ b/msp/sample/common/common_vdec_cmd.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -369,6 +369,9 @@ static void __PrintHelp_Com() printf(" --bFfmpegEnable: whether used ffmpeg lib parser stream to decode. 1: enable. 0: disable. default: 1\n"); printf(" --enOutputOrder: Output order. 0: OUTPUT_ORDER_DISP. 1: OUTPUT_ORDER_DEC. default: 0\n"); printf(" --enVideoMode: Video Mode. 0: VIDEO_DEC_MODE_IPB. 1: VIDEO_DEC_MODE_IP. 2: VIDEO_DEC_MODE_I. default: 0\n"); + printf(" --enSkipFrame: whether skip frame after decode if this frame pts is -1. 1: enable. 0: disable. default: 0\n"); + printf(" --s32VdecVirtChn: specifies the JDEC mapping virtual channel number. default: 0\n"); + printf(" --bModifyFrmSize: whether modify PP channel frame size dynamically. 1: enable. 0: disable. default: 0\n"); } static void __PrintHelp_Link() @@ -376,6 +379,8 @@ static void __PrintHelp_Link() printf(" --pollingEna: whether to enable the polling function. 1: enable. 0: disable. default: 0\n"); printf(" --pollingCnt: polling number. default: 0\n"); printf(" --pollingTime: polling time. default: 10\n"); + printf(" --pollingType: pollingType. 0: loop reset and destroy. 1: loop destroy. 2: loop reset. default: 0\n"); + printf(" --bEnaIvpsBakFrm: Whether the ivps frame backup function is enabled. 1: enable. 0: disable. default: 0\n"); } static AX_S32 __SampleInitOptions(SAMPLE_OPTION_T **ppOptions, SAMPLE_OPTION_NAME_T **ppOptName) @@ -427,6 +432,8 @@ static AX_S32 __SampleInitOptions(SAMPLE_OPTION_T **ppOptions, SAMPLE_OPTION_NAM if (ret) goto ERR_RET_LOG; ret = SampleOptionsFill(pOptions, i++, "bJpegDecOneFrm", 'j', AX_TRUE); if (ret) goto ERR_RET_LOG; + ret = SampleOptionsFill(pOptions, i++, "bExtractHead", '0', AX_TRUE); + if (ret) goto ERR_RET_LOG; ret = SampleOptionsFill(pOptions, i++, "bQuitWait", 'q', AX_TRUE); if (ret) goto ERR_RET_LOG; ret = SampleOptionsFill(pOptions, i++, "sMilliSec", '0', AX_TRUE); @@ -501,18 +508,28 @@ static AX_S32 __SampleInitOptions(SAMPLE_OPTION_T **ppOptions, SAMPLE_OPTION_NAM if (ret) goto ERR_RET_LOG; ret = SampleOptionsFill(pOptions, i++, "bFfmpegEnable", '0', AX_TRUE); if (ret) goto ERR_RET_LOG; + ret = SampleOptionsFill(pOptions, i++, "s32VdecVirtChn", '0', AX_TRUE); + if (ret) goto ERR_RET_LOG; ret = SampleOptionsFill(pOptions, i++, "waitTime", '0', AX_TRUE); if (ret) goto ERR_RET_LOG; ret = SampleOptionsFill(pOptions, i++, "pollingEna", '0', AX_TRUE); if (ret) goto ERR_RET_LOG; ret = SampleOptionsFill(pOptions, i++, "pollingCnt", '0', AX_TRUE); if (ret) goto ERR_RET_LOG; + ret = SampleOptionsFill(pOptions, i++, "bEnaIvpsBakFrm", '0', AX_TRUE); + if (ret) goto ERR_RET_LOG; ret = SampleOptionsFill(pOptions, i++, "pollingTime", '0', AX_TRUE); if (ret) goto ERR_RET_LOG; + ret = SampleOptionsFill(pOptions, i++, "pollingType", '0', AX_TRUE); + if (ret) goto ERR_RET_LOG; ret = SampleOptionsFill(pOptions, i++, "enOutputOrder", '0', AX_TRUE); if (ret) goto ERR_RET_LOG; ret = SampleOptionsFill(pOptions, i++, "enVideoMode", '0', AX_TRUE); if (ret) goto ERR_RET_LOG; + ret = SampleOptionsFill(pOptions, i++, "enSkipFrame", '0', AX_TRUE); + if (ret) goto ERR_RET_LOG; + ret = SampleOptionsFill(pOptions, i++, "bModifyFrmSize", '0', AX_TRUE); + if (ret) goto ERR_RET_LOG; tmp_size = sizeof(SAMPLE_OPTION_NAME_T) * AX_VDEC_MAX_GRP_NUM; @@ -589,6 +606,8 @@ static AX_S32 __VdecCmdParaPrint(SAMPLE_VDEC_CMD_PARAM_T *pstPara, AX_VDEC_GRP V SAMPLE_LOG("pstPara->pInputFilePath:%s", pstPara->pInputFilePath); SAMPLE_LOG("pstPara->bFfmpegEnable:%d", pstPara->bFfmpegEnable); SAMPLE_LOG("pstPara->enVideoMode:%d", pstPara->enVideoMode); + SAMPLE_LOG("pstPara->enSkipFrame:%d", pstPara->enSkipFrame); + SAMPLE_LOG("pstPara->bModifyFrmSize:%d", pstPara->bModifyFrmSize); for (int i = 0; i < AX_DEC_MAX_CHN_NUM; i++) { pstChnCfg = &pstPara->tChnCfg[i]; @@ -622,6 +641,10 @@ static AX_VOID __VdecParameterAdjust(SAMPLE_VDEC_CMD_PARAM_T *pstCmd) if (pstCmd->enInputMode == AX_VDEC_INPUT_MODE_NAL) pstCmd->enInputMode = AX_VDEC_INPUT_MODE_FRAME; + if (pstCmd->s32VdecVirtChn) { + pstCmd->tChnCfg[pstCmd->s32VdecVirtChn] = pstCmd->tChnCfg[0]; + pstCmd->tChnCfg[0].bChnEnable = AX_FALSE; + } } else { for (int ci = 0; ci < AX_DEC_MAX_CHN_NUM; ci++) { if (pstCmd->tChnCfg[ci].bChnEnable == AX_FALSE) continue; @@ -1028,7 +1051,8 @@ AX_S32 VdecCmdLineParseAndCheck(AX_S32 argc, AX_CHAR **argv, SAMPLE_VDEC_CMD_PAR goto ERR_RET; } } - } else if (strcmp(pPrm->longOpt, "usrPicFile") == 0) { + } + else if (strcmp(pPrm->longOpt, "usrPicFile") == 0) { pstCmd->tChnCfg[VdChn].pUsrPicFilePath = malloc(AX_VDEC_FILE_PATH_LEN); if (pstCmd->tChnCfg[VdChn].pUsrPicFilePath == NULL) { SAMPLE_CRIT_LOG("VdGrp=%d, malloc %d Bytes FAILED!\n", @@ -1054,11 +1078,14 @@ AX_S32 VdecCmdLineParseAndCheck(AX_S32 argc, AX_CHAR **argv, SAMPLE_VDEC_CMD_PAR } pstCmd->tChnCfg[VdChn].bUserPicEnable = AX_TRUE; - } else if (strcmp(pPrm->longOpt, "usrPicIdx") == 0) { + } + else if (strcmp(pPrm->longOpt, "usrPicIdx") == 0) { pstCmd->usrPicIdx = atoi(optarg); - } else if (strcmp(pPrm->longOpt, "bDynRes") == 0) { + } + else if (strcmp(pPrm->longOpt, "bDynRes") == 0) { pstCmd->bDynRes = atoi(optarg); - } else if (strcmp(pPrm->longOpt, "newInput") == 0) { + } + else if (strcmp(pPrm->longOpt, "newInput") == 0) { pstCmd->pNewInputFilePath = malloc(AX_VDEC_FILE_PATH_LEN); if (pstCmd->pNewInputFilePath == NULL) { SAMPLE_CRIT_LOG("VdGrp=%d, malloc %d Bytes FAILED!\n", @@ -1089,6 +1116,9 @@ AX_S32 VdecCmdLineParseAndCheck(AX_S32 argc, AX_CHAR **argv, SAMPLE_VDEC_CMD_PAR else if (strcmp(pPrm->longOpt, "bUsrInstant") == 0) { pstCmd->bUsrInstant = atoi(optarg); } + else if (strcmp(pPrm->longOpt, "bExtractHead") == 0) { + pstCmd->bExtractHead = atoi(optarg); + } else if (strcmp(pPrm->longOpt, "recvStmAfUsrPic") == 0) { pstCmd->recvStmAfUsrPic = atoi(optarg); } @@ -1197,6 +1227,12 @@ AX_S32 VdecCmdLineParseAndCheck(AX_S32 argc, AX_CHAR **argv, SAMPLE_VDEC_CMD_PAR else if (strcmp(pPrm->longOpt, "bFfmpegEnable") == 0) { pstCmd->bFfmpegEnable = atoi(optarg); } + else if (strcmp(pPrm->longOpt, "enSkipFrame") == 0) { + pstCmd->enSkipFrame = atoi(optarg); + } + else if (strcmp(pPrm->longOpt, "s32VdecVirtChn") == 0) { + pstCmd->s32VdecVirtChn = atoi(optarg); + } else if (strcmp(pPrm->longOpt, "enOutputOrder") == 0) { pstCmd->enOutputOrder = atoi(optarg); } @@ -1215,6 +1251,15 @@ AX_S32 VdecCmdLineParseAndCheck(AX_S32 argc, AX_CHAR **argv, SAMPLE_VDEC_CMD_PAR else if (strcmp(pPrm->longOpt, "pollingTime") == 0) { pstCmd->pollingTime = atoi(optarg); } + else if (strcmp(pPrm->longOpt, "pollingType") == 0) { + pstCmd->pollingType = atoi(optarg); + } + else if (strcmp(pPrm->longOpt, "bEnaIvpsBakFrm") == 0) { + pstCmd->bEnaIvpsBakFrm = atoi(optarg); + } + else if (strcmp(pPrm->longOpt, "bModifyFrmSize") == 0) { + pstCmd->bModifyFrmSize = atoi(optarg); + } else { if ((pstCmd->uStreamCount > 0) && (pstCmd->uStreamCount < AX_VDEC_MAX_GRP_NUM)) { AX_CHAR StreamCfgName[AX_VDEC_FILE_NAME_LEN]; @@ -1330,6 +1375,8 @@ AX_S32 VdecDefaultParamsSet(SAMPLE_VDEC_CMD_PARAM_T *pstCmdPara) pstCmd->sStreamSize = 1024 * 1024; pstCmd->pollingTime = 10; pstCmd->usrPicIdx = 7; + pstCmd->enSkipFrame = 0; + pstCmd->s32VdecVirtChn = 0; for (int ci = 0; ci < AX_DEC_MAX_CHN_NUM; ci++) { pstCmd->tChnCfg[ci].VdChn = ci; @@ -1342,6 +1389,7 @@ AX_S32 VdecDefaultParamsSet(SAMPLE_VDEC_CMD_PARAM_T *pstCmdPara) pstCmd->tChnCfg[0].bChnEnable = AX_TRUE; pstCmd->bFfmpegEnable = AX_TRUE; + pstCmd->bModifyFrmSize = AX_FALSE; pstCmd->enVideoMode = VIDEO_DEC_MODE_IPB; return 0; diff --git a/msp/sample/common/common_vdec_cmd.h b/msp/sample/common/common_vdec_cmd.h index 14fd842..1bcb180 100644 --- a/msp/sample/common/common_vdec_cmd.h +++ b/msp/sample/common/common_vdec_cmd.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_vdec_log.h b/msp/sample/common/common_vdec_log.h index 4db1de6..c04b80f 100644 --- a/msp/sample/common/common_vdec_log.h +++ b/msp/sample/common/common_vdec_log.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_vdec_utils.c b/msp/sample/common/common_vdec_utils.c index c3ad324..8fd0444 100644 --- a/msp/sample/common/common_vdec_utils.c +++ b/msp/sample/common/common_vdec_utils.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_vdec_utils.h b/msp/sample/common/common_vdec_utils.h index 4555b1e..32ab66f 100644 --- a/msp/sample/common/common_vdec_utils.h +++ b/msp/sample/common/common_vdec_utils.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -207,6 +207,7 @@ typedef struct axSAMPLE_VDEC_CMD_PARAM_T { AX_U32 uStartGrpId; AX_S32 sStreamSize; AX_BOOL bJpegDecOneFrm; + AX_BOOL bExtractHead; AX_F32 f32SrcFrmRate; AX_VDEC_DISPLAY_MODE_E enDisplayMode; AX_VDEC_MULTI_MODE_E enMultimode; @@ -237,9 +238,14 @@ typedef struct axSAMPLE_VDEC_CMD_PARAM_T { AX_BOOL pollingEna; AX_S32 pollingCnt; AX_U32 pollingTime; + AX_BOOL pollingType; AX_U32 waitTime; + AX_BOOL bEnaIvpsBakFrm; AX_VDEC_MODE_E enVideoMode; AX_VDEC_OUTPUT_ORDER_E enOutputOrder; + AX_BOOL enSkipFrame; + AX_S32 s32VdecVirtChn; + AX_BOOL bModifyFrmSize; } SAMPLE_VDEC_CMD_PARAM_T; typedef struct axSAMPLE_VDEC_TBCFG_PARAM_T { diff --git a/msp/sample/common/common_venc.c b/msp/sample/common/common_venc.c index 8ef2165..567d968 100644 --- a/msp/sample/common/common_venc.c +++ b/msp/sample/common/common_venc.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -125,6 +125,7 @@ AX_S32 COMMON_VENC_Create(VENC_CHN VeChn, AX_PAYLOAD_TYPE_E enType, SAMPLE_VENC_ AX_U16 qpMax = 51; AX_U16 qpMinI = 1; AX_U16 qpMaxI = 51; + AX_U16 qpStill = 0; AX_U16 u32IQp = 25; AX_U16 u32PQp = 30; AX_VENC_GOP_MODE_E gopType = AX_VENC_GOPMODE_NORMALP; @@ -152,6 +153,7 @@ AX_S32 COMMON_VENC_Create(VENC_CHN VeChn, AX_PAYLOAD_TYPE_E enType, SAMPLE_VENC_ qpMax = pstArg->qpMax; qpMinI = pstArg->qpMinI; qpMaxI = pstArg->qpMaxI; + qpStill = pstArg->qpStill; gopType = pstArg->gopMode; intraQpDelta = pstArg->IQpDelta; qpMapType = pstArg->qpMapQpType; @@ -183,9 +185,13 @@ AX_S32 COMMON_VENC_Create(VENC_CHN VeChn, AX_PAYLOAD_TYPE_E enType, SAMPLE_VENC_ stVencChnAttr.stVencAttr.stCropCfg.stRect.u32Height = pstArg->cropH; } - if (pstArg->bCoreCoWork) { - stVencChnAttr.stVencAttr.flag |= VENC_CHN_ENABLE_MULTICORE; - } + if (pstArg->bCoreCoWork) + stVencChnAttr.stVencAttr.flag |= AX_VENC_CHN_ENABLE_MULTICORE; + + if (pstArg->bStrmCached) + stVencChnAttr.stVencAttr.flag |= AX_VENC_STREAM_CACHED; + if (pstArg->bAttachHdr) + stVencChnAttr.stVencAttr.flag |= AX_VENC_HEADER_ATTACH_TO_PB; switch (stVencChnAttr.stVencAttr.enType) { case PT_H265: { @@ -231,6 +237,7 @@ AX_S32 COMMON_VENC_Create(VENC_CHN VeChn, AX_PAYLOAD_TYPE_E enType, SAMPLE_VENC_ stH265Vbr.u32MinIQp = qpMinI; stH265Vbr.u32MaxIQp = qpMaxI; stH265Vbr.s32IntraQpDelta = intraQpDelta; + stH265Vbr.u32ChangePos = pstArg->chgPos; stH265Vbr.stQpmapInfo.enQpmapQpType = qpMapType; stH265Vbr.stQpmapInfo.enQpmapBlockType = qpMapBlkType; @@ -249,6 +256,9 @@ AX_S32 COMMON_VENC_Create(VENC_CHN VeChn, AX_PAYLOAD_TYPE_E enType, SAMPLE_VENC_ stH265AVbr.u32MinIQp = qpMinI; stH265AVbr.u32MaxIQp = qpMaxI; stH265AVbr.s32IntraQpDelta = intraQpDelta; + stH265AVbr.u32ChangePos = pstArg->chgPos; + stH265AVbr.u32MinStillPercent = pstArg->stillPercent; + stH265AVbr.u32MaxStillQp = qpStill; stH265AVbr.stQpmapInfo.enQpmapQpType = qpMapType; stH265AVbr.stQpmapInfo.enQpmapBlockType = qpMapBlkType; @@ -356,6 +366,7 @@ AX_S32 COMMON_VENC_Create(VENC_CHN VeChn, AX_PAYLOAD_TYPE_E enType, SAMPLE_VENC_ stH264Vbr.u32MinIQp = qpMinI; stH264Vbr.u32MaxIQp = qpMaxI; stH264Vbr.s32IntraQpDelta = intraQpDelta; + stH264Vbr.u32ChangePos = pstArg->chgPos; stH264Vbr.stQpmapInfo.enQpmapQpType = qpMapType; stH264Vbr.stQpmapInfo.enQpmapBlockType = qpMapBlkType; @@ -375,6 +386,9 @@ AX_S32 COMMON_VENC_Create(VENC_CHN VeChn, AX_PAYLOAD_TYPE_E enType, SAMPLE_VENC_ stH264AVbr.u32MinIQp = qpMinI; stH264AVbr.u32MaxIQp = qpMaxI; stH264AVbr.s32IntraQpDelta = intraQpDelta; + stH264AVbr.u32ChangePos = pstArg->chgPos; + stH264AVbr.u32MinStillPercent = pstArg->stillPercent; + stH264AVbr.u32MaxStillQp = qpStill; stH264AVbr.stQpmapInfo.enQpmapQpType = qpMapType; stH264AVbr.stQpmapInfo.enQpmapBlockType = qpMapBlkType; diff --git a/msp/sample/common/common_venc.h b/msp/sample/common/common_venc.h index f1f4971..1f6cf12 100644 --- a/msp/sample/common/common_venc.h +++ b/msp/sample/common/common_venc.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -30,6 +30,8 @@ #define VENC_FBC_LOSSLESS (1) #define VENC_FBC_LOSSY (2) +#define VENC_STREAM_CACHED (0x2) + #define TILE_ALIGN(var, align) ((var + align - 1) & (~(align - 1))) typedef AX_S32 (*TestFunction)(AX_S32 VeChn, AX_VOID *handle); @@ -118,6 +120,9 @@ typedef struct axSAMPLE_VENC_CMD_PARA_T AX_U32 qpMax; AX_U32 qpMinI; AX_U32 qpMaxI; + AX_U32 chgPos; + AX_U32 stillPercent; + AX_U32 qpStill; AX_U32 maxIprop; /* Range:[1, 100]; the max I P size ratio */ AX_U32 minIprop; /* Range:[1, u32MaxIprop]; the min I P size ratio */ AX_U32 IQp; /* RW; Range:[0, 51]; qp of the i frame */ @@ -228,6 +233,8 @@ typedef struct axSAMPLE_VENC_CMD_PARA_T AX_U8 inFifoDep; AX_U8 outFifoDep; AX_BOOL bCoreCoWork; + AX_BOOL bStrmCached; + AX_BOOL bAttachHdr; /* attach headers before PB frames */ AX_U8 strmBitDep; /* output bit depth of stream */ /* VUI */ AX_BOOL bSignalPresent; diff --git a/msp/sample/common/common_venc_log.c b/msp/sample/common/common_venc_log.c index 2924afb..2313727 100644 --- a/msp/sample/common/common_venc_log.c +++ b/msp/sample/common/common_venc_log.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_venc_log.h b/msp/sample/common/common_venc_log.h index 8b629e0..7930a26 100644 --- a/msp/sample/common/common_venc_log.h +++ b/msp/sample/common/common_venc_log.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_vin.c b/msp/sample/common/common_vin.c index 4cc9c4e..30e33c7 100644 --- a/msp/sample/common/common_vin.c +++ b/msp/sample/common/common_vin.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_vin.h b/msp/sample/common/common_vin.h index 9086600..300a657 100644 --- a/msp/sample/common/common_vin.h +++ b/msp/sample/common/common_vin.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_vo.c b/msp/sample/common/common_vo.c index 1496bc4..86bfd09 100644 --- a/msp/sample/common/common_vo.c +++ b/msp/sample/common/common_vo.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -89,6 +89,8 @@ AX_S32 SAMPLE_COMM_VO_StartDev(SAMPLE_VO_DEV_CONFIG_S *pstVoDevConf) stVoPubAttr.stHdmiAttr.bEnableHdmi = AX_FALSE; } + stVoPubAttr.u32Flags = pstVoDevConf->u32Flags; + s32Ret = AX_VO_SetPubAttr(pstVoDevConf->u32VoDev, &stVoPubAttr); if (s32Ret) { SAMPLE_PRT("failed with %#x, dev%d\n", s32Ret, pstVoDevConf->u32VoDev); @@ -148,15 +150,42 @@ AX_S32 SAMPLE_COMM_VO_StopDev(SAMPLE_VO_DEV_CONFIG_S *pstVoDevConf) static AX_S32 SAMPLE_COMM_VO_GLayerBind(SAMPLE_VO_GRAPHIC_CONFIG_S *pstGraphicLayerConf) { AX_S32 i, s32Ret = 0; + SAMPLE_FB_CONFIG_S *pstFbConf; if (pstGraphicLayerConf->u32FbNum) { + AX_U32 u32Vrefresh; + for (i = 0; i < pstGraphicLayerConf->u32FbNum; i++) { - s32Ret = AX_VO_BindGraphicLayer(pstGraphicLayerConf->stFbConf[i].u32Index, pstGraphicLayerConf->bindVoDev); + pstFbConf = &pstGraphicLayerConf->stFbConf[i]; + s32Ret = AX_VO_BindGraphicLayer(pstFbConf->u32Index, pstGraphicLayerConf->bindVoDev); if (s32Ret) { - SAMPLE_PRT("failed with %#x!, GraphicLayer:%d, VoDev:%d\n", s32Ret, pstGraphicLayerConf->stFbConf[i].u32Index, + SAMPLE_PRT("failed with %#x!, GraphicLayer:%d, VoDev:%d\n", s32Ret, pstFbConf->u32Index, pstGraphicLayerConf->bindVoDev); return s32Ret; } + + s32Ret = AX_VO_GetGraphicLayerVrefresh(pstGraphicLayerConf->bindVoDev, pstFbConf->u32Index, &u32Vrefresh); + if (s32Ret) { + SAMPLE_PRT("failed with %#x!, VoDev:%d, GraphicLayer:%d\n", s32Ret, pstGraphicLayerConf->bindVoDev, pstFbConf->u32Index); + return s32Ret; + } + + SAMPLE_PRT("VoDev%d-GraphicLayer%d set before Vrefresh:%d\n", pstGraphicLayerConf->bindVoDev, pstFbConf->u32Index, u32Vrefresh); + + s32Ret = AX_VO_SetGraphicLayerVrefresh(pstGraphicLayerConf->bindVoDev, pstFbConf->u32Index, pstFbConf->u32Vrefresh); + if (s32Ret) { + SAMPLE_PRT("failed with %#x!, VoDev:%d, GraphicLayer:%d, Vrefresh:%d\n", s32Ret, pstGraphicLayerConf->bindVoDev, + pstFbConf->u32Index, pstFbConf->u32Vrefresh); + return s32Ret; + } + + s32Ret = AX_VO_GetGraphicLayerVrefresh(pstGraphicLayerConf->bindVoDev, pstFbConf->u32Index, &u32Vrefresh); + if (s32Ret) { + SAMPLE_PRT("failed with %#x!, VoDev:%d, GraphicLayer:%d\n", s32Ret, pstGraphicLayerConf->bindVoDev, pstFbConf->u32Index); + return s32Ret; + } + + SAMPLE_PRT("VoDev%d-GraphicLayer%d set after Vrefresh:%d\n", pstGraphicLayerConf->bindVoDev, pstFbConf->u32Index, u32Vrefresh); } pstGraphicLayerConf->s32InitFlag = 1; @@ -400,14 +429,6 @@ AX_S32 SAMPLE_COMM_VO_StartChn(SAMPLE_VO_LAYER_CONFIG_S *pstVoLayerConf) return s32Ret; } - if (pstVoLayerConf->u32ChnFrameRate) { - s32Ret = AX_VO_SetChnFrameRate(pstVoLayerConf->u32VoLayer, k, pstVoLayerConf->u32ChnFrameRate); - if (s32Ret) { - SAMPLE_PRT("failed with %#x!\n", s32Ret); - return s32Ret; - } - } - s32Ret = AX_VO_EnableChn(pstVoLayerConf->u32VoLayer, k); if (s32Ret) { SAMPLE_PRT("failed with %#x!\n", s32Ret); diff --git a/msp/sample/common/common_vo.h b/msp/sample/common/common_vo.h index 0810ea2..cc2961e 100644 --- a/msp/sample/common/common_vo.h +++ b/msp/sample/common/common_vo.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -96,6 +96,7 @@ typedef struct axSAMPLE_FB_CONFIG_S { AX_U32 u32ResoW; AX_U32 u32ResoH; AX_U32 u32Fmt; + AX_U32 u32Vrefresh; AX_U32 u32ColorKeyEn; AX_U32 u32ColorKeyInv; @@ -132,6 +133,7 @@ typedef struct axSAMPLE_COMM_VO_DEV_CONFIG_S { AX_VO_INTF_SYNC_E enIntfSync; AX_VO_SYNC_INFO_T stSyncInfo; AX_VO_OUT_FMT_E enVoOutfmt; + AX_U32 u32Flags; AX_U32 u32SyncIndex; AX_U32 u32HdmiMode; diff --git a/msp/sample/common/common_vo_pattern.c b/msp/sample/common/common_vo_pattern.c index 27aef66..19aec2c 100644 --- a/msp/sample/common/common_vo_pattern.c +++ b/msp/sample/common/common_vo_pattern.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/common/common_vo_pattern.h b/msp/sample/common/common_vo_pattern.h index 65e7f3c..da0489d 100644 --- a/msp/sample/common/common_vo_pattern.h +++ b/msp/sample/common/common_vo_pattern.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/dmadim/sample_dmadim.c b/msp/sample/dmadim/sample_dmadim.c index a579b34..8903ace 100644 --- a/msp/sample/dmadim/sample_dmadim.c +++ b/msp/sample/dmadim/sample_dmadim.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/dmaxor/sample_dmaxor.c b/msp/sample/dmaxor/sample_dmaxor.c index 7b25cea..f352259 100644 --- a/msp/sample/dmaxor/sample_dmaxor.c +++ b/msp/sample/dmaxor/sample_dmaxor.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/efuse/sample_efuse.c b/msp/sample/efuse/sample_efuse.c index 02f0eb3..0cec30c 100644 --- a/msp/sample/efuse/sample_efuse.c +++ b/msp/sample/efuse/sample_efuse.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/efuse_hash/efuse_hash_tool.c b/msp/sample/efuse_hash/efuse_hash_tool.c index 3fbd3e0..3e18087 100644 --- a/msp/sample/efuse_hash/efuse_hash_tool.c +++ b/msp/sample/efuse_hash/efuse_hash_tool.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/isp_3a/sample_isp_3a.c b/msp/sample/isp_3a/sample_isp_3a.c index bbc6f5d..2483a8f 100644 --- a/msp/sample/isp_3a/sample_isp_3a.c +++ b/msp/sample/isp_3a/sample_isp_3a.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/isp_3a/sample_isp_3a.h b/msp/sample/isp_3a/sample_isp_3a.h index 0154dba..e1d9c8a 100644 --- a/msp/sample/isp_3a/sample_isp_3a.h +++ b/msp/sample/isp_3a/sample_isp_3a.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_16_2804642.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_16_2804642.axmodel new file mode 100644 index 0000000..b9a3d17 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_16_2804642.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_192_6100400.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_192_6100400.axmodel new file mode 100644 index 0000000..f6dc4df Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_192_6100400.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_32_3029083.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_32_3029083.axmodel new file mode 100644 index 0000000..cea7469 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_32_3029083.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_384_33061282.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_384_33061282.axmodel new file mode 100644 index 0000000..b3be5f1 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_384_33061282.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_48_3285889.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_48_3285889.axmodel new file mode 100644 index 0000000..20419d2 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_48_3285889.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_64_3592467.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_64_3592467.axmodel new file mode 100644 index 0000000..33873ba Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_64_3592467.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_96_4333586.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_96_4333586.axmodel new file mode 100644 index 0000000..8ce24cb Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_100000_96_4333586.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_16_987814.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_16_987814.axmodel new file mode 100644 index 0000000..ba623b0 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_16_987814.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_192_628220.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_192_628220.axmodel new file mode 100644 index 0000000..0d0a987 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_192_628220.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_32_1098068.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_32_1098068.axmodel new file mode 100644 index 0000000..deb9240 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_32_1098068.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_384_1034278.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_384_1034278.axmodel new file mode 100644 index 0000000..311ed7b Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_384_1034278.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_48_1331094.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_48_1331094.axmodel new file mode 100644 index 0000000..e5b7e93 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_48_1331094.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_64_384042.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_64_384042.axmodel new file mode 100644 index 0000000..453d358 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_64_384042.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_96_423295.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_96_423295.axmodel new file mode 100644 index 0000000..05ec745 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_256_10000_96_423295.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_16_5137814.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_16_5137814.axmodel new file mode 100644 index 0000000..133ecf6 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_16_5137814.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_192_9027386.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_192_9027386.axmodel new file mode 100644 index 0000000..23beef5 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_192_9027386.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_32_5452209.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_32_5452209.axmodel new file mode 100644 index 0000000..b9ec38a Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_32_5452209.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_384_133460697.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_384_133460697.axmodel new file mode 100644 index 0000000..97d4939 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_384_133460697.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_48_5740747.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_48_5740747.axmodel new file mode 100644 index 0000000..69abfe5 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_48_5740747.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_64_6124186.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_64_6124186.axmodel new file mode 100644 index 0000000..604dd68 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_64_6124186.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_96_6578800.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_96_6578800.axmodel new file mode 100644 index 0000000..1dce885 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_100000_96_6578800.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_16_620031.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_16_620031.axmodel new file mode 100644 index 0000000..f14f891 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_16_620031.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_192_994978.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_192_994978.axmodel new file mode 100644 index 0000000..70a8716 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_192_994978.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_32_633138.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_32_633138.axmodel new file mode 100644 index 0000000..cdec455 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_32_633138.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_384_1920538.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_384_1920538.axmodel new file mode 100644 index 0000000..b18cadd Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_384_1920538.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_48_642351.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_48_642351.axmodel new file mode 100644 index 0000000..f8d23cc Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_48_642351.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_64_651588.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_64_651588.axmodel new file mode 100644 index 0000000..deae2c5 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_64_651588.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_96_709019.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_96_709019.axmodel new file mode 100644 index 0000000..bf37841 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s16_512_10000_96_709019.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_16_1502771.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_16_1502771.axmodel new file mode 100644 index 0000000..9777b64 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_16_1502771.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_192_4795676.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_192_4795676.axmodel new file mode 100644 index 0000000..e284b77 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_192_4795676.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_32_1816626.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_32_1816626.axmodel new file mode 100644 index 0000000..cf02a8e Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_32_1816626.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_384_8401334.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_384_8401334.axmodel new file mode 100644 index 0000000..db29ee9 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_384_8401334.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_48_2127521.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_48_2127521.axmodel new file mode 100644 index 0000000..5472b36 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_48_2127521.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_64_2388399.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_64_2388399.axmodel new file mode 100644 index 0000000..3b4dcfc Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_64_2388399.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_96_2998813.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_96_2998813.axmodel new file mode 100644 index 0000000..446b132 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_100000_96_2998813.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_16_333510.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_16_333510.axmodel new file mode 100644 index 0000000..3fb5aac Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_16_333510.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_192_1110270.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_192_1110270.axmodel new file mode 100644 index 0000000..a45fc5c Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_192_1110270.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_32_398854.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_32_398854.axmodel new file mode 100644 index 0000000..8c01d5c Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_32_398854.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_384_890792.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_384_890792.axmodel new file mode 100644 index 0000000..e9b130f Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_384_890792.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_48_464199.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_48_464199.axmodel new file mode 100644 index 0000000..440fb70 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_48_464199.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_64_529731.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_64_529731.axmodel new file mode 100644 index 0000000..dc92794 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_64_529731.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_96_672290.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_96_672290.axmodel new file mode 100644 index 0000000..67a0e7e Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_256_10000_96_672290.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_16_2691449.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_16_2691449.axmodel new file mode 100644 index 0000000..e986a01 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_16_2691449.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_192_6076493.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_192_6076493.axmodel new file mode 100644 index 0000000..d7122d8 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_192_6076493.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_32_2987018.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_32_2987018.axmodel new file mode 100644 index 0000000..ac95396 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_32_2987018.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_384_11307447.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_384_11307447.axmodel new file mode 100644 index 0000000..074f4ff Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_384_11307447.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_48_3328222.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_48_3328222.axmodel new file mode 100644 index 0000000..815cbaa Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_48_3328222.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_64_3624888.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_64_3624888.axmodel new file mode 100644 index 0000000..f9e6cdc Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_64_3624888.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_96_4186469.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_96_4186469.axmodel new file mode 100644 index 0000000..63c3af6 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_100000_96_4186469.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_16_610966.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_16_610966.axmodel new file mode 100644 index 0000000..31c8d00 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_16_610966.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_192_657784.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_192_657784.axmodel new file mode 100644 index 0000000..ffcd319 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_192_657784.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_32_685931.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_32_685931.axmodel new file mode 100644 index 0000000..ae3b4aa Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_32_685931.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_384_1114493.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_384_1114493.axmodel new file mode 100644 index 0000000..ac41bcf Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_384_1114493.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_48_759443.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_48_759443.axmodel new file mode 100644 index 0000000..69e7d8a Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_48_759443.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_64_834621.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_64_834621.axmodel new file mode 100644 index 0000000..2a25170 Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_64_834621.axmodel differ diff --git a/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_96_1008470.axmodel b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_96_1008470.axmodel new file mode 100644 index 0000000..eaa387d Binary files /dev/null and b/msp/sample/ive/data/ive/matmul/matmul_models/v1_matmul_npu3_s8_512_10000_96_1008470.axmodel differ diff --git a/msp/sample/ive/sample_ive.c b/msp/sample/ive/sample_ive.c index 220ce2e..8a81996 100644 --- a/msp/sample/ive/sample_ive.c +++ b/msp/sample/ive/sample_ive.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -166,16 +166,17 @@ static AX_S32 SAMPLE_IVE_TestMultiCalcProc(TEST_MULTI_CALC_T* pstTestMultiCalc) return s32Ret; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(100 * 1000); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(100 * 1000); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; - } - s32Ret = SAMPLE_COMM_IVE_WriteFile(&pstTestMultiCalc->stDst, pstTestMultiCalc->pFpDst); if (AX_SUCCESS != s32Ret) { SAMPLE_IVE_PRT("Error,Write dst file failed!\n"); diff --git a/msp/sample/ive/sample_ive.h b/msp/sample/ive/sample_ive.h index 5653883..353af46 100644 --- a/msp/sample/ive/sample_ive.h +++ b/msp/sample/ive/sample_ive.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ive/sample_ive_16to8bit.c b/msp/sample/ive/sample_ive_16to8bit.c index f2381ee..06239e7 100644 --- a/msp/sample/ive/sample_ive_16to8bit.c +++ b/msp/sample/ive/sample_ive_16to8bit.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -152,15 +152,17 @@ static AX_S32 SAMPLE_IVE_Test16To8BitProc(TEST_16TO8_T* pstTest16To8Bit, AX_CHAR SAMPLE_IVE_PRT("Error(%#x),AX_IVE_16BitTo8Bit failed!\n",s32Ret); return s32Ret; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run 16BitTo8Bit task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_ccl.c b/msp/sample/ive/sample_ive_ccl.c index c56f5d3..9cd4d75 100644 --- a/msp/sample/ive/sample_ive_ccl.c +++ b/msp/sample/ive/sample_ive_ccl.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -254,15 +254,17 @@ static AX_S32 SAMPLE_IVE_TestCclProc(TEST_CCL_T* pstTestCcl, AX_CHAR *pchParamsL SAMPLE_IVE_PRT("Error(%#x),AX_IVE_CCL failed!\n",s32Ret); return s32Ret; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret){ - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret){ + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run CCL task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_common.c b/msp/sample/ive/sample_ive_common.c index 016e511..7234e24 100644 --- a/msp/sample/ive/sample_ive_common.c +++ b/msp/sample/ive/sample_ive_common.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ive/sample_ive_common.h b/msp/sample/ive/sample_ive_common.h index 9433dfa..a48527a 100644 --- a/msp/sample/ive/sample_ive_common.h +++ b/msp/sample/ive/sample_ive_common.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ive/sample_ive_crop_resize.c b/msp/sample/ive/sample_ive_crop_resize.c index 653c706..d440983 100644 --- a/msp/sample/ive/sample_ive_crop_resize.c +++ b/msp/sample/ive/sample_ive_crop_resize.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -207,7 +207,7 @@ static AX_S32 SAMPLE_IVE_TestCropResize_Init(TEST_CROP_RESIZE_T* pstTestCropResi u32HeightOut = pstTestCropResize->stBox[0].u16Height; } if (u32Mode == 0 && u32Engine == AX_IVE_ENGINE_IVE) { - s32Ret = SAMPLE_COMM_IVE_CreateImage(&(pstTestCropResize->stSrc), (AX_IVE_IMAGE_TYPE_E)IMAGE_TYPE_SPECIFY(as32Type[0], AX_IVE_IMAGE_TYPE_U8C1), u32Width, u32Height); + s32Ret = SAMPLE_COMM_IVE_CreateImage(&(pstTestCropResize->stSrc), (AX_IVE_IMAGE_TYPE_E)as32Type[0], u32Width, u32Height); if (AX_SUCCESS != s32Ret) { SAMPLE_IVE_PRT("Error(%#x),Create src image failed!\n", s32Ret); SAMPLE_IVE_TestCropResize_Uninit(pstTestCropResize); @@ -253,7 +253,7 @@ static AX_S32 SAMPLE_IVE_TestCropResize_Init(TEST_CROP_RESIZE_T* pstTestCropResi } SAMPLE_IVE_PRT("u32WidthOut:%d, u32HeightOut:%d\n", u32WidthOut, u32HeightOut); if (u32Mode == 0 && u32Engine == AX_IVE_ENGINE_IVE) { - s32Ret = SAMPLE_COMM_IVE_CreateImage(&(pstTestCropResize->stDst[i]), (AX_IVE_IMAGE_TYPE_E)IMAGE_TYPE_SPECIFY(as32Type[0], AX_IVE_IMAGE_TYPE_U8C1), u32WidthOut, u32HeightOut); + s32Ret = SAMPLE_COMM_IVE_CreateImage(&(pstTestCropResize->stDst[i]), (AX_IVE_IMAGE_TYPE_E)as32Type[1], u32WidthOut, u32HeightOut); if (AX_SUCCESS != s32Ret) { SAMPLE_IVE_PRT("Error(%#x),Create dst image failed!\n", s32Ret); SAMPLE_IVE_TestCropResize_Uninit(pstTestCropResize); diff --git a/msp/sample/ive/sample_ive_crop_resize2.c b/msp/sample/ive/sample_ive_crop_resize2.c index 184b261..bbe6b41 100644 --- a/msp/sample/ive/sample_ive_crop_resize2.c +++ b/msp/sample/ive/sample_ive_crop_resize2.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ive/sample_ive_csc.c b/msp/sample/ive/sample_ive_csc.c index c4fe15b..cff162e 100644 --- a/msp/sample/ive/sample_ive_csc.c +++ b/msp/sample/ive/sample_ive_csc.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ive/sample_ive_dma.c b/msp/sample/ive/sample_ive_dma.c index 979661b..a95292d 100644 --- a/msp/sample/ive/sample_ive_dma.c +++ b/msp/sample/ive/sample_ive_dma.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -215,15 +215,17 @@ static AX_S32 SAMPLE_IVE_TestDmaProc(TEST_DMA_T* pstTestDma) SAMPLE_IVE_PRT("Error(%#x),AX_IVE_DMA failed!\n",s32Ret); return s32Ret; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run DMA task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_dual_pics_calc.c b/msp/sample/ive/sample_ive_dual_pics_calc.c index 9a161a1..2bc5bd1 100644 --- a/msp/sample/ive/sample_ive_dual_pics_calc.c +++ b/msp/sample/ive/sample_ive_dual_pics_calc.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -234,15 +234,17 @@ static AX_S32 SAMPLE_IVE_TestDualPicCalcProc(TEST_DUALPIC_CALC_T* pstTestDualPic SAMPLE_IVE_PRT("Error(%#x), not support!\n",s32Ret); return -1; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run DualPicsCalc task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_edge.c b/msp/sample/ive/sample_ive_edge.c index 2716d80..6de0173 100644 --- a/msp/sample/ive/sample_ive_edge.c +++ b/msp/sample/ive/sample_ive_edge.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -196,15 +196,17 @@ static AX_S32 SAMPLE_IVE_TestEdgeDetectionProc(TEST_EDGE_DETECTION_T* pstTestEdg return s32Ret; } } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run Edge (HysEdge or CannyEdge) task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_erode_dilate.c b/msp/sample/ive/sample_ive_erode_dilate.c index 6dcad61..42cb005 100644 --- a/msp/sample/ive/sample_ive_erode_dilate.c +++ b/msp/sample/ive/sample_ive_erode_dilate.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -170,15 +170,18 @@ static AX_S32 SAMPLE_IVE_TestEDCalcProc(TEST_ED_CALC_T* pstTestEDCalce, AX_U32 u return s32Ret; } } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run ED (Erode or Dilate) task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_filter.c b/msp/sample/ive/sample_ive_filter.c index 6f915e8..41996c4 100644 --- a/msp/sample/ive/sample_ive_filter.c +++ b/msp/sample/ive/sample_ive_filter.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -158,15 +158,17 @@ static AX_S32 SAMPLE_IVE_TestFilterProc(TEST_FILTER_T* pstTestFilter, AX_CHAR *p SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Filter failed!\n",s32Ret); return s32Ret; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run Filter task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_gmm.c b/msp/sample/ive/sample_ive_gmm.c index e2daeb0..dd6a60e 100644 --- a/msp/sample/ive/sample_ive_gmm.c +++ b/msp/sample/ive/sample_ive_gmm.c @@ -1,14 +1,13 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ - #include "sample_ive.h" typedef struct axTEST_GMM_T { @@ -273,15 +272,17 @@ static AX_S32 SAMPLE_IVE_TestGmmProc(TEST_GMM_T* pstTestGmm, AX_U32 u32Mode, AX_ SAMPLE_IVE_PRT("Error(%#x),AX_IVE_GMM/GMM2 failed!\n",s32Ret); return s32Ret; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if ( bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run GMM(GMM or GMM2) task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_hist.c b/msp/sample/ive/sample_ive_hist.c index 636286c..acb4713 100644 --- a/msp/sample/ive/sample_ive_hist.c +++ b/msp/sample/ive/sample_ive_hist.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -67,6 +67,7 @@ static AX_VOID SAMPLE_IVE_TestHist_Uninit(TEST_HIST_T* pstTestHist) { IVE_CMM_FREE(pstTestHist->stSrc.au64PhyAddr[0], pstTestHist->stSrc.au64VirAddr[0]); IVE_CMM_FREE(pstTestHist->stDst.u64PhyAddr, pstTestHist->stDst.u64VirAddr); + IVE_CMM_FREE(pstTestHist->stDstSave.u64PhyAddr, pstTestHist->stDstSave.u64VirAddr); if (NULL != pstTestHist->pFpSrc) { fclose(pstTestHist->pFpSrc); @@ -184,15 +185,17 @@ static AX_S32 SAMPLE_IVE_TestHistProc(TEST_HIST_T* pstTestHist, AX_U32 u32Mode, SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Hist/EqualizeHist failed!\n",s32Ret); return s32Ret; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run Hist(EqualizeHist or Hist) task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_integ.c b/msp/sample/ive/sample_ive_integ.c index 5c0e1a2..f18a593 100644 --- a/msp/sample/ive/sample_ive_integ.c +++ b/msp/sample/ive/sample_ive_integ.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -144,15 +144,17 @@ static AX_S32 SAMPLE_IVE_TestIntegProc(TEST_INTEG_T* pstTestInteg, AX_CHAR *pchP SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Integ failed!\n",s32Ret); return s32Ret; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run Integ task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_mag_ang.c b/msp/sample/ive/sample_ive_mag_ang.c index be42792..d8ab6bd 100644 --- a/msp/sample/ive/sample_ive_mag_ang.c +++ b/msp/sample/ive/sample_ive_mag_ang.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -142,15 +142,17 @@ static AX_S32 SAMPLE_IVE_TestMagAngProc(TEST_MAG_ANG_T* pstTestMagAng) SAMPLE_IVE_PRT("Error(%#x),AX_IVE_MagAndAng failed!\n",s32Ret); return s32Ret; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run MagAndAng task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_matmul.c b/msp/sample/ive/sample_ive_matmul.c index 07baae0..9857a38 100644 --- a/msp/sample/ive/sample_ive_matmul.c +++ b/msp/sample/ive/sample_ive_matmul.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -593,17 +593,13 @@ static AX_S32 SAMPLE_IVE_TestMatMul_Init(TEST_MAT_MUL_T* pstTestMatMul, AX_CHAR static AX_S32 SAMPLE_IVE_TestMatMulProc(TEST_MAT_MUL_T* pstTestMatMul, AX_U32 u32Engine) { AX_S32 s32Ret; - AX_IVE_MATMUL_HANDLE hHandle; + AX_IVE_HANDLE IveHandle; AX_BOOL bInstant = AX_TRUE; + AX_IVE_MATMUL_HANDLE hHandle; if (u32Engine != AX_IVE_ENGINE_NPU) { - s32Ret = AX_IVE_MAU_CreateMatMulHandle(&hHandle, NULL, u32Engine); - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_MAU_CreateMatMulHandle failed!\n",s32Ret); - return s32Ret; - } AX_U64 u64StartTime = SAMPLE_COMM_IVE_GetTime_US(); - s32Ret = AX_IVE_MAU_MatMul(hHandle, &pstTestMatMul->stMatMulInput, &pstTestMatMul->stMatMulOutput, &pstTestMatMul->stMauMatMulCtrl, u32Engine, bInstant); + s32Ret = AX_IVE_MAU_MatMul(&IveHandle, &pstTestMatMul->stMatMulInput, &pstTestMatMul->stMatMulOutput, &pstTestMatMul->stMauMatMulCtrl, u32Engine, bInstant); if (AX_SUCCESS != s32Ret) { SAMPLE_IVE_PRT("Error(%#x),AX_IVE_MAU_MatMul failed!\n",s32Ret); return s32Ret; @@ -611,24 +607,24 @@ static AX_S32 SAMPLE_IVE_TestMatMulProc(TEST_MAT_MUL_T* pstTestMatMul, AX_U32 u3 AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run MatMul with MAU task cost %lld us\n", u64EndTime - u64StartTime); } else { - s32Ret = AX_IVE_MAU_CreateMatMulHandle(&hHandle, &pstTestMatMul->stNpuMatMulCtrl, u32Engine); + s32Ret = AX_IVE_NPU_CreateMatMulHandle(&hHandle, &pstTestMatMul->stNpuMatMulCtrl); if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_MAU_CreateMatMulHandle failed!\n",s32Ret); + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_NPU_CreateMatMulHandle failed!\n",s32Ret); return s32Ret; } AX_U64 u64StartTime = SAMPLE_COMM_IVE_GetTime_US(); - s32Ret = AX_IVE_MAU_MatMul(hHandle, &pstTestMatMul->stMatMulInput, &pstTestMatMul->stMatMulOutput, NULL, u32Engine, bInstant); + s32Ret = AX_IVE_NPU_MatMul(hHandle, &pstTestMatMul->stMatMulInput, &pstTestMatMul->stMatMulOutput, u32Engine, bInstant); if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_MAU_MatMul failed!\n",s32Ret); + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_NPU_MatMul failed!\n",s32Ret); return s32Ret; } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run MatMul with NPU task cost %lld us\n", u64EndTime - u64StartTime); - } - s32Ret = AX_IVE_MAU_DestroyMatMulHandle(&hHandle, u32Engine); - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_MAU_DestroyMatMulHandle failed!\n",s32Ret); - return s32Ret; + s32Ret = AX_IVE_NPU_DestroyMatMulHandle(&hHandle); + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_NPU_DestroyMatMulHandle failed!\n",s32Ret); + return s32Ret; + } } s32Ret = Sample_MatMul_Check_Result(pstTestMatMul, u32Engine, g_bCheck); diff --git a/msp/sample/ive/sample_ive_sobel.c b/msp/sample/ive/sample_ive_sobel.c index 702e3f1..fb4d177 100644 --- a/msp/sample/ive/sample_ive_sobel.c +++ b/msp/sample/ive/sample_ive_sobel.c @@ -1,14 +1,13 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ - #include "sample_ive.h" typedef struct axTEST_SOBEL_T { @@ -159,15 +158,17 @@ static AX_S32 SAMPLE_IVE_TestSobelProc(TEST_SOBEL_T* pstTestSobel, AX_CHAR *pchP SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Sobel failed!\n",s32Ret); return s32Ret; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run Sobel task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ive/sample_ive_thresh.c b/msp/sample/ive/sample_ive_thresh.c index 540750b..b0a8232 100644 --- a/msp/sample/ive/sample_ive_thresh.c +++ b/msp/sample/ive/sample_ive_thresh.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -164,15 +164,17 @@ static AX_S32 SAMPLE_IVE_TestThreshProc(TEST_THRESH_T* pstTestThresh, AX_CHAR *p SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Thresh failed!\n",s32Ret); return s32Ret; } - s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { - usleep(1000*100); - SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + if (bInstant == AX_FALSE) { s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); - } - if (AX_SUCCESS != s32Ret) { - SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); - return s32Ret; + while (AX_ERR_IVE_QUERY_TIMEOUT == s32Ret) { + usleep(1000*100); + SAMPLE_IVE_PRT("AX_IVE_Query timeout, retry...\n"); + s32Ret = AX_IVE_Query(IveHandle, &bFinish, bBlock); + } + if (AX_SUCCESS != s32Ret) { + SAMPLE_IVE_PRT("Error(%#x),AX_IVE_Query failed!\n",s32Ret); + return s32Ret; + } } AX_U64 u64EndTime = SAMPLE_COMM_IVE_GetTime_US(); printf("Run Thresh task cost %lld us\n", u64EndTime - u64StartTime); diff --git a/msp/sample/ives/md/sample_md.c b/msp/sample/ives/md/sample_md.c index 4f23ac9..57334d0 100644 --- a/msp/sample/ives/md/sample_md.c +++ b/msp/sample/ives/md/sample_md.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ives/md/sample_md.h b/msp/sample/ives/md/sample_md.h index 2c11577..1ddd9c5 100644 --- a/msp/sample/ives/md/sample_md.h +++ b/msp/sample/ives/md/sample_md.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ives/od/sample_od.c b/msp/sample/ives/od/sample_od.c index 7cb74d9..6686931 100644 --- a/msp/sample/ives/od/sample_od.c +++ b/msp/sample/ives/od/sample_od.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ives/od/sample_od.h b/msp/sample/ives/od/sample_od.h index ec9a5c0..b1565b7 100644 --- a/msp/sample/ives/od/sample_od.h +++ b/msp/sample/ives/od/sample_od.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ives/sample_ives.c b/msp/sample/ives/sample_ives.c index f6dcb2e..40aa759 100644 --- a/msp/sample/ives/sample_ives.c +++ b/msp/sample/ives/sample_ives.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ives/sample_util.c b/msp/sample/ives/sample_util.c index 664ff56..4558a86 100644 --- a/msp/sample/ives/sample_util.c +++ b/msp/sample/ives/sample_util.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ives/sample_util.h b/msp/sample/ives/sample_util.h index 4f00807..3f4d9d3 100644 --- a/msp/sample/ives/sample_util.h +++ b/msp/sample/ives/sample_util.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ives/scd/sample_scd.c b/msp/sample/ives/scd/sample_scd.c index fcde9be..33e89d3 100644 --- a/msp/sample/ives/scd/sample_scd.c +++ b/msp/sample/ives/scd/sample_scd.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ives/scd/sample_scd.h b/msp/sample/ives/scd/sample_scd.h index 9b26960..d3136cd 100644 --- a/msp/sample/ives/scd/sample_scd.h +++ b/msp/sample/ives/scd/sample_scd.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ives/trace.h b/msp/sample/ives/trace.h index 1b6d346..8483868 100644 --- a/msp/sample/ives/trace.h +++ b/msp/sample/ives/trace.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/README.md b/msp/sample/ivps/README.md index 7f971ef..3bf4346 100644 --- a/msp/sample/ivps/README.md +++ b/msp/sample/ivps/README.md @@ -28,6 +28,7 @@ The input parameters are described as follows: --mosaic (optional) : draw mosaic API test --cover (optional) : draw line/polygon API test --pool_type (optional) : select pool type (0(default): common pool; 1: private pool; 2: user pool) + --cpudraw (optional) : cpu draw test --grp_id (optional) : set group id (0(default): [0, 256) -a (optional) : all the sync API test diff --git a/msp/sample/ivps/data/ivps_bitmap_text.h b/msp/sample/ivps/data/ivps_bitmap_text.h index d2ea8a1..d35ef1a 100644 --- a/msp/sample/ivps/data/ivps_bitmap_text.h +++ b/msp/sample/ivps/data/ivps_bitmap_text.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/ivps_venc/sample_ivps_venc.c b/msp/sample/ivps/ivps_venc/sample_ivps_venc.c index 39083be..5b3355c 100644 --- a/msp/sample/ivps/ivps_venc/sample_ivps_venc.c +++ b/msp/sample/ivps/ivps_venc/sample_ivps_venc.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/ivps_venc/sample_ivps_venc.h b/msp/sample/ivps/ivps_venc/sample_ivps_venc.h index fa6db45..3a0b311 100644 --- a/msp/sample/ivps/ivps_venc/sample_ivps_venc.h +++ b/msp/sample/ivps/ivps_venc/sample_ivps_venc.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/sample_ivps_change.c b/msp/sample/ivps/sample_ivps_change.c index 50958a4..cc6d325 100644 --- a/msp/sample/ivps/sample_ivps_change.c +++ b/msp/sample/ivps/sample_ivps_change.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/sample_ivps_dewarp.c b/msp/sample/ivps/sample_ivps_dewarp.c index 7cf4eee..011a899 100644 --- a/msp/sample/ivps/sample_ivps_dewarp.c +++ b/msp/sample/ivps/sample_ivps_dewarp.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -146,7 +146,7 @@ static AX_S32 SAMPLE_IVPS_Fisheye(const AX_VIDEO_FRAME_T *ptSrc, char *pStorePat AX_VIDEO_FRAME_T tDst = {0}; AX_BLK BlkId; AX_IVPS_GDC_ATTR_T *pGdc = &pSampleDewarp->tGdcAttr; - AX_IVPS_POINT_T tSrcPoint = {0}, tDstPoint = {0}; + AX_IVPS_POINT_NICE_T tSrcPoint = {0}, tDstPoint = {0}; AX_U64 nStartTime, nEndTime; nImgSize = CalcImgSize(pGdc->nDstStride, pGdc->nDstWidth, pGdc->nDstHeight, pGdc->eDstFormat, 16); @@ -156,14 +156,21 @@ static AX_S32 SAMPLE_IVPS_Fisheye(const AX_VIDEO_FRAME_T *ptSrc, char *pStorePat CHECK_RESULT(BufPoolBlockAddrGet(-1, nImgSize, &tDst.u64PhyAddr[0], (AX_VOID **)&tDst.u64VirAddr[0], &BlkId)); - tDstPoint.nX = 640; - tDstPoint.nY = 360; + tDstPoint.fX = 120; + tDstPoint.fY = 300; AX_IVPS_FisheyePointQueryDst2Src(&tSrcPoint, &tDstPoint, - ptSrc->u32Width, ptSrc->u32Height, 4, + ptSrc->u32Width, ptSrc->u32Height, 0, &pGdc->tFisheyeAttr); - printf("source point nX:%d nY:%d\n", tSrcPoint.nX, tSrcPoint.nY); + printf("SRC point nX:%f nY:%f\n", tSrcPoint.fX, tSrcPoint.fY); + + AX_IVPS_FisheyePointQuerySrc2Dst(&tDstPoint, &tSrcPoint, + ptSrc->u32Width, ptSrc->u32Height, 0, + &pGdc->tFisheyeAttr); + printf("DST point nX:%f nY:%f\n", tDstPoint.fX, tDstPoint.fY); + + return 0; ret = AX_IVPS_GdcWorkCreate(&handle); if (ret) { diff --git a/msp/sample/ivps/sample_ivps_dewarp.h b/msp/sample/ivps/sample_ivps_dewarp.h index a87951c..923d9b5 100644 --- a/msp/sample/ivps/sample_ivps_dewarp.h +++ b/msp/sample/ivps/sample_ivps_dewarp.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/sample_ivps_link.c b/msp/sample/ivps/sample_ivps_link.c index 6ee9106..0df0bb4 100644 --- a/msp/sample/ivps/sample_ivps_link.c +++ b/msp/sample/ivps/sample_ivps_link.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/sample_ivps_main.c b/msp/sample/ivps/sample_ivps_main.c index 8bc0da0..dfaad9f 100644 --- a/msp/sample/ivps/sample_ivps_main.c +++ b/msp/sample/ivps/sample_ivps_main.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/sample_ivps_main.h b/msp/sample/ivps/sample_ivps_main.h index 908b35b..c4e3d26 100644 --- a/msp/sample/ivps/sample_ivps_main.h +++ b/msp/sample/ivps/sample_ivps_main.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/sample_ivps_pipeline.c b/msp/sample/ivps/sample_ivps_pipeline.c index 52e5b14..fb788b1 100644 --- a/msp/sample/ivps/sample_ivps_pipeline.c +++ b/msp/sample/ivps/sample_ivps_pipeline.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/sample_ivps_pipeline.h b/msp/sample/ivps/sample_ivps_pipeline.h index cad2875..e2d1e1c 100644 --- a/msp/sample/ivps/sample_ivps_pipeline.h +++ b/msp/sample/ivps/sample_ivps_pipeline.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/sample_ivps_region.c b/msp/sample/ivps/sample_ivps_region.c index 392236b..50c9f25 100644 --- a/msp/sample/ivps/sample_ivps_region.c +++ b/msp/sample/ivps/sample_ivps_region.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -103,7 +103,9 @@ static AX_VOID IVPS_RegionCfg0(AX_IVPS_RGN_DISP_GROUP_T *ptRegion) ptRegion->arrDisp[3].uDisp.tPolygon.tRect.nW = 100; ptRegion->arrDisp[3].uDisp.tPolygon.tRect.nH = 80; ptRegion->arrDisp[3].uDisp.tPolygon.bSolid = AX_FALSE; - ptRegion->arrDisp[3].uDisp.tPolygon.bCornerRect = AX_TRUE; + ptRegion->arrDisp[3].uDisp.tPolygon.tCornerRect.bEnable = AX_TRUE; + ptRegion->arrDisp[3].uDisp.tPolygon.tCornerRect.nHorLength = 20; + ptRegion->arrDisp[3].uDisp.tPolygon.tCornerRect.nVerLength = 10; ptRegion->arrDisp[3].uDisp.tPolygon.nLineWidth = 2; ptRegion->arrDisp[3].uDisp.tPolygon.nColor = GREEN; ptRegion->arrDisp[3].uDisp.tPolygon.nAlpha = 200; diff --git a/msp/sample/ivps/sample_ivps_region.h b/msp/sample/ivps/sample_ivps_region.h index 4d80b7a..1a59fac 100644 --- a/msp/sample/ivps/sample_ivps_region.h +++ b/msp/sample/ivps/sample_ivps_region.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/sync_api/sample_ivps_sync_api.c b/msp/sample/ivps/sync_api/sample_ivps_sync_api.c index 5237a0a..852fb2b 100644 --- a/msp/sample/ivps/sync_api/sample_ivps_sync_api.c +++ b/msp/sample/ivps/sync_api/sample_ivps_sync_api.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -26,6 +26,17 @@ AX_S32 SAMPLE_IVPS_SyncApi(const IVPS_ARG_T *ptArg, const SAMPLE_IVPS_GRP_T *pGr AX_VIDEO_FRAME_T tOverlay = {0}; AX_VIDEO_FRAME_T tInput[4] = {0}; AX_VIDEO_FRAME_T tSpAlpha = {0}; + SAMPLE_IVPS_COVER_T IvpsCover = {0}; + + if (ptArg->bCpuDraw == 1) + { + ret = SAMPLE_DrawCover(&pGrp->tFrameInput, &IvpsCover, pGrp->pFilePath); + if (ret) + { + ALOGE("SAMPLE_DrawCover, ret=0x%x.", ret); + return -1; + } + } if (ptArg->bPyraLite == 1) { diff --git a/msp/sample/ivps/sync_api/sample_ivps_sync_api.h b/msp/sample/ivps/sync_api/sample_ivps_sync_api.h index ebb940c..0a39102 100644 --- a/msp/sample/ivps/sync_api/sample_ivps_sync_api.h +++ b/msp/sample/ivps/sync_api/sample_ivps_sync_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/sync_api/sample_ivps_sync_api_common.c b/msp/sample/ivps/sync_api/sample_ivps_sync_api_common.c index 32ca071..4384372 100644 --- a/msp/sample/ivps/sync_api/sample_ivps_sync_api_common.c +++ b/msp/sample/ivps/sync_api/sample_ivps_sync_api_common.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/sync_api/sample_ivps_sync_api_region.c b/msp/sample/ivps/sync_api/sample_ivps_sync_api_region.c index e04e1c1..aa4270d 100644 --- a/msp/sample/ivps/sync_api/sample_ivps_sync_api_region.c +++ b/msp/sample/ivps/sync_api/sample_ivps_sync_api_region.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -129,11 +129,10 @@ AX_S32 SAMPLE_FillCanvas(AX_IVPS_RGN_CANVAS_INFO_T *ptCanvas) AX_S32 SAMPLE_DrawCover(const AX_VIDEO_FRAME_T *pstVFrame, const SAMPLE_IVPS_COVER_T *ptIvpsCover, char *strFilePath) { - AX_IVPS_RGN_CANVAS_INFO_T tCanvas; - AX_IVPS_GDI_ATTR_T tAttr; + AX_IVPS_RGN_CANVAS_INFO_T tCanvas = {0}; + AX_IVPS_GDI_ATTR_T tAttr = {0}; AX_VIDEO_FRAME_T tVFrame; - printf("AX_IVPS_DrawLine"); tCanvas.eFormat = AX_FORMAT_YUV420_SEMIPLANAR; tCanvas.pVirAddr = (AX_VOID *)((AX_ULONG)pstVFrame->u64VirAddr[0]); tCanvas.nStride = pstVFrame->u32PicStride[0]; @@ -174,7 +173,7 @@ AX_S32 SAMPLE_DrawCover(const AX_VIDEO_FRAME_T *pstVFrame, const SAMPLE_IVPS_COV AX_IVPS_DrawLine(&tCanvas, tAttr, tPoint, 4); - /* tAttr.nThick = 2; */ + tAttr.nThick = 5; tAttr.nColor = 0xFF0080; tPoint[0].nX = 800; tPoint[0].nY = 800; @@ -189,7 +188,7 @@ AX_S32 SAMPLE_DrawCover(const AX_VIDEO_FRAME_T *pstVFrame, const SAMPLE_IVPS_COV AX_IVPS_RECT_T tRect; - /* tAttr.nThick = 2; */ + tAttr.nThick = 10; tAttr.bSolid = AX_FALSE; tAttr.nColor = 0xFFFF80; tRect.nX = 1000; @@ -199,6 +198,19 @@ AX_S32 SAMPLE_DrawCover(const AX_VIDEO_FRAME_T *pstVFrame, const SAMPLE_IVPS_COV AX_IVPS_DrawRect(&tCanvas, tAttr, tRect); + tAttr.nThick = 3; + tAttr.bSolid = AX_FALSE; + tAttr.nColor = 0x0000FF; + tAttr.tCornerRect.bEnable = AX_TRUE; + tAttr.tCornerRect.nHorLength = 50; + tAttr.tCornerRect.nVerLength = 70; + tRect.nX = 1000; + tRect.nY = 100; + tRect.nW = 800; + tRect.nH = 500; + + AX_IVPS_DrawRect(&tCanvas, tAttr, tRect); + tVFrame = *pstVFrame; SaveFile(&tVFrame, 0, 0, strFilePath, "CPUDraw"); return 0; diff --git a/msp/sample/ivps/tools/ini_parser/ini_dict.c b/msp/sample/ivps/tools/ini_parser/ini_dict.c index 7b8e493..dde21a1 100644 --- a/msp/sample/ivps/tools/ini_parser/ini_dict.c +++ b/msp/sample/ivps/tools/ini_parser/ini_dict.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/tools/ini_parser/ini_dict.h b/msp/sample/ivps/tools/ini_parser/ini_dict.h index 598328e..157f4ba 100644 --- a/msp/sample/ivps/tools/ini_parser/ini_dict.h +++ b/msp/sample/ivps/tools/ini_parser/ini_dict.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/tools/ini_parser/ini_parser.c b/msp/sample/ivps/tools/ini_parser/ini_parser.c index 3969e41..985b536 100644 --- a/msp/sample/ivps/tools/ini_parser/ini_parser.c +++ b/msp/sample/ivps/tools/ini_parser/ini_parser.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/tools/ini_parser/ini_parser.h b/msp/sample/ivps/tools/ini_parser/ini_parser.h index e3cdf7a..2b5a641 100644 --- a/msp/sample/ivps/tools/ini_parser/ini_parser.h +++ b/msp/sample/ivps/tools/ini_parser/ini_parser.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/tools/ivps_global.h b/msp/sample/ivps/tools/ivps_global.h index e0a65d1..59604aa 100644 --- a/msp/sample/ivps/tools/ivps_global.h +++ b/msp/sample/ivps/tools/ivps_global.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/tools/ivps_help.c b/msp/sample/ivps/tools/ivps_help.c index 5da8323..4c03a61 100644 --- a/msp/sample/ivps/tools/ivps_help.c +++ b/msp/sample/ivps/tools/ivps_help.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/tools/ivps_help.h b/msp/sample/ivps/tools/ivps_help.h index 709146e..d7d7149 100644 --- a/msp/sample/ivps/tools/ivps_help.h +++ b/msp/sample/ivps/tools/ivps_help.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/tools/ivps_parser.c b/msp/sample/ivps/tools/ivps_parser.c index eaeab77..241a10a 100644 --- a/msp/sample/ivps/tools/ivps_parser.c +++ b/msp/sample/ivps/tools/ivps_parser.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -524,6 +524,7 @@ enum LONG_OPTION LONG_OPTION_CONFIG_DEWARP, LONG_OPTION_CONFIG_STREAM, LONG_OPTION_CONFIG_POOL_TYPE, + LONG_OPTION_CONFIG_CPU_DRAW, LONG_OPTION_CONFIG_GRP, LONG_OPTION_CONFIG_CHN, LONG_OPTION_CONFIG_PYRALITE, @@ -552,6 +553,7 @@ static struct option long_options[] = { {"dewarp", required_argument, NULL, LONG_OPTION_CONFIG_DEWARP}, {"stream", required_argument, NULL, LONG_OPTION_CONFIG_STREAM}, {"pool_type", required_argument, NULL, LONG_OPTION_CONFIG_POOL_TYPE}, + {"cpudraw", required_argument, NULL, LONG_OPTION_CONFIG_CPU_DRAW}, {"grp_id", required_argument, NULL, LONG_OPTION_CONFIG_GRP}, {"ch", required_argument, NULL, LONG_OPTION_CONFIG_CHN}, {"pyralite", required_argument, NULL, LONG_OPTION_CONFIG_PYRALITE}, @@ -718,6 +720,9 @@ int IVPS_ArgsParser(int argc, char *argv[], IVPS_ARG_T *ptArg) case LONG_OPTION_CONFIG_POOL_TYPE: ptArg->ePoolSrc = atoi(optarg); break; + case LONG_OPTION_CONFIG_CPU_DRAW: + ptArg->bCpuDraw = atoi(optarg); + break; case LONG_OPTION_CONFIG_CHN: CHECK_RESULT(ChnInfoParse(optarg, &ptArg->tChnInfo[ptArg->nOutChnNum])); ptArg->nOutChnNum++; diff --git a/msp/sample/ivps/tools/ivps_parser.h b/msp/sample/ivps/tools/ivps_parser.h index 9b5f71b..b784165 100644 --- a/msp/sample/ivps/tools/ivps_parser.h +++ b/msp/sample/ivps/tools/ivps_parser.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -72,6 +72,7 @@ extern "C" AX_BOOL bAlphaBlendV2; /* --alphablend2 */ AX_BOOL bAlphaBlendV3; /* --alphablend3*/ AX_POOL_SOURCE_E ePoolSrc; /* --pool_type */ + AX_BOOL bCpuDraw; /* --cpudraw */ AX_U8 bPyraLite; /* --pyralite */ AX_BOOL bPyraMode; /* --pyralite_mode */ AX_U8 nOutChnNum; diff --git a/msp/sample/ivps/tools/ivps_pattern.c b/msp/sample/ivps/tools/ivps_pattern.c index ea6dcb5..19f9b11 100644 --- a/msp/sample/ivps/tools/ivps_pattern.c +++ b/msp/sample/ivps/tools/ivps_pattern.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/tools/ivps_pattern.h b/msp/sample/ivps/tools/ivps_pattern.h index b867b38..264a6b3 100644 --- a/msp/sample/ivps/tools/ivps_pattern.h +++ b/msp/sample/ivps/tools/ivps_pattern.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/tools/ivps_util.c b/msp/sample/ivps/tools/ivps_util.c index 23e40aa..751599c 100644 --- a/msp/sample/ivps/tools/ivps_util.c +++ b/msp/sample/ivps/tools/ivps_util.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/ivps/tools/ivps_util.h b/msp/sample/ivps/tools/ivps_util.h index 930dcf7..a32d99c 100644 --- a/msp/sample/ivps/tools/ivps_util.h +++ b/msp/sample/ivps/tools/ivps_util.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/README.md b/msp/sample/npu/README.md index 63b7ca4..ca34e0e 100644 --- a/msp/sample/npu/README.md +++ b/msp/sample/npu/README.md @@ -1,10 +1,11 @@ # AX-Samples-AX650 -`AX-Samples-AX650` 提供运行 `Pulsar2` 编译生成的 `axmodel` 模型的 example 代码,是 `AX650` 智能算法模型运行的必要示例。 +`NPU Samples` 提供运行 `Pulsar2` 编译生成的 `axmodel` 模型的 example 代码,是演示 `AX650A/AX650N` 智能算法模型运行的必要示例。 已验证硬件平台 -- AX650 +- AX650A +- AX650N ## 1. 示例分类 @@ -24,29 +25,34 @@ ### 2.1 运行准备 -登录 AX650A 开发板为例,进入 `/opt/bin` 文件夹。 +以 AX650A DEMO 开发板为例,无需其他准备动作,运行所需的模型和图片文件已经存在于 `/opt/data/npu` 目录下,可执行 sample 已经存在于 `/opt/bin/` 目录下。 - 将 **Pulsar2** 生成的 **axmodel** 模型拷贝到 `/opt/bin` 路径下; - 将测试图片拷贝到 `/opt/bin` 路径下。 ``` -/opt/bin # ls -l -total 26628 --rwxrw-r-- 1 1000 1000 5713512 Nov 4 2022 sample_npu_classification --rwxrw-r-- 1 1000 1000 5921656 Nov 4 2022 sample_npu_yolov5s --rw-rw-r-- 1 1000 1000 140391 Nov 4 2022 cat.jpg --rw------- 1 1000 root 163759 Oct 17 2022 dog.jpg --rw-rw-r-- 1 1000 1000 5355828 Nov 4 2022 mobilenetv2.axmodel --rw------- 1 1000 root 9772840 Oct 17 2022 yolov5s.axmodel +root@ax650:~# tree /opt/data/npu/ +/opt/data/npu/ +|-- images +| |-- cat.jpg +| `-- dog.jpg +`-- models + |-- mobilenetv2.axmodel + `-- yolov5s.axmodel + +root@ax650:~# ls /opt/bin/sample_npu_* +/opt/bin/sample_npu_classification /opt/bin/sample_npu_yolov5s ``` ### 2.2 分类模型 +下面演示运行分类模型,该 sample 的代码在 SDK 的 `msp/sample/npu/sample_classification` 文件夹下: + ```bash -/opt/bin # ./sample_npu_classification -m mobilenetv2.axmodel -i cat.jpg --repeat 100 +root@ax650:~# /opt/bin/sample_npu_classification -m /opt/data/npu/models/mobilenetv2.axmodel -i /opt/data/npu/images/cat.jpg -r 100 -------------------------------------- -model file : mobilenetv2.axmodel -image file : cat.jpg +model file : /opt/data/npu/models/mobilenetv2.axmodel +image file : /opt/data/npu/images/cat.jpg img_h, img_w : 224 224 -------------------------------------- Engine creating handle is done. @@ -55,24 +61,26 @@ Engine get io info is done. Engine alloc io is done. Engine push input is done. -------------------------------------- -topk cost time:0.10 ms -9.7150, 283 -9.3965, 285 -8.9187, 281 -8.2816, 282 -7.4853, 463 +topk cost time:0.07 ms +9.5094, 285 +9.3773, 282 +9.2452, 281 +8.5849, 283 +7.6603, 287 -------------------------------------- -Repeat 100 times, avg time 0.82 ms, max_time 0.83 ms, min_time 0.82 ms +Repeat 100 times, avg time 0.72 ms, max_time 0.73 ms, min_time 0.72 ms -------------------------------------- ``` ### 2.3 检测模型 +下面演示运行检测模型,该 sample 的代码在 SDK 的 `msp/sample/npu/sample_yolov5s` 文件夹下: + ```bash -/opt/bin # ./sample_npu_yolov5s -m yolov5s.axmodel -i dog.jpg -r 100 +root@ax650:~# /opt/bin/sample_npu_yolov5s -m /opt/data/npu/models/yolov5s.axmodel -i /opt/data/npu/images/dog.jpg -r 100 -------------------------------------- -model file : yolov5s.axmodel -image file : dog.jpg +model file : /opt/data/npu/models/yolov5s.axmodel +image file : /opt/data/npu/images/dog.jpg img_h, img_w : 640 640 -------------------------------------- Engine creating handle is done. @@ -81,13 +89,31 @@ Engine get io info is done. Engine alloc io is done. Engine push input is done. -------------------------------------- -post process cost time:2.41 ms +post process cost time:2.50 ms -------------------------------------- -Repeat 100 times, avg time 8.16 ms, max_time 8.17 ms, min_time 8.15 ms +Repeat 100 times, avg time 7.66 ms, max_time 7.69 ms, min_time 7.65 ms -------------------------------------- detection num: 3 -16: 92%, [ 133, 211, 313, 546], dog - 2: 72%, [ 468, 73, 691, 174], car - 1: 56%, [ 163, 123, 571, 415], bicycle +16: 91%, [ 138, 218, 310, 541], dog + 2: 69%, [ 470, 76, 690, 173], car + 1: 56%, [ 158, 120, 569, 420], bicycle -------------------------------------- ``` + +### 2.4 更多的模型示例 + +限于 SDK 的容量限制,DEMO 板只预置了此两项 DEMO;为了充分演示 AX650 系列芯片的潜力,更多类型的 DEMO 现已在 github 提供,详见 [Github AX Sample](https://github.com/AXERA-TECH/ax-samples.git)。 +未完全统计,AX Sample 已经有如下多种示例: +- 物体检测 + - [YOLOv5s](https://github.com/AXERA-TECH/ax-samples/blob/main/examples/ax650/README.md#yolov5s) + - [YOLOv7-Tiny](https://github.com/AXERA-TECH/ax-samples/blob/main/examples/ax650/README.md#YOLOv7-Tiny) + - [YOLOv8s](https://github.com/AXERA-TECH/ax-samples/blob/main/examples/ax650/README.md#YOLOv8s) + - [YOLOX-S](https://github.com/AXERA-TECH/ax-samples/blob/main/examples/ax650/README.md#YOLOX-S) +- 物体分割 + - [YOLOv5-Seg](https://github.com/AXERA-TECH/ax-samples/blob/main/examples/ax650/README.md#YOLOv5-seg) +- 人脸检测 + - [SCRFD](https://github.com/AXERA-TECH/ax-samples/blob/main/examples/ax650/README.md#Scrfd) + - [YOLOv5-Face](https://github.com/AXERA-TECH/ax-samples/blob/main/examples/ax650/README.md#YOLOv5-Face) + - [YOLOv7-Face](https://github.com/AXERA-TECH/ax-samples/blob/main/examples/ax650/README.md#YOLOv7-Face) +- 人体关键点 + - [HRNet](https://github.com/AXERA-TECH/ax-samples/blob/main/examples/ax650/README.md#HRNet) diff --git a/msp/sample/npu/include/args.hpp b/msp/sample/npu/include/args.hpp index bfcb9d8..9af10c4 100644 --- a/msp/sample/npu/include/args.hpp +++ b/msp/sample/npu/include/args.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/include/common.hpp b/msp/sample/npu/include/common.hpp index 69e54e7..794566d 100644 --- a/msp/sample/npu/include/common.hpp +++ b/msp/sample/npu/include/common.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/include/detection.hpp b/msp/sample/npu/include/detection.hpp index 4c5d7f7..3aff674 100644 --- a/msp/sample/npu/include/detection.hpp +++ b/msp/sample/npu/include/detection.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/include/file.hpp b/msp/sample/npu/include/file.hpp index 9caa5a0..bda952c 100644 --- a/msp/sample/npu/include/file.hpp +++ b/msp/sample/npu/include/file.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/include/io.hpp b/msp/sample/npu/include/io.hpp index 8dee051..6b7aab8 100644 --- a/msp/sample/npu/include/io.hpp +++ b/msp/sample/npu/include/io.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -76,6 +76,8 @@ namespace middleware { memset(io_data, 0, sizeof(*io_data)); io_data->pInputs = new AX_ENGINE_IO_BUFFER_T[info->nInputSize]; + memset(io_data->pInputs, 0, sizeof(AX_ENGINE_IO_BUFFER_T) * info->nInputSize); + io_data->nInputSize = info->nInputSize; auto ret = 0; @@ -102,6 +104,8 @@ namespace middleware } io_data->pOutputs = new AX_ENGINE_IO_BUFFER_T[info->nOutputSize]; + memset(io_data->pOutputs, 0, sizeof(AX_ENGINE_IO_BUFFER_T) * info->nOutputSize); + io_data->nOutputSize = info->nOutputSize; for (AX_U32 i = 0; i < info->nOutputSize; ++i) { diff --git a/msp/sample/npu/include/pose.hpp b/msp/sample/npu/include/pose.hpp index 0150b91..c80870d 100644 --- a/msp/sample/npu/include/pose.hpp +++ b/msp/sample/npu/include/pose.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/include/score.hpp b/msp/sample/npu/include/score.hpp index 0e65e93..494b705 100644 --- a/msp/sample/npu/include/score.hpp +++ b/msp/sample/npu/include/score.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/include/split.hpp b/msp/sample/npu/include/split.hpp index 0f5d6fa..afe8a77 100644 --- a/msp/sample/npu/include/split.hpp +++ b/msp/sample/npu/include/split.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/include/timer.hpp b/msp/sample/npu/include/timer.hpp index a9b61b3..cab11fb 100644 --- a/msp/sample/npu/include/timer.hpp +++ b/msp/sample/npu/include/timer.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/include/topk.hpp b/msp/sample/npu/include/topk.hpp index 670abe1..bfb04fe 100644 --- a/msp/sample/npu/include/topk.hpp +++ b/msp/sample/npu/include/topk.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/include/yolo.hpp b/msp/sample/npu/include/yolo.hpp index 56c3576..eaaeaa8 100644 --- a/msp/sample/npu/include/yolo.hpp +++ b/msp/sample/npu/include/yolo.hpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/sample_classification/sample_npu_classification.cc b/msp/sample/npu/sample_classification/sample_npu_classification.cc index 1ab7c2f..4d7f30e 100644 --- a/msp/sample/npu/sample_classification/sample_npu_classification.cc +++ b/msp/sample/npu/sample_classification/sample_npu_classification.cc @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/npu/sample_yolov5s/sample_npu_yolov5s.cc b/msp/sample/npu/sample_yolov5s/sample_npu_yolov5s.cc index b2e92cb..3ad0dff 100644 --- a/msp/sample/npu/sample_yolov5s/sample_npu_yolov5s.cc +++ b/msp/sample/npu/sample_yolov5s/sample_npu_yolov5s.cc @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/pcie/boot/sample_pcie_boot.c b/msp/sample/pcie/boot/sample_pcie_boot.c index 1697790..51e9ce9 100644 --- a/msp/sample/pcie/boot/sample_pcie_boot.c +++ b/msp/sample/pcie/boot/sample_pcie_boot.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/pcie/dma/common/mm_buffer.c b/msp/sample/pcie/dma/common/mm_buffer.c index 29a3463..4a65e4c 100644 --- a/msp/sample/pcie/dma/common/mm_buffer.c +++ b/msp/sample/pcie/dma/common/mm_buffer.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/pcie/dma/common/pcie_dma_test.h b/msp/sample/pcie/dma/common/pcie_dma_test.h index 7101b34..e817a77 100644 --- a/msp/sample/pcie/dma/common/pcie_dma_test.h +++ b/msp/sample/pcie/dma/common/pcie_dma_test.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/pcie/dma/ep/sample_pcie_dma_slave.c b/msp/sample/pcie/dma/ep/sample_pcie_dma_slave.c index f218bf2..745bbff 100644 --- a/msp/sample/pcie/dma/ep/sample_pcie_dma_slave.c +++ b/msp/sample/pcie/dma/ep/sample_pcie_dma_slave.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/pcie/dma/rc/sample_pcie_dma_host.c b/msp/sample/pcie/dma/rc/sample_pcie_dma_host.c index 059dc95..9f979a3 100644 --- a/msp/sample/pcie/dma/rc/sample_pcie_dma_host.c +++ b/msp/sample/pcie/dma/rc/sample_pcie_dma_host.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/pcie/msg/ep/sample_pcie_msg_slave.c b/msp/sample/pcie/msg/ep/sample_pcie_msg_slave.c index 4927a7c..9ad2e60 100644 --- a/msp/sample/pcie/msg/ep/sample_pcie_msg_slave.c +++ b/msp/sample/pcie/msg/ep/sample_pcie_msg_slave.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/pcie/msg/rc/sample_pcie_msg_host.c b/msp/sample/pcie/msg/rc/sample_pcie_msg_host.c index 62f27c4..5a662c7 100644 --- a/msp/sample/pcie/msg/rc/sample_pcie_msg_host.c +++ b/msp/sample/pcie/msg/rc/sample_pcie_msg_host.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/pool/sample_pool.c b/msp/sample/pool/sample_pool.c index 1451ae2..d22b4b1 100644 --- a/msp/sample/pool/sample_pool.c +++ b/msp/sample/pool/sample_pool.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/rtc/sample_rtc.c b/msp/sample/rtc/sample_rtc.c index 25a8efe..587e9de 100644 --- a/msp/sample/rtc/sample_rtc.c +++ b/msp/sample/rtc/sample_rtc.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/rtsp/AXFramedSource.cpp b/msp/sample/rtsp/AXFramedSource.cpp index 9243138..e65c300 100644 --- a/msp/sample/rtsp/AXFramedSource.cpp +++ b/msp/sample/rtsp/AXFramedSource.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/rtsp/AXFramedSource.h b/msp/sample/rtsp/AXFramedSource.h index ef1ba5a..da97ec4 100644 --- a/msp/sample/rtsp/AXFramedSource.h +++ b/msp/sample/rtsp/AXFramedSource.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/rtsp/AXLiveServerMediaSession.cpp b/msp/sample/rtsp/AXLiveServerMediaSession.cpp index cec7f61..05a7bc8 100644 --- a/msp/sample/rtsp/AXLiveServerMediaSession.cpp +++ b/msp/sample/rtsp/AXLiveServerMediaSession.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/rtsp/AXLiveServerMediaSession.h b/msp/sample/rtsp/AXLiveServerMediaSession.h index b2e1314..09fe79a 100644 --- a/msp/sample/rtsp/AXLiveServerMediaSession.h +++ b/msp/sample/rtsp/AXLiveServerMediaSession.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/rtsp/AXRingBuffer.h b/msp/sample/rtsp/AXRingBuffer.h index 5408ea8..bc773fa 100644 --- a/msp/sample/rtsp/AXRingBuffer.h +++ b/msp/sample/rtsp/AXRingBuffer.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/rtsp/AXRtspServer.cpp b/msp/sample/rtsp/AXRtspServer.cpp index 60cafb9..d907bed 100644 --- a/msp/sample/rtsp/AXRtspServer.cpp +++ b/msp/sample/rtsp/AXRtspServer.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/rtsp/AXRtspServer.h b/msp/sample/rtsp/AXRtspServer.h index 64130a7..2315b97 100644 --- a/msp/sample/rtsp/AXRtspServer.h +++ b/msp/sample/rtsp/AXRtspServer.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/rtsp/AXRtspWrapper.cpp b/msp/sample/rtsp/AXRtspWrapper.cpp index c78f759..3776069 100644 --- a/msp/sample/rtsp/AXRtspWrapper.cpp +++ b/msp/sample/rtsp/AXRtspWrapper.cpp @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/rtsp/AXRtspWrapper.h b/msp/sample/rtsp/AXRtspWrapper.h index 987b3ad..0d26a28 100644 --- a/msp/sample/rtsp/AXRtspWrapper.h +++ b/msp/sample/rtsp/AXRtspWrapper.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/sysmap/sample_sysmap b/msp/sample/sysmap/sample_sysmap deleted file mode 100644 index 1aeb19c..0000000 Binary files a/msp/sample/sysmap/sample_sysmap and /dev/null differ diff --git a/msp/sample/sysmap/sample_sysmap.c b/msp/sample/sysmap/sample_sysmap.c index f43e5ab..1a606af 100644 --- a/msp/sample/sysmap/sample_sysmap.c +++ b/msp/sample/sysmap/sample_sysmap.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/uvc/sample_uvc b/msp/sample/uvc/sample_uvc deleted file mode 100644 index c6ce571..0000000 Binary files a/msp/sample/uvc/sample_uvc and /dev/null differ diff --git a/msp/sample/uvc/video_util.c b/msp/sample/uvc/video_util.c index 1a93f40..a42342e 100644 --- a/msp/sample/uvc/video_util.c +++ b/msp/sample/uvc/video_util.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/uvc/video_util.h b/msp/sample/uvc/video_util.h index 51ef642..cf28f3c 100644 --- a/msp/sample/uvc/video_util.h +++ b/msp/sample/uvc/video_util.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vdec/common/sample_vdec.c b/msp/sample/vdec/common/sample_vdec.c index 909e1d6..2743587 100644 --- a/msp/sample/vdec/common/sample_vdec.c +++ b/msp/sample/vdec/common/sample_vdec.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -31,6 +31,8 @@ static AX_BOOL s_groupSuccess = AX_FALSE; static AX_U64 s_u64GetFrameNum[AX_VDEC_MAX_GRP_NUM][AX_DEC_MAX_CHN_NUM]; +AX_U32 old_width = 0; +int get_num = 0; static AX_S32 __VdecRecvFrame(AX_VDEC_GRP VdGrp, AX_VDEC_CHN VdChn, SAMPLE_VDEC_CONTEXT_T *pstVdecCtx) { int res; @@ -48,6 +50,7 @@ static AX_S32 __VdecRecvFrame(AX_VDEC_GRP VdGrp, AX_VDEC_CHN VdChn, SAMPLE_VDEC_ AX_U32 u32UsrPicBlkId = 0; SAMPLE_VDEC_OUTPUT_INFO_T *pOutInfo = NULL; AX_CHAR *pOutputFilePath = NULL; + AX_U32 change = 0; if (pstVdecCtx == NULL) { SAMPLE_LOG("VdGrp=%d, pstVdecCtx == NULL", VdGrp); @@ -116,6 +119,10 @@ static AX_S32 __VdecRecvFrame(AX_VDEC_GRP VdGrp, AX_VDEC_CHN VdChn, SAMPLE_VDEC_ goto ERR_RET_RELEASE; } + if (pstCmd->bModifyFrmSize && old_width && (old_width != pstFrameInfo->stVFrame.u32Width)) { + change =1; + } + SAMPLE_LOG("VdGrp=%d, VdChn:%d, ii:%d, after AX_VDEC_GetChnFrame " ".u32Width:%d, .bEndOfStream:%d, .u64PhyAddr[0]:0x%llx, " ".u64VirAddr[0]:0x%llx, BlkId[0]:0x%x, u64PTS:%lld, .u64PrivateData:0x%llx\n", @@ -124,6 +131,9 @@ static AX_S32 __VdecRecvFrame(AX_VDEC_GRP VdGrp, AX_VDEC_CHN VdChn, SAMPLE_VDEC_ pstFrameInfo->stVFrame.u64PhyAddr[0], pstFrameInfo->stVFrame.u64VirAddr[0], pstFrameInfo->stVFrame.u32BlkId[0], pstFrameInfo->stVFrame.u64PTS, pstFrameInfo->stVFrame.u64PrivateData); + + if (pstCmd->bModifyFrmSize) + old_width = pstFrameInfo->stVFrame.u32Width; } for (ii = 0; ii < SAMPLE_VDEC_FRAME_CNT; ii++) { @@ -225,6 +235,15 @@ static AX_S32 __VdecRecvFrame(AX_VDEC_GRP VdGrp, AX_VDEC_CHN VdChn, SAMPLE_VDEC_ fflush(fp_out); } else { if (pstCmd->sWriteFrames) { + if (pstCmd->bModifyFrmSize && change) { + AX_CHAR file_path[128]; + fflush(fp_out); + fclose(fp_out); + change = 0; + snprintf(file_path, 128, "number%d_w_%d_h_%d.yuv", get_num, pstFrameInfo->stVFrame.u32Width, pstFrameInfo->stVFrame.u32Height); + SAMPLE_LOG("Write YUV to: %s\n", file_path); + fp_out = fopen(file_path, "w"); + } ret = OutputFileSaveYUV(VdGrp, VdChn, pstFrameInfo, fp_out, pOutputFilePath); if (ret) { SAMPLE_CRIT_LOG("VdGrp=%d, VdChn=%d, OutputFileSaveYUV FAILED! ret:0x%x", @@ -232,6 +251,7 @@ static AX_S32 __VdecRecvFrame(AX_VDEC_GRP VdGrp, AX_VDEC_CHN VdChn, SAMPLE_VDEC_ sRet = AX_ERR_VDEC_UNKNOWN; } } + get_num ++; } } @@ -681,12 +701,12 @@ static void *__VdecGrpChnRecvThread(void *arg) } else if (AX_ERR_VDEC_NOT_PERM == ret) { SAMPLE_CRIT_LOG("VdGrp=%d, VdChn=%d, _VdecRecvFrame ret=0x%x %s \n", - VdGrp, VdChn, ret, AX_VdecRetStr(ret)); + VdGrp, VdChn, ret, AX_VdecRetStr(ret)); continue; } else if (ret == AX_ERR_VDEC_STRM_ERROR) { SAMPLE_WARN_LOG("VdGrp=%d, VdChn=%d, _VdecRecvFrame ret=0x%x %s\n", - VdGrp, VdChn, ret, AX_VdecRetStr(ret)); + VdGrp, VdChn, ret, AX_VdecRetStr(ret)); continue; } else if (ret == AX_ERR_VDEC_FLOW_END) { @@ -759,6 +779,8 @@ static AX_S32 __VdecInputModeFrame(SAMPLE_VDEC_ARGS_T *pstFuncArgs, AX_S32 sMilliSec = AX_ERR_VDEC_UNKNOWN; AX_BOOL bPerfTest = AX_FALSE; AX_BOOL bReadFrm = AX_TRUE; + AX_U64 uTmpPts = 0; + AX_VDEC_CHN_ATTR_T *pstVdChnAttr = NULL; if (NULL == pstFuncArgs) { SAMPLE_CRIT_LOG("NULL == pstFuncArgs\n"); @@ -803,6 +825,9 @@ static AX_S32 __VdecInputModeFrame(SAMPLE_VDEC_ARGS_T *pstFuncArgs, bPerfTest = pstCmd->bPerfTest; pstStreamInfo->enDecType = pstCmd->enDecType; uBufSize = pstStreamBuf->uBufSize; + if (pstCmd->enSkipFrame) { + tStrInfo.u64PTS = 0; + } SAMPLE_LOG("begin to decoder. uBufSize=%d\n", uBufSize); while (1) { @@ -868,11 +893,15 @@ static AX_S32 __VdecInputModeFrame(SAMPLE_VDEC_ARGS_T *pstFuncArgs, tStrInfo.bEndOfFrame = AX_TRUE; tStrInfo.bEndOfStream = AX_FALSE; - sRet = AX_SYS_GetCurPTS(&tStrInfo.u64PTS); - if (sRet) { - SAMPLE_CRIT_LOG("VdGrp=%d, AX_SYS_GetCurPTS FAILED! ret:0x%x\n", VdGrp, sRet); - ret = sRet; - goto ERR_RET; + if (pstCmd->enSkipFrame) { + tStrInfo.u64PTS = uTmpPts + 1; + } else { + sRet = AX_SYS_GetCurPTS(&tStrInfo.u64PTS); + if (sRet) { + SAMPLE_CRIT_LOG("VdGrp=%d, AX_SYS_GetCurPTS FAILED! ret:0x%x\n", VdGrp, sRet); + ret = sRet; + goto ERR_RET; + } } tStrInfo.u64PrivateData = 0xAFAF5A5A; } else { @@ -938,6 +967,80 @@ static AX_S32 __VdecInputModeFrame(SAMPLE_VDEC_ARGS_T *pstFuncArgs, gettimeofday(&pstCtx->Timebegin, NULL); } + if (pstCmd->enSkipFrame) { + if (uSendPicNum % 2) { + uTmpPts = tStrInfo.u64PTS; + tStrInfo.u64PTS = -1; + } + } + + if (pstCmd->bModifyFrmSize) { + if (uSendPicNum && (uSendPicNum < 60)) + usleep(3000); + + if (uSendPicNum == 8) { + pstVdChnAttr = pstFuncArgs->pstVdChnAttr[1]; + + pstVdChnAttr->enOutputMode = 2; + pstVdChnAttr->u32PicWidth = 1392; + pstVdChnAttr->u32PicHeight = 720; + pstVdChnAttr->u32FrameStride = 1536; + + sRet = AX_VDEC_SetChnAttr(VdGrp, 1, pstVdChnAttr); + if (sRet != AX_SUCCESS) { + ret = sRet; + SAMPLE_CRIT_LOG("VdGrp=%d, AX_VDEC_SetChnAttr FAILED! ret:0x%x %s\n", + VdGrp, sRet, AX_VdecRetStr(sRet)); + goto ERR_RET; + } + } else if (uSendPicNum == 16) { + pstVdChnAttr = pstFuncArgs->pstVdChnAttr[1]; + + pstVdChnAttr->enOutputMode = 2; + pstVdChnAttr->u32PicWidth = 768; + pstVdChnAttr->u32PicHeight = 480; + pstVdChnAttr->u32FrameStride = 768; + + sRet = AX_VDEC_SetChnAttr(VdGrp, 1, pstVdChnAttr); + if (sRet != AX_SUCCESS) { + ret = sRet; + SAMPLE_CRIT_LOG("VdGrp=%d, AX_VDEC_SetChnAttr FAILED! ret:0x%x %s\n", + VdGrp, sRet, AX_VdecRetStr(sRet)); + goto ERR_RET; + } + } else if (uSendPicNum == 30) { + pstVdChnAttr = pstFuncArgs->pstVdChnAttr[1]; + + pstVdChnAttr->enOutputMode = 2; + pstVdChnAttr->u32PicWidth = 1280; + pstVdChnAttr->u32PicHeight = 720; + pstVdChnAttr->u32FrameStride = 1280; + + sRet = AX_VDEC_SetChnAttr(VdGrp, 1, pstVdChnAttr); + if (sRet != AX_SUCCESS) { + ret = sRet; + SAMPLE_CRIT_LOG("VdGrp=%d, AX_VDEC_SetChnAttr FAILED! ret:0x%x %s\n", + VdGrp, sRet, AX_VdecRetStr(sRet)); + goto ERR_RET; + } + } else if (uSendPicNum == 60) { + pstVdChnAttr = pstFuncArgs->pstVdChnAttr[1]; + + pstVdChnAttr->enOutputMode = 0; + pstVdChnAttr->u32PicWidth = 1920; + pstVdChnAttr->u32PicHeight = 1080; + pstVdChnAttr->u32FrameStride = 2048; + + sRet = AX_VDEC_SetChnAttr(VdGrp, 1, pstVdChnAttr); + if (sRet != AX_SUCCESS) { + ret = sRet; + SAMPLE_CRIT_LOG("VdGrp=%d, AX_VDEC_SetChnAttr FAILED! ret:0x%x %s\n", + VdGrp, sRet, AX_VdecRetStr(sRet)); + goto ERR_RET; + } + } + } + sRet = AX_VDEC_SendStream(VdGrp, &tStrInfo, sMilliSec); if (sRet == AX_SUCCESS) { SAMPLE_LOG("VdGrp=%d, AX_VDEC_SendStream AX_SUCCESS, uSendPicNum:%d", VdGrp, uSendPicNum); @@ -955,7 +1058,6 @@ static AX_S32 __VdecInputModeFrame(SAMPLE_VDEC_ARGS_T *pstFuncArgs, else if ((sRet == AX_ERR_VDEC_NOT_PERM) || (sRet == AX_ERR_VDEC_NOT_MATCH)) { SAMPLE_ERR_LOG("VdGrp=%d, AX_VDEC_SendStream FAILED! ret:0x%x %s", VdGrp, sRet, AX_VdecRetStr(sRet)); - bReadFrm = AX_FALSE; usleep(1000); if (s_pstVdecCtx->GrpStatus[VdGrp] >= AX_VDEC_GRP_RESET) { @@ -1030,20 +1132,14 @@ static AX_S32 __VdecChnAttrEnable(SAMPLE_VDEC_ARGS_T *pstFuncArgs, AX_VDEC_CHN_A pstCtx = pstFuncArgs->pstCtx; pstCmd = &pstCtx->tCmdParam; - for (VdChn = 0; VdChn < AX_DEC_MAX_CHN_NUM; VdChn++) { - if (pstCmd->tChnCfg[VdChn].bChnEnable == AX_FALSE) { - SAMPLE_LOG("VdGrp=%d, VdChn=%d, bChnEnable=%d", - VdGrp, VdChn, pstCmd->tChnCfg[VdChn].bChnEnable); - continue; - } - + if (pstCmd->bModifyFrmSize) { + VdChn = 1; pstVdChnAttr[VdChn] = pstChnSet + VdChn; pstFuncArgs->pstVdChnAttr[VdChn] = pstVdChnAttr[VdChn]; sRet = SampleVdecChnAttrSet(VdGrp, VdChn, pstCmd, pstVdChnAttr[VdChn]); - if (sRet != AX_SUCCESS) { - SAMPLE_CRIT_LOG("VdGrp=%d, VdChn=%d, AX_VDEC_SetChnAttr FAILED! ret:0x%x %s\n", + SAMPLE_CRIT_LOG("VdGrp=%d, VdChn=%d, SampleVdecChnAttrSet FAILED! ret:0x%x %s\n", VdGrp, VdChn, sRet, AX_VdecRetStr(sRet)); goto ERR_RET; } @@ -1054,6 +1150,31 @@ static AX_S32 __VdecChnAttrEnable(SAMPLE_VDEC_ARGS_T *pstFuncArgs, AX_VDEC_CHN_A VdGrp, VdChn, sRet, AX_VdecRetStr(sRet)); goto ERR_RET; } + } else { + for (VdChn = 0; VdChn < AX_DEC_MAX_CHN_NUM; VdChn++) { + if (pstCmd->tChnCfg[VdChn].bChnEnable == AX_FALSE) { + SAMPLE_LOG("VdGrp=%d, VdChn=%d, bChnEnable=%d", + VdGrp, VdChn, pstCmd->tChnCfg[VdChn].bChnEnable); + continue; + } + + pstVdChnAttr[VdChn] = pstChnSet + VdChn; + pstFuncArgs->pstVdChnAttr[VdChn] = pstVdChnAttr[VdChn]; + + sRet = SampleVdecChnAttrSet(VdGrp, VdChn, pstCmd, pstVdChnAttr[VdChn]); + if (sRet != AX_SUCCESS) { + SAMPLE_CRIT_LOG("VdGrp=%d, VdChn=%d, AX_VDEC_SetChnAttr FAILED! ret:0x%x %s\n", + VdGrp, VdChn, sRet, AX_VdecRetStr(sRet)); + goto ERR_RET; + } + + sRet = AX_VDEC_EnableChn(VdGrp, VdChn); + if (sRet != AX_SUCCESS) { + SAMPLE_CRIT_LOG("VdGrp=%d, VdChn=%d, AX_VDEC_EnableChn FAILED! ret:0x%x %s\n", + VdGrp, VdChn, sRet, AX_VdecRetStr(sRet)); + goto ERR_RET; + } + } } ERR_RET: @@ -1587,7 +1708,6 @@ static void *_VdecGroupThreadMain(void *arg) pstVdecCtx->oNewInputFileSize[VdGrp] = inputFileSize; } - SAMPLE_BITSTREAM_INFO_T *pstBitStreamInfo = &pstVdecCtx->stBitStreamInfo; inputFileSize = pstVdecCtx->oInputFileSize[VdGrp] > pstVdecCtx->oNewInputFileSize[VdGrp] ? pstVdecCtx->oInputFileSize[VdGrp] : pstVdecCtx->oNewInputFileSize[VdGrp]; @@ -1639,7 +1759,6 @@ static void *_VdecGroupThreadMain(void *arg) } } - SAMPLE_LOG("VdGrp=%d, AX_SYS_MemAlloc uBufSize:0x%x tBufAddr.pVirAddr:%p, .tBufAddr.u64PhyAddr:0x%llx\n", VdGrp, tStreamBuf.uBufSize, tStreamBuf.tBufAddr.pVirAddr, tStreamBuf.tBufAddr.u64PhyAddr); @@ -1649,30 +1768,87 @@ static void *_VdecGroupThreadMain(void *arg) pstStreamMem = (AX_U8 *)tStreamBuf.tBufAddr.pVirAddr; + + AX_VDEC_STREAM_T stStreamBuf; + const AX_VDEC_STREAM_T *pstStreamBuf = &stStreamBuf; + AX_VDEC_BITSTREAM_INFO_T stStreamHeadInfo; + AX_VDEC_BITSTREAM_INFO_T *pstStreamHeadInfo = &stStreamHeadInfo; + memset(&stStreamBuf, 0, sizeof(AX_VDEC_STREAM_T)); + memset(pstStreamHeadInfo, 0, sizeof(AX_VDEC_BITSTREAM_INFO_T)); + + stStreamBuf.pu8Addr = tStreamBuf.tBufAddr.pVirAddr; + stStreamBuf.u64PhyAddr = tStreamBuf.tBufAddr.u64PhyAddr; + stStreamBuf.u32StreamPackLen = tStreamBuf.uBufSize; + + if (pstCmd->bExtractHead) { + size_t parse_len = stStreamBuf.u32StreamPackLen; + read_size = fread(pstStreamMem, sizeof(AX_U8), (size_t)parse_len, fInput); + if (read_size != parse_len) { + SAMPLE_CRIT_LOG("fread FAILED! read_size:%ld != parse_len:%ld\n", + read_size, parse_len); + goto ERR_RET_MEMFREE; + } + rewind(fInput); + + sRet = AX_VDEC_ExtractStreamHeaderInfo(pstStreamBuf, pstCmd->enDecType, + pstStreamHeadInfo); + if (sRet != AX_SUCCESS) { + SAMPLE_ERR_LOG("VdGrp=%d, AX_VDEC_ExtractStreamHeaderInfo FAILED! ret:0x%x %s\n", + VdGrp, sRet, AX_VdecRetStr(sRet)); + } else { + SAMPLE_LOG_T("VdGrp=%d, pstStreamHeadInfo->u32RefFramesNum:%d, " + "->u32Width:%d, ->u32Height:%d\n", + VdGrp, pstStreamHeadInfo->u32RefFramesNum, + pstStreamHeadInfo->u32Width, pstStreamHeadInfo->u32Height); + } + } + if (pstCmd->enDecType == PT_H264) { - if ((pstCmd->tChnCfg[ci].u32PicWidth == 0) || (pstCmd->tChnCfg[ci].u32PicHeight == 0)) { - SAMPLE_H264_SPS_DATA_T sps_data; - AX_U32 parse_len = pstVdecCtx->oInputFileSize[VdGrp] >= SEEK_NALU_MAX_LEN ? - SEEK_NALU_MAX_LEN : pstVdecCtx->oInputFileSize[VdGrp]; - memset(&sps_data, 0, sizeof(SAMPLE_H264_SPS_DATA_T)); - - read_size = fread(pstStreamMem, sizeof(AX_U8), (size_t)parse_len, fInput); - if (read_size != parse_len) { - SAMPLE_CRIT_LOG("fread FAILED! read_size:0x%lx != parse_len:0x%x\n", - read_size, parse_len); - goto ERR_RET_MEMFREE; - } - rewind(fInput); - - sRet = h264_parse_sps(pstStreamMem, parse_len, &sps_data); - SAMPLE_LOG_T("h264_parse_sps sRet:0x%x sps_data.height:%d, sps_data.width:%d parse_len:%d", - sRet, sps_data.height, sps_data.width, parse_len); - if (sRet == AX_SUCCESS) { - for (ci = 0; ci < AX_DEC_MAX_CHN_NUM; ci++) { - if (pstCmd->tChnCfg[ci].enOutputMode == AX_VDEC_OUTPUT_ORIGINAL) { - pstCmd->tChnCfg[ci].u32PicWidth = sps_data.width; - pstCmd->tChnCfg[ci].u32PicHeight = sps_data.height; - } else { + for (VdChn = 0; VdChn < AX_DEC_MAX_CHN_NUM; VdChn++) { + if (pstCmd->tChnCfg[VdChn].bChnEnable == AX_FALSE) continue; + + if ((pstCmd->tChnCfg[VdChn].u32PicWidth == 0) || (pstCmd->tChnCfg[VdChn].u32PicHeight == 0)) { + SAMPLE_H264_SPS_DATA_T sps_data; + AX_U32 parse_len = pstVdecCtx->oInputFileSize[VdGrp] >= SEEK_NALU_MAX_LEN ? + SEEK_NALU_MAX_LEN : pstVdecCtx->oInputFileSize[VdGrp]; + memset(&sps_data, 0, sizeof(SAMPLE_H264_SPS_DATA_T)); + + read_size = fread(pstStreamMem, sizeof(AX_U8), (size_t)parse_len, fInput); + if (read_size != parse_len) { + SAMPLE_CRIT_LOG("fread FAILED! read_size:0x%lx != parse_len:0x%x\n", + read_size, parse_len); + goto ERR_RET_MEMFREE; + } + rewind(fInput); + + sRet = h264_parse_sps(pstStreamMem, parse_len, &sps_data); + SAMPLE_LOG_T("h264_parse_sps sRet:0x%x sps_data.height:%d, sps_data.width:%d parse_len:%d", + sRet, sps_data.height, sps_data.width, parse_len); + if (sRet == AX_SUCCESS) { + for (ci = 0; ci < AX_DEC_MAX_CHN_NUM; ci++) { + if (pstCmd->tChnCfg[ci].enOutputMode == AX_VDEC_OUTPUT_ORIGINAL) { + pstCmd->tChnCfg[ci].u32PicWidth = sps_data.width; + pstCmd->tChnCfg[ci].u32PicHeight = sps_data.height; + } else { + if (pstCmd->tChnCfg[ci].u32PicWidth == 0) { + pstCmd->tChnCfg[ci].u32PicWidth = pstCmd->u32MaxPicWidth; + } + + if (pstCmd->tChnCfg[ci].u32PicHeight == 0) { + pstCmd->tChnCfg[ci].u32PicHeight = pstCmd->u32MaxPicHeight; + } + } + } + + if (pstCmd->u32MaxPicWidth < sps_data.width) { + pstCmd->u32MaxPicWidth = sps_data.width; + } + + if (pstCmd->u32MaxPicHeight < sps_data.height) { + pstCmd->u32MaxPicHeight = sps_data.height; + } + } else { + for (ci = 0; ci < AX_DEC_MAX_CHN_NUM; ci++) { if (pstCmd->tChnCfg[ci].u32PicWidth == 0) { pstCmd->tChnCfg[ci].u32PicWidth = pstCmd->u32MaxPicWidth; } @@ -1683,23 +1859,7 @@ static void *_VdecGroupThreadMain(void *arg) } } - if (pstCmd->u32MaxPicWidth < sps_data.width) { - pstCmd->u32MaxPicWidth = sps_data.width; - } - - if (pstCmd->u32MaxPicHeight < sps_data.height) { - pstCmd->u32MaxPicHeight = sps_data.height; - } - } else { - for (ci = 0; ci < AX_DEC_MAX_CHN_NUM; ci++) { - if (pstCmd->tChnCfg[ci].u32PicWidth == 0) { - pstCmd->tChnCfg[ci].u32PicWidth = pstCmd->u32MaxPicWidth; - } - - if (pstCmd->tChnCfg[ci].u32PicHeight == 0) { - pstCmd->tChnCfg[ci].u32PicHeight = pstCmd->u32MaxPicHeight; - } - } + break; } } } else { diff --git a/msp/sample/vdec/sample_main.c b/msp/sample/vdec/sample_main.c index f502755..2025787 100644 --- a/msp/sample/vdec/sample_main.c +++ b/msp/sample/vdec/sample_main.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -60,6 +60,7 @@ int main(int argc, char *argv[]) AX_VDEC_MOD_ATTR_T stModAttr; stModAttr.enDecModule = pstCmd->enDecModule; stModAttr.u32MaxGroupCount = pstCmd->uMaxGrpCnt; + stModAttr.VdecVirtChn = pstCmd->s32VdecVirtChn; s32Ret = AX_VDEC_Init(&stModAttr); if (AX_SUCCESS != s32Ret) { diff --git a/msp/sample/vdec/sample_vdec b/msp/sample/vdec/sample_vdec deleted file mode 100644 index 079a4db..0000000 Binary files a/msp/sample/vdec/sample_vdec and /dev/null differ diff --git a/msp/sample/vdec_ivps_venc/sample_vdec_hal.c b/msp/sample/vdec_ivps_venc/sample_vdec_hal.c index 90474dc..a78a90d 100644 --- a/msp/sample/vdec_ivps_venc/sample_vdec_hal.c +++ b/msp/sample/vdec_ivps_venc/sample_vdec_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -214,6 +214,12 @@ void *VdecFrameFunc(void *arg) memset(&stVdecUserPic, 0x0, sizeof(SAMPLE_VDEC_USERPIC_T)); memset(pstCtx, 0x0, sizeof(SAMPLE_VDEC_CONTEXT_T)); + if ((pstCmd->enDecType == PT_JPEG || pstCmd->enDecType == PT_MJPEG) + && pstCmd->s32VdecVirtChn) { + VdChn = pstCmd->s32VdecVirtChn; + } else { + VdChn = 0; + } sLoopDecNum = pstCmd->sLoopDecNum; /*GROUP VDEC ATTR*/ @@ -1025,9 +1031,17 @@ AX_S32 VdecExitFunc(AX_VDEC_GRP VdGrp) return s32Ret; } -AX_S32 VdecUserPoolExitFunc(AX_VDEC_GRP VdGrp) +AX_S32 VdecUserPoolExitFunc(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd) { AX_S32 s32Ret = 0; + AX_VDEC_CHN VdChn = AX_INVALID_ID; + + if ((pstCmd->enDecType == PT_JPEG || pstCmd->enDecType == PT_MJPEG) + && pstCmd->s32VdecVirtChn) { + VdChn = pstCmd->s32VdecVirtChn; + } else { + VdChn = 0; + } s32Ret = AX_VDEC_StopRecvStream(VdGrp); if (s32Ret) { @@ -1035,7 +1049,7 @@ AX_S32 VdecUserPoolExitFunc(AX_VDEC_GRP VdGrp) goto ERR_RET; } - s32Ret = AX_VDEC_DetachPool(VdGrp, 0); + s32Ret = AX_VDEC_DetachPool(VdGrp, VdChn); if (s32Ret) { SAMPLE_CRIT_LOG("AX_VDEC_DetachPool fail! Error Code:0x%X\n", s32Ret); goto ERR_RET; diff --git a/msp/sample/vdec_ivps_venc/sample_vdec_hal.h b/msp/sample/vdec_ivps_venc/sample_vdec_hal.h index e3fc93d..f17de51 100644 --- a/msp/sample/vdec_ivps_venc/sample_vdec_hal.h +++ b/msp/sample/vdec_ivps_venc/sample_vdec_hal.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -94,6 +94,6 @@ void *VdecFrameFunc(void *arg); void *_VdecRecvThread(void *arg); AX_S32 VdecPollingExe(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd); AX_S32 VdecExitFunc(AX_VDEC_GRP VdGrp); -AX_S32 VdecUserPoolExitFunc(AX_VDEC_GRP VdGrp); +AX_S32 VdecUserPoolExitFunc(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd); #endif /* _SAMPLE_IVPS_HAL_H_ */ diff --git a/msp/sample/vdec_ivps_venc/sample_vdec_ivps_venc b/msp/sample/vdec_ivps_venc/sample_vdec_ivps_venc deleted file mode 100644 index 5669992..0000000 Binary files a/msp/sample/vdec_ivps_venc/sample_vdec_ivps_venc and /dev/null differ diff --git a/msp/sample/vdec_ivps_venc/sample_vdec_ivps_venc.c b/msp/sample/vdec_ivps_venc/sample_vdec_ivps_venc.c index 21528e8..f2f6241 100644 --- a/msp/sample/vdec_ivps_venc/sample_vdec_ivps_venc.c +++ b/msp/sample/vdec_ivps_venc/sample_vdec_ivps_venc.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -122,7 +122,12 @@ static AX_S32 _LinkInit(SAMPLE_VDEC_CMD_PARAM_T *pstCmd, AX_S32 GrpNum) for (i = 0; i < GrpNum; i++) { SrcMod.enModId = AX_ID_VDEC; SrcMod.s32GrpId = i + pstCmd->uStartGrpId; - SrcMod.s32ChnId = 0; + if ((pstCmd->enDecType == PT_JPEG || pstCmd->enDecType == PT_MJPEG) + && pstCmd->s32VdecVirtChn) { + SrcMod.s32ChnId = pstCmd->s32VdecVirtChn; + } else { + SrcMod.s32ChnId = 0; + } DstMod.enModId = AX_ID_IVPS; DstMod.s32GrpId = i + pstCmd->uStartGrpId; DstMod.s32ChnId = 0; @@ -176,7 +181,12 @@ static AX_S32 _LinkExit(SAMPLE_VDEC_CMD_PARAM_T *pstCmd, AX_S32 GrpNum) SrcMod.enModId = AX_ID_VDEC; SrcMod.s32GrpId = i + pstCmd->uStartGrpId; - SrcMod.s32ChnId = 0; + if ((pstCmd->enDecType == PT_JPEG || pstCmd->enDecType == PT_MJPEG) + && pstCmd->s32VdecVirtChn) { + SrcMod.s32ChnId = pstCmd->s32VdecVirtChn; + } else { + SrcMod.s32ChnId = 0; + } DstMod.enModId = AX_ID_IVPS; DstMod.s32GrpId = i + pstCmd->uStartGrpId; DstMod.s32ChnId = 0; @@ -227,7 +237,7 @@ AX_S32 SAMPLE_EXIT(AX_VOID) s32Ret = sRet; } } else if (pstCmd->stVdecCmdParam.enFrameBufSrc == POOL_SOURCE_USER) { - sRet = VdecUserPoolExitFunc(GrpArgs[i].VdecGrp); + sRet = VdecUserPoolExitFunc(GrpArgs[i].VdecGrp, &pstCmd->stVdecCmdParam); if (AX_SUCCESS != sRet) { SAMPLE_CRIT_LOG("VdecUserPoolExitFunc %d FAILED! VdGrp:%d ret:0x%x\n", i, GrpArgs[i].VdecGrp, sRet); diff --git a/msp/sample/vdec_ivps_venc/sample_venc_hal.c b/msp/sample/vdec_ivps_venc/sample_venc_hal.c index 521ba8c..e772241 100644 --- a/msp/sample/vdec_ivps_venc/sample_venc_hal.c +++ b/msp/sample/vdec_ivps_venc/sample_venc_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vdec_ivps_vo/sample_ivps_hal.c b/msp/sample/vdec_ivps_vo/sample_ivps_hal.c index 62be421..4ec75c5 100644 --- a/msp/sample/vdec_ivps_vo/sample_ivps_hal.c +++ b/msp/sample/vdec_ivps_vo/sample_ivps_hal.c @@ -98,7 +98,7 @@ AX_U32 CalcImgSize(AX_U32 nStride, AX_U32 nW, AX_U32 nH, AX_IMG_FORMAT_E eType, return nStride * nH * nBpp / 8; } -int SampleIVPS_Init() +int SampleIVPS_Init(AX_BOOL bEnaIvpsBakFrm) { AX_S32 axRet = 0; AX_IVPS_GRP_ATTR_T stGrpAttr = {0}; @@ -160,15 +160,15 @@ int SampleIVPS_Init() return -3; } -#ifdef IVPS_EZOOM_TEST_EN - /* min_nFifoDepth: tdp:4 other engine: 3 */ - axRet = AX_IVPS_EnableBackupFrame(gIvpsGrpId, 4); - if (IVPS_SUCC != axRet) - { - SAMPLE_ERR_LOG("AX_IVPS_EnableBackupFrame(Grp: %d) failed, ret=0x%x.", gIvpsGrpId, axRet); - return -3; + if (bEnaIvpsBakFrm) { + /* min_nFifoDepth: tdp:4 other engine: 3 */ + axRet = AX_IVPS_EnableBackupFrame(gIvpsGrpId, 4); + if (IVPS_SUCC != axRet) + { + SAMPLE_ERR_LOG("AX_IVPS_EnableBackupFrame(Grp: %d) failed, ret=0x%x.", gIvpsGrpId, axRet); + return -3; + } } -#endif axRet = AX_IVPS_StartGrp(gIvpsGrpId); if (0 != axRet) { @@ -180,7 +180,7 @@ int SampleIVPS_Init() return 0; } -AX_S32 SampleIvpsExit() +AX_S32 SampleIvpsExit(AX_BOOL bEnaIvpsBakFrm) { AX_S32 axRet = 0; int ch = 0; @@ -192,14 +192,16 @@ AX_S32 SampleIvpsExit() if (0 != axRet) { SAMPLE_ERR_LOG("AX_IVPS_DisableChn ch.%d, axRet:%#x\n", ch, axRet); } -#ifdef IVPS_EZOOM_TEST_EN - axRet = AX_IVPS_DisableBackupFrame(gIvpsGrpId); - if (IVPS_SUCC != axRet) - { - SAMPLE_ERR_LOG("AX_IVPS_DisableBackupFrame(Grp: %d) failed, ret=0x%x.", gIvpsGrpId, axRet); - return -3; + + if (bEnaIvpsBakFrm) { + axRet = AX_IVPS_DisableBackupFrame(gIvpsGrpId); + if (IVPS_SUCC != axRet) + { + SAMPLE_ERR_LOG("AX_IVPS_DisableBackupFrame(Grp: %d) failed, ret=0x%x.", gIvpsGrpId, axRet); + return -3; + } } -#endif + if (0) { ch++; @@ -231,3 +233,18 @@ AX_S32 SampleIvpsExit() SAMPLE_LOG("end +++++++++++"); return 0; } + +AX_S32 SampleIvpsReset() +{ + AX_S32 axRet = 0; + + SAMPLE_LOG("start +++++++++++"); + + axRet = AX_IVPS_ResetGrp(gIvpsGrpId); + if (0 != axRet) { + SAMPLE_ERR_LOG("AX_IVPS_DestoryGrp axRet:%#x\n", axRet); + } + + SAMPLE_LOG("end +++++++++++"); + return 0; +} diff --git a/msp/sample/vdec_ivps_vo/sample_ivps_hal.h b/msp/sample/vdec_ivps_vo/sample_ivps_hal.h index 889595f..e693883 100644 --- a/msp/sample/vdec_ivps_vo/sample_ivps_hal.h +++ b/msp/sample/vdec_ivps_vo/sample_ivps_hal.h @@ -17,6 +17,6 @@ int SampleIVPS_Init(); AX_S32 SampleIvpsExit(); - +AX_S32 SampleIvpsReset(); #endif /* _SAMPLE_IVPS_HAL_H_ */ diff --git a/msp/sample/vdec_ivps_vo/sample_vdec_hal.c b/msp/sample/vdec_ivps_vo/sample_vdec_hal.c index 1881bdc..9e244ef 100644 --- a/msp/sample/vdec_ivps_vo/sample_vdec_hal.c +++ b/msp/sample/vdec_ivps_vo/sample_vdec_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -140,11 +140,6 @@ static AX_VOID __VdecSendEndOfStream(AX_VDEC_GRP VdGrp) void *VdecFrameFunc(void *arg) { - if (arg == NULL) { - SAMPLE_CRIT_LOG("arg == NULL\n"); - goto ERR_RET; - } - SAMPLE_VDEC_FUNC_ARGS_T *pstFunPara = (SAMPLE_VDEC_FUNC_ARGS_T *)arg; AX_S32 sRet = 0; AX_S32 s32Ret = 0; @@ -193,6 +188,11 @@ void *VdecFrameFunc(void *arg) SAMPLE_LOG_T("VDEC Creat Grp %d enDecType %d\n", VdGrp, enDecType); + if (arg == NULL) { + SAMPLE_CRIT_LOG("arg == NULL\n"); + goto ERR_RET; + } + AX_CHAR cPthreadName[16]; snprintf(cPthreadName, 16, "SampleVdec%d", VdGrp); prctl(PR_SET_NAME, cPthreadName); @@ -214,6 +214,12 @@ void *VdecFrameFunc(void *arg) memset(&stVdecUserPic, 0x0, sizeof(SAMPLE_VDEC_USERPIC_T)); memset(pstCtx, 0x0, sizeof(SAMPLE_VDEC_CONTEXT_T)); + if ((pstCmd->enDecType == PT_JPEG || pstCmd->enDecType == PT_MJPEG) + && pstCmd->s32VdecVirtChn) { + VdChn = pstCmd->s32VdecVirtChn; + } else { + VdChn = 0; + } sLoopDecNum = pstCmd->sLoopDecNum; /*GROUP VDEC ATTR*/ @@ -1046,9 +1052,17 @@ AX_S32 VdecExitFunc(AX_VDEC_GRP VdGrp) return s32Ret; } -AX_S32 VdecUserPoolExitFunc(AX_VDEC_GRP VdGrp) +AX_S32 VdecUserPoolExitFunc(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd) { AX_S32 s32Ret = 0; + AX_VDEC_CHN VdChn = AX_INVALID_ID; + + if ((pstCmd->enDecType == PT_JPEG || pstCmd->enDecType == PT_MJPEG) + && pstCmd->s32VdecVirtChn) { + VdChn = pstCmd->s32VdecVirtChn; + } else { + VdChn = 0; + } s32Ret = AX_VDEC_StopRecvStream(VdGrp); if (s32Ret) { @@ -1056,7 +1070,7 @@ AX_S32 VdecUserPoolExitFunc(AX_VDEC_GRP VdGrp) goto ERR_RET; } - s32Ret = AX_VDEC_DetachPool(VdGrp, 0); + s32Ret = AX_VDEC_DetachPool(VdGrp, VdChn); if (s32Ret) { SAMPLE_CRIT_LOG("AX_VDEC_DetachPool fail! Error Code:0x%X\n", s32Ret); goto ERR_RET; diff --git a/msp/sample/vdec_ivps_vo/sample_vdec_hal.h b/msp/sample/vdec_ivps_vo/sample_vdec_hal.h index e3fc93d..b264a30 100644 --- a/msp/sample/vdec_ivps_vo/sample_vdec_hal.h +++ b/msp/sample/vdec_ivps_vo/sample_vdec_hal.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -43,6 +43,7 @@ typedef struct axSAMPLE_JDEC_ARGS { typedef struct axSAMPLE_VDEC_POLLING_ARGS { SAMPLE_VDEC_POLLING_STATUS_E pollingStat; + AX_BOOL pollingType; AX_S32 pollingCnt; AX_U32 pollingTime; AX_BOOL pollingStart; @@ -94,6 +95,6 @@ void *VdecFrameFunc(void *arg); void *_VdecRecvThread(void *arg); AX_S32 VdecPollingExe(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd); AX_S32 VdecExitFunc(AX_VDEC_GRP VdGrp); -AX_S32 VdecUserPoolExitFunc(AX_VDEC_GRP VdGrp); +AX_S32 VdecUserPoolExitFunc(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd); #endif /* _SAMPLE_IVPS_HAL_H_ */ diff --git a/msp/sample/vdec_ivps_vo/sample_vdec_ivps_vo b/msp/sample/vdec_ivps_vo/sample_vdec_ivps_vo deleted file mode 100644 index c251adb..0000000 Binary files a/msp/sample/vdec_ivps_vo/sample_vdec_ivps_vo and /dev/null differ diff --git a/msp/sample/vdec_ivps_vo/sample_vdec_ivps_vo.c b/msp/sample/vdec_ivps_vo/sample_vdec_ivps_vo.c index c744db7..924d524 100644 --- a/msp/sample/vdec_ivps_vo/sample_vdec_ivps_vo.c +++ b/msp/sample/vdec_ivps_vo/sample_vdec_ivps_vo.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -54,6 +54,12 @@ typedef struct axSAMPLE_VDEC_LINK_CMD_PARAM_T { SAMPLE_VDEC_CMD_PARAM_T stVdecCmdParam; } SAMPLE_VDEC_LINK_CMD_PARAM_T; +typedef enum { + SAMPLE_POLLING_TYPE_RESET_DESTROY, + SAMPLE_POLLING_TYPE_DESTROY, + SAMPLE_POLLING_TYPE_RESET, + SAMPLE_POLLING_TYPE_BUTT, +} SAMPLE_POLLING_TYPE_E; AX_S32 gGrpNum = 1; AX_S32 gLoopDecodeNumber = 1; @@ -116,8 +122,14 @@ static SAMPLE_VO_CONFIG_S g_stVoConf = { .u64KeepChnPrevFrameBitmap0 = ~0x0UL, .u64KeepChnPrevFrameBitmap1 = ~0x0UL, }, - {.bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX},}, - {.bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX},}, + { + .bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX}, + .u32FifoDepth = 3, + }, + { + .bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX}, + .u32FifoDepth = 3, + }, }, }; @@ -130,7 +142,13 @@ static AX_S32 _LinkInit(SAMPLE_VDEC_CMD_PARAM_T *pstCmd) SAMPLE_LOG_T("start +++++++++++"); SrcMod.enModId = AX_ID_VDEC; SrcMod.s32GrpId = pstCmd->uStartGrpId; - SrcMod.s32ChnId = 0; + if ((pstCmd->enDecType == PT_JPEG || pstCmd->enDecType == PT_MJPEG) + && pstCmd->s32VdecVirtChn) { + SrcMod.s32ChnId = pstCmd->s32VdecVirtChn; + } else { + SrcMod.s32ChnId = 0; + } + DstMod.enModId = AX_ID_IVPS; DstMod.s32GrpId = 0; DstMod.s32ChnId = 0; @@ -183,7 +201,13 @@ static AX_S32 _LinkExit(SAMPLE_VDEC_CMD_PARAM_T *pstCmd) SrcMod.enModId = AX_ID_VDEC; SrcMod.s32GrpId = pstCmd->uStartGrpId; - SrcMod.s32ChnId = 0; + if ((pstCmd->enDecType == PT_JPEG || pstCmd->enDecType == PT_MJPEG) + && pstCmd->s32VdecVirtChn) { + SrcMod.s32ChnId = pstCmd->s32VdecVirtChn; + } else { + SrcMod.s32ChnId = 0; + } + DstMod.enModId = AX_ID_IVPS; DstMod.s32GrpId = 0; DstMod.s32ChnId = 0; @@ -207,6 +231,7 @@ static void *_AX_Link_VDEC_IVPS_TEST(void *arg) AX_S32 s32Ret = -1; AX_MOD_INFO_T DstMod = {0}; AX_MOD_INFO_T SrcMod = {0}; + AX_VDEC_CHN linkVdecChn = AX_INVALID_ID; return NULL; @@ -216,7 +241,14 @@ static void *_AX_Link_VDEC_IVPS_TEST(void *arg) SrcMod.enModId = AX_ID_VDEC; SrcMod.s32GrpId = pstCmd->uStartGrpId; - SrcMod.s32ChnId = 0; + if ((pstCmd->enDecType == PT_JPEG || pstCmd->enDecType == PT_MJPEG) + && pstCmd->s32VdecVirtChn) { + linkVdecChn = pstCmd->s32VdecVirtChn; + } else { + linkVdecChn = 0; + } + SrcMod.s32ChnId = linkVdecChn; + DstMod.enModId = AX_ID_IVPS; DstMod.s32GrpId = 0; DstMod.s32ChnId = 0; @@ -235,7 +267,7 @@ static void *_AX_Link_VDEC_IVPS_TEST(void *arg) SrcMod.enModId = AX_ID_VDEC; SrcMod.s32GrpId = pstCmd->uStartGrpId; - SrcMod.s32ChnId = 0; + SrcMod.s32ChnId = linkVdecChn; DstMod.enModId = AX_ID_IVPS; DstMod.s32GrpId = 0; @@ -350,10 +382,68 @@ static void *_AX_LinkTest(void *arg) return NULL; } -AX_S32 VdecPollingClose(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd, SAMPLE_VO_CONFIG_S *pstVoConf) +AX_S32 SamplePollingReset(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd, SAMPLE_VO_CONFIG_S *pstVoConf) +{ + AX_S32 s32Ret = 0; + AX_U32 uStartGrpId; + + if (pstCmd == NULL) { + SAMPLE_CRIT_LOG("pstCmd == NULL"); + return -1; + } + + if (pstVoConf == NULL) { + SAMPLE_CRIT_LOG("pstVoConf == NULL"); + return -1; + } + + uStartGrpId = pstCmd->uStartGrpId; + SAMPLE_LOG_T("start ############ VdGrp=%d", VdGrp); + s32Ret = AX_VDEC_StopRecvStream(VdGrp); + if (s32Ret) { + SAMPLE_CRIT_LOG("VdGrp:%d, AX_VDEC_StopRecvStream fail! Error Code:0x%X\n", VdGrp, s32Ret); + goto ERR_RET; + } + + SAMPLE_LOG_T("stop vdec done +++++++++++ VdGrp=%d", VdGrp); + while (1) { + s32Ret = AX_VDEC_ResetGrp(VdGrp); + if (s32Ret != AX_ERR_VDEC_BUSY) { + break; + } + usleep(10000); + } + SAMPLE_LOG_T("reset vdec done +++++++++++ VdGrp=%d", VdGrp); + + if (VdGrp == uStartGrpId) { + SAMPLE_LOG_T("ivps and vo reset start +++++++++++ VdGrp=%d", VdGrp); + SampleIvpsReset(); + VoReset(pstVoConf); + SAMPLE_LOG_T("ivps and vo reset done +++++++++++ VdGrp=%d", VdGrp); + } + + s32Ret = AX_VDEC_StartRecvStream(VdGrp, NULL); + if (s32Ret != AX_SUCCESS) { + SAMPLE_CRIT_LOG("AX_VDEC_StartRecvStream failed! ret:0x%x %s\n", s32Ret, AX_VdecRetStr(s32Ret)); + goto ERR_RET; + } + + + SAMPLE_LOG_T("end ############ VdGrp=%d", VdGrp); + + + return AX_SUCCESS; + +ERR_RET: + return s32Ret; +} + + +AX_S32 SamplePollingClose(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd, SAMPLE_VO_CONFIG_S *pstVoConf) { AX_S32 s32Ret = 0; AX_U32 uStartGrpId; + AX_VDEC_CHN VdChn = AX_INVALID_ID; if (pstCmd == NULL) { SAMPLE_CRIT_LOG("pstCmd == NULL"); @@ -367,6 +457,13 @@ AX_S32 VdecPollingClose(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd, SAMP SAMPLE_LOG_T("start +++++++++++ VdGrp=%d", VdGrp); + if ((pstCmd->enDecType == PT_JPEG || pstCmd->enDecType == PT_MJPEG) + && pstCmd->s32VdecVirtChn) { + VdChn = pstCmd->s32VdecVirtChn; + } else { + VdChn = 0; + } + uStartGrpId = pstCmd->uStartGrpId; if (VdGrp == uStartGrpId) { s32Ret = _LinkExit(pstCmd); @@ -377,7 +474,7 @@ AX_S32 VdecPollingClose(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd, SAMP VoDeInit(pstVoConf); - s32Ret = SampleIvpsExit(); + s32Ret = SampleIvpsExit(pstCmd->bEnaIvpsBakFrm); if (AX_SUCCESS != s32Ret) { SAMPLE_CRIT_LOG("SampleIvpsExit error.\n"); goto ERR_RET; @@ -391,7 +488,7 @@ AX_S32 VdecPollingClose(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd, SAMP } if (pstCmd->enFrameBufSrc == POOL_SOURCE_USER) { - s32Ret = AX_VDEC_DetachPool(VdGrp, 0); + s32Ret = AX_VDEC_DetachPool(VdGrp, VdChn); if (s32Ret) { SAMPLE_CRIT_LOG("AX_VDEC_DetachPool fail! Error Code:0x%X\n", s32Ret); goto ERR_RET; @@ -425,7 +522,7 @@ AX_S32 VdecPollingClose(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd, SAMP return s32Ret; } -AX_S32 VdecPollingOpen(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd, SAMPLE_VO_CONFIG_S *pstVoConf) +AX_S32 SamplePollingOpen(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd, SAMPLE_VO_CONFIG_S *pstVoConf) { AX_S32 s32Ret = 0; AX_VDEC_CHN_ATTR_T stChnAttr; @@ -450,6 +547,12 @@ AX_S32 VdecPollingOpen(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd, SAMPL SAMPLE_LOG_T("start +++++++++++ VdGrp=%d", VdGrp); uStartGrpId = pstCmd->uStartGrpId; + if ((pstCmd->enDecType == PT_JPEG || pstCmd->enDecType == PT_MJPEG) + && pstCmd->s32VdecVirtChn) { + VdChn = pstCmd->s32VdecVirtChn; + } else { + VdChn = 0; + } if (VdGrp == uStartGrpId) { /*vdec link ivps*/ @@ -465,7 +568,7 @@ AX_S32 VdecPollingOpen(AX_VDEC_GRP VdGrp, SAMPLE_VDEC_CMD_PARAM_T *pstCmd, SAMPL goto ERR_RET; } - s32Ret = SampleIVPS_Init(); + s32Ret = SampleIVPS_Init(pstCmd->bEnaIvpsBakFrm); if (AX_SUCCESS != s32Ret) { SAMPLE_CRIT_LOG("SampleIVPS_Init error. s32Ret:0x%x \n", s32Ret); goto ERR_RET; @@ -579,7 +682,12 @@ static void *_VdecPollingTest(void *arg) AX_S32 poolingNum = 0; AX_BOOL bStartWait = AX_TRUE; AX_U32 pollingTime = 0; + AX_U32 randPollingTime = 0; AX_U32 pollingWaitCnt = 0; + AX_BOOL bRestTest = AX_TRUE; + AX_BOOL inTestNum = 0; + SAMPLE_POLLING_TYPE_E pollingType = SAMPLE_POLLING_TYPE_RESET_DESTROY; + AX_U32 pollingExcCnt = 0; if (arg == NULL) { SAMPLE_CRIT_LOG("arg == NULL"); @@ -593,14 +701,17 @@ static void *_VdecPollingTest(void *arg) return NULL; } + srand(time(NULL)); uGrpCount = pstCmd->uGrpCount; uStartGrpId = pstCmd->uStartGrpId; poolingNum = pstPollingArgs->pollingCnt; pollingTime = pstCmd->pollingTime ? pstCmd->pollingTime : 10; - pollingWaitCnt = pollingTime * 10; + randPollingTime = rand() % pollingTime + 1; + pollingWaitCnt = randPollingTime * 10; + pollingType = pstPollingArgs->pollingType; - SAMPLE_LOG_T("poolingNum:%d pollingTime:%d, uStartGrpId:%d, uGrpCount:%d\n", - poolingNum, pollingTime, uStartGrpId, uGrpCount); + SAMPLE_LOG_T("pollingType:%d poolingNum:%d pollingTime:%d, uStartGrpId:%d, uGrpCount:%d\n", + pollingType, poolingNum, pollingTime, uStartGrpId, uGrpCount); while (1) { if (gLoopExit) { @@ -623,24 +734,47 @@ static void *_VdecPollingTest(void *arg) bStartWait = AX_FALSE; } + if (pollingType == SAMPLE_POLLING_TYPE_DESTROY) { + bRestTest = AX_FALSE; + } else if (pollingType == SAMPLE_POLLING_TYPE_RESET) { + if (pollingExcCnt) + bRestTest = AX_TRUE; + } else { + if (inTestNum == 0) { + inTestNum = rand() % 10 + 1; + bRestTest = AX_FALSE; + } else { + bRestTest = AX_TRUE; + } + } + pstPollingArgs->pollingStat = SAMPLE_VDEC_POLLING_STATUS_START; - SAMPLE_LOG_T("start polling +++++ poolingNum %d uStartGrpId:%d uGrpCount:%d", - poolingNum, uStartGrpId, uGrpCount); + SAMPLE_LOG_T("start polling +++++ bRestTest:%d inTestNum %d poolingNum %d randPollingTime:%d uStartGrpId:%d uGrpCount:%d", + bRestTest, inTestNum, poolingNum, randPollingTime, uStartGrpId, uGrpCount); for (VdGrp = uStartGrpId; VdGrp < uStartGrpId + uGrpCount; VdGrp++) { SAMPLE_VDEC_MUTEXT_LOCK(&pstPollingArgs->pollingMutex[VdGrp]); - s32Ret = VdecPollingClose(VdGrp, pstCmd, pstRecvArgs->pstVoConf); - if (s32Ret != AX_SUCCESS) { - SAMPLE_CRIT_LOG("VdecPollingExe failed. s32Ret=0x%x", s32Ret); - SAMPLE_VDEC_MUTEXT_UNLOCK(&pstPollingArgs->pollingMutex[VdGrp]); - goto ERR_RET; - } - - s32Ret = VdecPollingOpen(VdGrp, pstCmd, pstRecvArgs->pstVoConf); - if (s32Ret != AX_SUCCESS) { - SAMPLE_CRIT_LOG("VdecPollingOpen failed. s32Ret=0x%x", s32Ret); - SAMPLE_VDEC_MUTEXT_UNLOCK(&pstPollingArgs->pollingMutex[VdGrp]); - goto ERR_RET; + if (bRestTest) { + SamplePollingReset(VdGrp, pstCmd, pstRecvArgs->pstVoConf); + if (s32Ret != AX_SUCCESS) { + SAMPLE_CRIT_LOG("SampleVdecPollingReset failed. s32Ret=0x%x", s32Ret); + SAMPLE_VDEC_MUTEXT_UNLOCK(&pstPollingArgs->pollingMutex[VdGrp]); + goto ERR_RET; + } + } else { + s32Ret = SamplePollingClose(VdGrp, pstCmd, pstRecvArgs->pstVoConf); + if (s32Ret != AX_SUCCESS) { + SAMPLE_CRIT_LOG("SamplePollingClose failed. s32Ret=0x%x", s32Ret); + SAMPLE_VDEC_MUTEXT_UNLOCK(&pstPollingArgs->pollingMutex[VdGrp]); + goto ERR_RET; + } + + s32Ret = SamplePollingOpen(VdGrp, pstCmd, pstRecvArgs->pstVoConf); + if (s32Ret != AX_SUCCESS) { + SAMPLE_CRIT_LOG("SamplePollingOpen failed. s32Ret=0x%x", s32Ret); + SAMPLE_VDEC_MUTEXT_UNLOCK(&pstPollingArgs->pollingMutex[VdGrp]); + goto ERR_RET; + } } pstPollingArgs->reSendStream[VdGrp] = AX_TRUE; @@ -649,9 +783,11 @@ static void *_VdecPollingTest(void *arg) pstPollingArgs->pollingStat = SAMPLE_VDEC_POLLING_STATUS_END; poolingNum--; + pollingExcCnt++; + inTestNum--; SAMPLE_LOG_T("end polling +++++ uStartGrpId:%d uGrpCount:%d ", uStartGrpId, uGrpCount); - - pollingWaitCnt = pollingTime * 10; + randPollingTime = rand() % pollingTime + 1; + pollingWaitCnt = randPollingTime * 10; while(!gLoopExit && pollingWaitCnt > 0) { usleep(100 *1000); pollingWaitCnt--; @@ -661,7 +797,7 @@ static void *_VdecPollingTest(void *arg) break; } - if (poolingNum == 0) { + if (poolingNum <= 0) { pstPollingArgs->pollingStat = SAMPLE_VDEC_POLLING_STATUS_EXIT; SAMPLE_LOG_T("exit polling +++++"); break; @@ -697,7 +833,7 @@ AX_S32 SAMPLE_EXIT(AX_VOID) VoDeInit(&g_stVoConf); - sRet = SampleIvpsExit(); + sRet = SampleIvpsExit(pstCmd->stVdecCmdParam.bEnaIvpsBakFrm); if (AX_SUCCESS != sRet) { SAMPLE_CRIT_LOG("SampleIvpsExit error.\n"); s32Ret = sRet; @@ -712,7 +848,7 @@ AX_S32 SAMPLE_EXIT(AX_VOID) s32Ret = sRet; } } else if (pstCmd->stVdecCmdParam.enFrameBufSrc == POOL_SOURCE_USER) { - sRet = VdecUserPoolExitFunc(GrpArgs[i].VdecGrp); + sRet = VdecUserPoolExitFunc(GrpArgs[i].VdecGrp, &pstCmd->stVdecCmdParam); if (AX_SUCCESS != sRet) { SAMPLE_CRIT_LOG("VdecUserPoolExitFunc %d FAILED! VdGrp:%d ret:0x%x\n", i, GrpArgs[i].VdecGrp, sRet); @@ -755,7 +891,7 @@ static void _SigIntZ(int sigNo) } -static AX_S32 VdecPollingInit(SAMPLE_VDEC_POLLING_ARGS_T **pArgs, SAMPLE_VDEC_CMD_PARAM_T *pstCmd) +static AX_S32 SamplePollingInit(SAMPLE_VDEC_POLLING_ARGS_T **pArgs, SAMPLE_VDEC_CMD_PARAM_T *pstCmd) { AX_S32 s32Ret = AX_SUCCESS; int ret = 0; @@ -791,6 +927,7 @@ static AX_S32 VdecPollingInit(SAMPLE_VDEC_POLLING_ARGS_T **pArgs, SAMPLE_VDEC_CM pstPollingArgs->pollingStat = AX_VDEC_FIFO_STATUS_BUTT; pstPollingArgs->pollingCnt = pstCmd->pollingCnt; pstPollingArgs->pollingTime = pstCmd->pollingTime; + pstPollingArgs->pollingType = pstCmd->pollingType; for (gi = uStartGrpId; gi < uStartGrpId + uGrpCount; gi++) { ret = pthread_mutex_init(&pstPollingArgs->pollingMutex[gi], NULL); if (ret != 0) { @@ -820,7 +957,7 @@ static AX_S32 VdecPollingInit(SAMPLE_VDEC_POLLING_ARGS_T **pArgs, SAMPLE_VDEC_CM return s32Ret; } -static void VdecPollingDeInit(SAMPLE_VDEC_POLLING_ARGS_T *pArgs, SAMPLE_VDEC_CMD_PARAM_T *pstCmd) +static void SamplePollingDeInit(SAMPLE_VDEC_POLLING_ARGS_T *pArgs, SAMPLE_VDEC_CMD_PARAM_T *pstCmd) { AX_U32 uStartGrpId = 0; AX_U32 uGrpCount = 0; @@ -859,6 +996,7 @@ int main(int argc, char *argv[]) SAMPLE_VDEC_RECV_ARGS_T stRecvArgs = {0}; pthread_t LinkTestTid; pthread_t pollingTid; + AX_VDEC_MOD_ATTR_T stModAttr; signal(SIGPIPE, SIG_IGN); signal(SIGINT, _SigInt); /* ctrl + c */ @@ -889,9 +1027,9 @@ int main(int argc, char *argv[]) } if (pstCmd->stVdecCmdParam.pollingEna) { - s32Ret = VdecPollingInit(&pstPollingArgs, &pstCmd->stVdecCmdParam); + s32Ret = SamplePollingInit(&pstPollingArgs, &pstCmd->stVdecCmdParam); if (AX_SUCCESS != s32Ret) { - SAMPLE_CRIT_LOG("VdecPollingInit FAILED! ret:0x%x\n", s32Ret); + SAMPLE_CRIT_LOG("SamplePollingInit FAILED! ret:0x%x\n", s32Ret); goto ERR_RET; } } @@ -902,7 +1040,12 @@ int main(int argc, char *argv[]) goto ERR_RET; } - s32Ret = AX_VDEC_Init(NULL); + memset(&stModAttr, 0x0, sizeof(AX_VDEC_MOD_ATTR_T)); + stModAttr.enDecModule = pstCmd->stVdecCmdParam.enDecModule; + stModAttr.u32MaxGroupCount = pstCmd->stVdecCmdParam.uMaxGrpCnt; + stModAttr.VdecVirtChn = pstCmd->stVdecCmdParam.s32VdecVirtChn; + + s32Ret = AX_VDEC_Init(&stModAttr); if (AX_SUCCESS != s32Ret) { SAMPLE_CRIT_LOG("AX_VDEC_Init FAILED! ret:0x%x %s\n", s32Ret, AX_VdecRetStr(s32Ret)); @@ -933,7 +1076,7 @@ int main(int argc, char *argv[]) goto ERR_RET_SYS_DEINIT; } - s32Ret = SampleIVPS_Init(); + s32Ret = SampleIVPS_Init(pstCmd->stVdecCmdParam.bEnaIvpsBakFrm); if (AX_SUCCESS != s32Ret) { SAMPLE_CRIT_LOG("SampleIVPS_Init error. s32Ret:0x%x \n", s32Ret); goto ERR_RET_SYS_DEINIT; @@ -1004,10 +1147,18 @@ int main(int argc, char *argv[]) pthread_join(LinkTestTid, NULL); - while(!gLoopExit && waitCnt <= pstCmd->stVdecCmdParam.waitTime) { + while(1) { + if (gLoopExit) break; + sleep(1); - if (pstCmd->stVdecCmdParam.waitTime) + if (pstCmd->stVdecCmdParam.waitTime) { waitCnt++; + if (waitCnt >= pstCmd->stVdecCmdParam.waitTime) { + break; + } + } else { + break; + } } SAMPLE_EXIT(); @@ -1023,7 +1174,7 @@ int main(int argc, char *argv[]) } if (pstCmd->stVdecCmdParam.pollingEna && pstPollingArgs) { - VdecPollingDeInit(pstPollingArgs, &pstCmd->stVdecCmdParam); + SamplePollingDeInit(pstPollingArgs, &pstCmd->stVdecCmdParam); } SAMPLE_LOG_T("Decode Finished! \n\n"); // Log for verify, please do not modify @@ -1038,7 +1189,7 @@ int main(int argc, char *argv[]) ERR_RET: if (pstCmd->stVdecCmdParam.pollingEna && pstPollingArgs) { - VdecPollingDeInit(pstPollingArgs, &pstCmd->stVdecCmdParam); + SamplePollingDeInit(pstPollingArgs, &pstCmd->stVdecCmdParam); } return s32Ret || sRet; diff --git a/msp/sample/vdec_ivps_vo/sample_vo_hal.c b/msp/sample/vdec_ivps_vo/sample_vo_hal.c index 42ba506..765051e 100644 --- a/msp/sample/vdec_ivps_vo/sample_vo_hal.c +++ b/msp/sample/vdec_ivps_vo/sample_vo_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -106,6 +106,7 @@ static AX_VOID *SAMPLE_VO_CTRL_THREAD(AX_VOID *pData) CropInfo.tCropRect.nY = 100; CropInfo.tCropRect.nW = 600; CropInfo.tCropRect.nH = 800; + AX_VO_CHN_ATTR_T stChnAttr; u32LayerID = pstVoConf->stVoLayer[0].u32VoLayer; u32ChnID = 0; @@ -124,6 +125,47 @@ static AX_VOID *SAMPLE_VO_CTRL_THREAD(AX_VOID *pData) s32Ret = AX_VO_GetVBlankTime(0, &u64VBlankTime); SAMPLE_PRT("get vblank-time vo0 %s, u64VBlankTime:%lld\n", s32Ret ? "failed" : "success", u64VBlankTime); break; + case 'c': + case 'C': + s32Ret = AX_VO_GetChnAttr(u32LayerID, u32ChnID, &stChnAttr); + if (s32Ret) { + SAMPLE_PRT("get layer%d-chn0 attr %s\n", u32LayerID, s32Ret ? "failed" : "success"); + break; + } + + SAMPLE_PRT("original-attr coordi:(%d,%d), reso:%dx%d, fifo-depth:%d, priority:%d, keep_prev:%d, inuse-output:%d\n", + stChnAttr.stRect.u32X, stChnAttr.stRect.u32Y, + stChnAttr.stRect.u32Width, stChnAttr.stRect.u32Height, + stChnAttr.u32FifoDepth, stChnAttr.u32Priority, + stChnAttr.bKeepPrevFr, stChnAttr.bInUseFrOutput); + + if (key == 'c') { + stChnAttr.stRect.u32X += 10; + stChnAttr.stRect.u32Y += 10; + } else { + stChnAttr.stRect.u32Width -= 10; + stChnAttr.stRect.u32Height -= 10; + stChnAttr.bKeepPrevFr = !stChnAttr.bKeepPrevFr; + } + + s32Ret = AX_VO_SetChnAttr(u32LayerID, u32ChnID, &stChnAttr); + if (s32Ret) { + SAMPLE_PRT("set layer%d-chn0 attr %s\n", u32LayerID, s32Ret ? "failed" : "success"); + break; + } + + s32Ret = AX_VO_GetChnAttr(u32LayerID, u32ChnID, &stChnAttr); + if (s32Ret) { + SAMPLE_PRT("get layer%d-chn0 attr %s\n", u32LayerID, s32Ret ? "failed" : "success"); + break; + } + + SAMPLE_PRT("new-attr coordi:(%d,%d), reso:%dx%d, fifo-depth:%d, priority:%d, keep_prev:%d, inuse-output:%d\n", + stChnAttr.stRect.u32X, stChnAttr.stRect.u32Y, + stChnAttr.stRect.u32Width, stChnAttr.stRect.u32Height, + stChnAttr.u32FifoDepth, stChnAttr.u32Priority, + stChnAttr.bKeepPrevFr, stChnAttr.bInUseFrOutput); + break; case 'd': case 'D': s32Ret = AX_VO_DpmsOff(0); @@ -282,5 +324,24 @@ AX_VOID VoDeInit(SAMPLE_VO_CONFIG_S *pstVoConf) AX_VO_Deinit(); + SAMPLE_PRT("done\n"); +} + +AX_VOID VoReset(SAMPLE_VO_CONFIG_S *pstVoConf) +{ + AX_S32 i; + AX_S32 s32Ret = 0; + SAMPLE_VO_LAYER_CONFIG_S *pstVoLayerConf; + + SAMPLE_PRT("start\n"); + + for (i = 0; i < pstVoConf->u32LayerNr; i++) { + pstVoLayerConf = &pstVoConf->stVoLayer[i]; + s32Ret = AX_VO_ClearChnBuf(pstVoLayerConf->u32VoLayer, 0, AX_TRUE); + if (s32Ret) + SAMPLE_PRT("ERROR: layer:%d, chn:%d, AX_VO_ClearChnBuf failed. s32Ret:0x%x", pstVoLayerConf->u32VoLayer, 0, s32Ret); + } + + SAMPLE_PRT("done\n"); } diff --git a/msp/sample/vdec_ivps_vo/sample_vo_hal.h b/msp/sample/vdec_ivps_vo/sample_vo_hal.h index 6ab4ae8..9a85e64 100644 --- a/msp/sample/vdec_ivps_vo/sample_vo_hal.h +++ b/msp/sample/vdec_ivps_vo/sample_vo_hal.h @@ -22,6 +22,7 @@ typedef struct _SAMPLE_INPUT_PARAM { AX_S32 VoInit(SAMPLE_VO_CONFIG_S *pstVoConf); AX_VOID VoDeInit(SAMPLE_VO_CONFIG_S *pstVoConf); +AX_VOID VoReset(SAMPLE_VO_CONFIG_S *pstVoConf); void *VoGetFrameThread(void *arg); AX_S32 ParseVoPubAttr(AX_CHAR *pStr, SAMPLE_VO_CONFIG_S *pstVoConf); diff --git a/msp/sample/venc/common/sample_cmd_params.c b/msp/sample/venc/common/sample_cmd_params.c index 984bcd8..ed43dff 100644 --- a/msp/sample/venc/common/sample_cmd_params.c +++ b/msp/sample/venc/common/sample_cmd_params.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -212,6 +212,9 @@ static SAMPLE_OPTION_T options[] = { {"maxQp", '0', 1}, /* Maximum frame header qp for any picture */ {"minIqp", '0', 1}, /* Minimum frame header qp for I picture */ {"maxIqp", '0', 1}, /* Maximum frame header qp for I picture */ + {"chgPos", '0', 1}, + {"stillPercent", '0', 1}, + {"stillQp", '0', 1}, /* Maximum frame header qp for I picture */ {"maxIprop", '0', 1}, {"minIprop", '0', 1}, /* HDR Conformance (ANNEX C) */ {"IQp", '0', 1}, @@ -277,6 +280,8 @@ static SAMPLE_OPTION_T options[] = { {"inFifoDep", '0', 1}, {"outFifoDep", '0', 1}, {"bCoreCoWork", '0', 1}, + {"bStrmCached", '0', 1}, + {"bAttachHdr", '0', 1}, {"strmBitDep", '0', 1}, /* VUI */ @@ -615,6 +620,18 @@ AX_S32 SampleCmdLineParse(AX_S32 argc, AX_CHAR **argv, SAMPLE_VENC_CMD_PARA_T *p cml->qpMaxI = atoi(optarg); break; } + if (strcmp(pPrm->longOpt, "chgPos") == 0) { + cml->chgPos = atoi(optarg); + break; + } + if (strcmp(pPrm->longOpt, "stillPercent") == 0) { + cml->stillPercent = atoi(optarg); + break; + } + if (strcmp(pPrm->longOpt, "stillQp") == 0) { + cml->qpStill = atoi(optarg); + break; + } if (strcmp(pPrm->longOpt, "maxIprop") == 0) { cml->maxIprop = atoi(optarg); break; @@ -823,6 +840,14 @@ AX_S32 SampleCmdLineParse(AX_S32 argc, AX_CHAR **argv, SAMPLE_VENC_CMD_PARA_T *p cml->bCoreCoWork = atoi(optarg); break; } + if (strcmp(pPrm->longOpt, "bStrmCached") == 0) { + cml->bStrmCached = atoi(optarg); + break; + } + if (strcmp(pPrm->longOpt, "bAttachHdr") == 0) { + cml->bAttachHdr = atoi(optarg); + break; + } if (strcmp(pPrm->longOpt, "strmBitDep") == 0) { cml->strmBitDep = atoi(optarg); break; diff --git a/msp/sample/venc/common/sample_cmd_params.h b/msp/sample/venc/common/sample_cmd_params.h index 8a1282d..ea63a57 100644 --- a/msp/sample/venc/common/sample_cmd_params.h +++ b/msp/sample/venc/common/sample_cmd_params.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/common/sample_cmd_parse.c b/msp/sample/venc/common/sample_cmd_parse.c index dd1c299..92227d4 100644 --- a/msp/sample/venc/common/sample_cmd_parse.c +++ b/msp/sample/venc/common/sample_cmd_parse.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/common/sample_cmd_parse.h b/msp/sample/venc/common/sample_cmd_parse.h index b97daf8..9b71a89 100644 --- a/msp/sample/venc/common/sample_cmd_parse.h +++ b/msp/sample/venc/common/sample_cmd_parse.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/common/sample_global.c b/msp/sample/venc/common/sample_global.c index c3659ae..5e99764 100644 --- a/msp/sample/venc/common/sample_global.c +++ b/msp/sample/venc/common/sample_global.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/common/sample_global.h b/msp/sample/venc/common/sample_global.h index 550e69a..33b9faf 100644 --- a/msp/sample/venc/common/sample_global.h +++ b/msp/sample/venc/common/sample_global.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/common/sample_pool.c b/msp/sample/venc/common/sample_pool.c index 05b6e8f..40386cc 100644 --- a/msp/sample/venc/common/sample_pool.c +++ b/msp/sample/venc/common/sample_pool.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/common/sample_pool.h b/msp/sample/venc/common/sample_pool.h index 012a0a5..aa1ad1a 100644 --- a/msp/sample/venc/common/sample_pool.h +++ b/msp/sample/venc/common/sample_pool.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/common/sample_qpmap.c b/msp/sample/venc/common/sample_qpmap.c index ddcdfe0..dd491b9 100644 --- a/msp/sample/venc/common/sample_qpmap.c +++ b/msp/sample/venc/common/sample_qpmap.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/common/sample_qpmap.h b/msp/sample/venc/common/sample_qpmap.h index d5df751..9b9c410 100644 --- a/msp/sample/venc/common/sample_qpmap.h +++ b/msp/sample/venc/common/sample_qpmap.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/common/sample_roicfg.c b/msp/sample/venc/common/sample_roicfg.c index cdfa488..accefef 100644 --- a/msp/sample/venc/common/sample_roicfg.c +++ b/msp/sample/venc/common/sample_roicfg.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/common/sample_roicfg.h b/msp/sample/venc/common/sample_roicfg.h index a69a642..3dff984 100644 --- a/msp/sample/venc/common/sample_roicfg.h +++ b/msp/sample/venc/common/sample_roicfg.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/common/sample_venc_log.h b/msp/sample/venc/common/sample_venc_log.h index 871c5b7..6b5d7ac 100644 --- a/msp/sample/venc/common/sample_venc_log.h +++ b/msp/sample/venc/common/sample_venc_log.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_case.h b/msp/sample/venc/featureTest/sample_case.h index 0f7c787..6d9fd12 100644 --- a/msp/sample/venc/featureTest/sample_case.h +++ b/msp/sample/venc/featureTest/sample_case.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_case_api.h b/msp/sample/venc/featureTest/sample_case_api.h index 71c33fd..d921a2f 100644 --- a/msp/sample/venc/featureTest/sample_case_api.h +++ b/msp/sample/venc/featureTest/sample_case_api.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_create_destroy.c b/msp/sample/venc/featureTest/sample_create_destroy.c index 3787db0..de15628 100644 --- a/msp/sample/venc/featureTest/sample_create_destroy.c +++ b/msp/sample/venc/featureTest/sample_create_destroy.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_dynamic_attr.c b/msp/sample/venc/featureTest/sample_dynamic_attr.c index dec3365..cf487c3 100644 --- a/msp/sample/venc/featureTest/sample_dynamic_attr.c +++ b/msp/sample/venc/featureTest/sample_dynamic_attr.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_dynamic_attr.h b/msp/sample/venc/featureTest/sample_dynamic_attr.h index efcfb5b..111c398 100644 --- a/msp/sample/venc/featureTest/sample_dynamic_attr.h +++ b/msp/sample/venc/featureTest/sample_dynamic_attr.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_dynamic_jpeg.c b/msp/sample/venc/featureTest/sample_dynamic_jpeg.c index 55a7762..a0ce564 100644 --- a/msp/sample/venc/featureTest/sample_dynamic_jpeg.c +++ b/msp/sample/venc/featureTest/sample_dynamic_jpeg.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_dynamic_jpeg.h b/msp/sample/venc/featureTest/sample_dynamic_jpeg.h index ed7cb8f..e6d03d7 100644 --- a/msp/sample/venc/featureTest/sample_dynamic_jpeg.h +++ b/msp/sample/venc/featureTest/sample_dynamic_jpeg.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_jpeg_encOnce.c b/msp/sample/venc/featureTest/sample_jpeg_encOnce.c index e315d60..2802cc4 100644 --- a/msp/sample/venc/featureTest/sample_jpeg_encOnce.c +++ b/msp/sample/venc/featureTest/sample_jpeg_encOnce.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_normal_case.c b/msp/sample/venc/featureTest/sample_normal_case.c index 1dfa0b6..4f05354 100644 --- a/msp/sample/venc/featureTest/sample_normal_case.c +++ b/msp/sample/venc/featureTest/sample_normal_case.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_reset_channel.c b/msp/sample/venc/featureTest/sample_reset_channel.c index b3270ba..0297f3a 100644 --- a/msp/sample/venc/featureTest/sample_reset_channel.c +++ b/msp/sample/venc/featureTest/sample_reset_channel.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_select_channel.c b/msp/sample/venc/featureTest/sample_select_channel.c index 7677f4f..d6581d9 100644 --- a/msp/sample/venc/featureTest/sample_select_channel.c +++ b/msp/sample/venc/featureTest/sample_select_channel.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_select_channel.h b/msp/sample/venc/featureTest/sample_select_channel.h index ab2f2a3..216757a 100644 --- a/msp/sample/venc/featureTest/sample_select_channel.h +++ b/msp/sample/venc/featureTest/sample_select_channel.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_set_chnAttr.c b/msp/sample/venc/featureTest/sample_set_chnAttr.c index dd82884..d3cac1a 100644 --- a/msp/sample/venc/featureTest/sample_set_chnAttr.c +++ b/msp/sample/venc/featureTest/sample_set_chnAttr.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_unit_test.c b/msp/sample/venc/featureTest/sample_unit_test.c index 899bfda..a03b31b 100644 --- a/msp/sample/venc/featureTest/sample_unit_test.c +++ b/msp/sample/venc/featureTest/sample_unit_test.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "sample_unit_test.h" diff --git a/msp/sample/venc/featureTest/sample_unit_test.h b/msp/sample/venc/featureTest/sample_unit_test.h index 62a6a9a..9a91957 100644 --- a/msp/sample/venc/featureTest/sample_unit_test.h +++ b/msp/sample/venc/featureTest/sample_unit_test.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/featureTest/sample_venc_roi.c b/msp/sample/venc/featureTest/sample_venc_roi.c index 58d4b03..3c97ba3 100644 --- a/msp/sample/venc/featureTest/sample_venc_roi.c +++ b/msp/sample/venc/featureTest/sample_venc_roi.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/help.dat b/msp/sample/venc/help.dat index 01547e9..be50075 100644 --- a/msp/sample/venc/help.dat +++ b/msp/sample/venc/help.dat @@ -161,840 +161,875 @@ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x20, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x0a, 0x0a, 0x0a, - 0x23, 0x23, 0x20, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x20, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x20, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x72, - 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x3a, 0x0a, 0x0a, 0x0a, 0x20, 0x20, - 0x2d, 0x77, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x70, 0x69, 0x63, 0x57, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x57, 0x69, 0x64, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x69, - 0x6e, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2e, 0x0a, 0x20, 0x20, - 0x2d, 0x68, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x70, 0x69, 0x63, 0x48, + 0x6f, 0x72, 0x65, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, + 0x2d, 0x62, 0x53, 0x74, 0x72, 0x6d, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6f, 0x66, 0x20, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, - 0x69, 0x6e, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, - 0x20, 0x20, 0x2d, 0x58, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x63, 0x72, - 0x6f, 0x70, 0x58, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x20, 0x63, 0x72, 0x6f, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x2c, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x76, - 0x65, 0x6e, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x59, - 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x63, 0x72, 0x6f, 0x70, 0x59, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, - 0x61, 0x6c, 0x20, 0x63, 0x72, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x20, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x6d, 0x75, 0x73, 0x74, - 0x20, 0x62, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x2e, 0x20, 0x5b, 0x30, - 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x78, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, - 0x63, 0x72, 0x6f, 0x70, 0x57, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x6f, 0x66, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x20, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x0a, 0x20, 0x20, 0x2d, 0x79, 0x5b, 0x6e, - 0x5d, 0x20, 0x2d, 0x2d, 0x63, 0x72, 0x6f, 0x70, 0x48, 0x20, 0x20, 0x20, + 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x20, 0x75, 0x73, 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x64, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x20, 0x5b, 0x30, + 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x48, 0x64, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x20, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x20, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x28, 0x73, 0x70, 0x73, 0x2f, 0x70, 0x70, 0x73, + 0x29, 0x20, 0x74, 0x6f, 0x20, 0x50, 0x42, 0x20, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, 0x2e, 0x32, 0x36, 0x35, 0x2e, + 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x0a, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x61, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x20, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x72, 0x6f, 0x70, 0x70, 0x69, + 0x6e, 0x67, 0x3a, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x77, 0x5b, 0x6e, + 0x5d, 0x20, 0x2d, 0x2d, 0x70, 0x69, 0x63, 0x57, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x69, - 0x64, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x65, 0x64, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x20, 0x20, - 0x2d, 0x2d, 0x6d, 0x61, 0x78, 0x50, 0x69, 0x63, 0x57, 0x20, 0x20, 0x20, + 0x64, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x70, 0x69, + 0x78, 0x65, 0x6c, 0x73, 0x2e, 0x0a, 0x20, 0x20, 0x2d, 0x68, 0x5b, 0x6e, + 0x5d, 0x20, 0x2d, 0x2d, 0x70, 0x69, 0x63, 0x48, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, - 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, - 0x2e, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x61, 0x78, 0x50, 0x69, 0x63, - 0x48, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x68, 0x65, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x70, - 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, - 0x62, 0x43, 0x72, 0x6f, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x72, 0x6f, 0x70, 0x20, - 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x30, 0x3a, 0x20, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x31, 0x3a, 0x20, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x72, 0x6f, 0x70, 0x2e, 0x20, 0x5b, - 0x30, 0x5d, 0x0a, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x70, 0x69, 0x63, 0x74, 0x75, - 0x72, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3a, 0x0a, 0x0a, - 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x59, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x79, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x55, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, - 0x65, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x56, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x58, + 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x63, 0x72, 0x6f, 0x70, 0x58, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, + 0x6e, 0x74, 0x61, 0x6c, 0x20, 0x63, 0x72, 0x6f, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x6d, 0x75, + 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x2e, 0x20, + 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x59, 0x5b, 0x6e, 0x5d, 0x20, + 0x2d, 0x2d, 0x63, 0x72, 0x6f, 0x70, 0x59, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x20, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x63, + 0x72, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x2c, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, + 0x65, 0x76, 0x65, 0x6e, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, + 0x2d, 0x78, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x63, 0x72, 0x6f, 0x70, + 0x57, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x20, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x0a, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x56, 0x55, 0x49, 0x3a, 0x0a, - 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6f, 0x66, 0x20, + 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x0a, 0x20, 0x20, 0x2d, 0x79, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, + 0x63, 0x72, 0x6f, 0x70, 0x48, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, - 0x6f, 0x20, 0x31, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0xe3, 0x80, 0x81, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0xe3, 0x80, 0x81, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x70, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x2e, 0x20, 0x5b, 0x31, 0x5d, 0x0a, - 0x20, 0x20, 0x2d, 0x2d, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x20, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x20, 0x5b, 0x35, 0x5d, 0x0a, - 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x46, 0x75, 0x6c, 0x6c, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x20, 0x72, 0x61, - 0x6e, 0x67, 0x65, 0x2c, 0x20, 0x31, 0x3a, 0x20, 0x66, 0x75, 0x6c, 0x6c, - 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x30, 0x3a, 0x20, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x65, 0x64, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, - 0x20, 0x5b, 0x31, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x43, 0x6f, - 0x6c, 0x6f, 0x72, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x71, 0x75, - 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x20, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, - 0x6f, 0x6c, 0x6f, 0x72, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x69, 0x65, - 0x73, 0xe3, 0x80, 0x81, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0xe3, 0x80, 0x81, - 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x43, 0x6f, 0x65, 0x66, 0x66, 0x73, - 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, - 0x2e, 0x20, 0x5b, 0x31, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, - 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x69, 0x74, 0x79, - 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, - 0x20, 0x6f, 0x66, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x70, - 0x72, 0x69, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x20, 0x5b, 0x32, - 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x69, 0x64, 0x74, 0x68, 0x20, + 0x6f, 0x66, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x20, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x61, + 0x78, 0x50, 0x69, 0x63, 0x57, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x6f, - 0x2d, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x20, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x20, 0x63, 0x68, 0x61, - 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x2e, 0x20, 0x5b, 0x32, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, - 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x43, 0x6f, 0x65, 0x66, 0x66, 0x73, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x63, 0x6f, 0x65, - 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x75, 0x73, - 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x52, 0x47, 0x42, 0x20, 0x74, 0x6f, - 0x20, 0x59, 0x55, 0x56, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x2e, 0x20, 0x5b, 0x32, 0x5d, 0x0a, 0x0a, 0x23, - 0x23, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x20, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x44, 0x79, - 0x6e, 0x52, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, + 0x78, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x69, + 0x6e, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2e, 0x0a, 0x20, 0x20, + 0x2d, 0x2d, 0x6d, 0x61, 0x78, 0x50, 0x69, 0x63, 0x48, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, - 0x2d, 0x2d, 0x6e, 0x65, 0x77, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, + 0x73, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x43, 0x72, 0x6f, + 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x70, - 0x61, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6e, 0x65, 0x77, 0x50, 0x69, 0x63, - 0x57, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x20, 0x63, 0x72, 0x6f, 0x70, 0x20, 0x65, 0x6e, 0x63, 0x6f, + 0x64, 0x65, 0x2c, 0x20, 0x30, 0x3a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x20, 0x31, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x20, 0x63, 0x72, 0x6f, 0x70, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x0a, + 0x0a, 0x23, 0x23, 0x20, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x20, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x3a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x59, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6e, 0x65, 0x77, 0x50, - 0x69, 0x63, 0x48, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x65, 0x77, 0x20, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x0a, 0x0a, 0x0a, 0x23, 0x23, 0x20, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, - 0x73, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x65, 0x6e, 0x63, - 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, - 0x6c, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x70, 0x69, 0x63, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x79, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x0a, 0x20, 0x20, 0x2d, + 0x2d, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x55, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x59, 0x55, 0x56, 0x20, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x20, 0x5b, 0x31, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x75, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x0a, 0x20, 0x20, + 0x2d, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x56, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x46, 0x4f, - 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x55, 0x56, 0x34, 0x32, 0x30, 0x5f, - 0x50, 0x4c, 0x41, 0x4e, 0x41, 0x52, 0x20, 0x28, 0x49, 0x59, 0x55, 0x56, - 0x2f, 0x49, 0x34, 0x32, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x76, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x0a, 0x0a, + 0x0a, 0x23, 0x23, 0x20, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x20, 0x56, 0x55, 0x49, 0x3a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, + 0x2d, 0x62, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x65, 0x73, + 0x65, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x20, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0xe3, 0x80, 0x81, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, + 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0xe3, 0x80, + 0x81, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, + 0x6e, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, + 0x6e, 0x74, 0x2e, 0x20, 0x5b, 0x31, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x20, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x2e, 0x20, 0x5b, 0x35, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, + 0x62, 0x46, 0x75, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2c, + 0x20, 0x31, 0x3a, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x20, 0x30, 0x3a, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, + 0x64, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x20, 0x5b, 0x31, 0x5d, + 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x50, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, + 0x6f, 0x20, 0x31, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0xe3, 0x80, 0x81, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x68, 0x61, 0x72, + 0x61, 0x63, 0x74, 0x65, 0x72, 0xe3, 0x80, 0x81, 0x6d, 0x61, 0x74, 0x72, + 0x69, 0x78, 0x43, 0x6f, 0x65, 0x66, 0x66, 0x73, 0x20, 0x61, 0x72, 0x65, + 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x2e, 0x20, 0x5b, 0x31, + 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x33, - 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, - 0x5f, 0x59, 0x55, 0x56, 0x34, 0x32, 0x30, 0x5f, 0x53, 0x45, 0x4d, 0x49, - 0x50, 0x4c, 0x41, 0x4e, 0x41, 0x52, 0x20, 0x28, 0x4e, 0x56, 0x31, 0x32, - 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x72, 0x6f, + 0x6d, 0x61, 0x74, 0x69, 0x63, 0x69, 0x74, 0x79, 0x20, 0x63, 0x6f, 0x6f, + 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6d, 0x61, + 0x72, 0x69, 0x65, 0x73, 0x2e, 0x20, 0x5b, 0x32, 0x5d, 0x0a, 0x20, 0x20, + 0x2d, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x68, + 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x6f, 0x2d, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x20, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, + 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x20, 0x6f, 0x66, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x20, + 0x5b, 0x32, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x61, 0x74, 0x72, + 0x69, 0x78, 0x43, 0x6f, 0x65, 0x66, 0x66, 0x73, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, + 0x74, 0x72, 0x69, 0x78, 0x20, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x69, 0x63, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x72, 0x6f, + 0x6d, 0x20, 0x52, 0x47, 0x42, 0x20, 0x74, 0x6f, 0x20, 0x59, 0x55, 0x56, + 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x2e, 0x20, 0x5b, 0x32, 0x5d, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x0a, + 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x44, 0x79, 0x6e, 0x52, 0x65, 0x73, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6e, 0x65, + 0x77, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x65, + 0x77, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, + 0x6f, 0x66, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x20, 0x72, + 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, + 0x2d, 0x2d, 0x6e, 0x65, 0x77, 0x50, 0x69, 0x63, 0x57, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x20, 0x2d, 0x20, 0x41, 0x58, - 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x55, 0x56, 0x34, - 0x32, 0x30, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x50, 0x4c, 0x41, 0x4e, 0x41, - 0x52, 0x5f, 0x56, 0x55, 0x20, 0x28, 0x4e, 0x56, 0x32, 0x31, 0x29, 0x0a, + 0x20, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x0a, + 0x20, 0x20, 0x2d, 0x2d, 0x6e, 0x65, 0x77, 0x50, 0x69, 0x63, 0x48, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x0a, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x70, 0x72, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x62, 0x65, + 0x66, 0x6f, 0x72, 0x65, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, + 0x67, 0x3a, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x6c, 0x5b, 0x6e, 0x5d, + 0x20, 0x2d, 0x2d, 0x70, 0x69, 0x63, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x31, 0x33, 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, - 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x55, 0x56, 0x34, 0x32, - 0x32, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, - 0x44, 0x5f, 0x59, 0x55, 0x59, 0x56, 0x20, 0x28, 0x59, 0x55, 0x59, 0x56, - 0x2f, 0x59, 0x55, 0x59, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x20, 0x59, 0x55, 0x56, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x2e, 0x20, 0x5b, 0x31, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, - 0x34, 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, - 0x54, 0x5f, 0x59, 0x55, 0x56, 0x34, 0x32, 0x32, 0x5f, 0x49, 0x4e, 0x54, - 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x44, 0x5f, 0x55, 0x59, 0x56, - 0x59, 0x20, 0x28, 0x55, 0x59, 0x56, 0x59, 0x2f, 0x59, 0x34, 0x32, 0x32, - 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, + 0x5f, 0x59, 0x55, 0x56, 0x34, 0x32, 0x30, 0x5f, 0x50, 0x4c, 0x41, 0x4e, + 0x41, 0x52, 0x20, 0x28, 0x49, 0x59, 0x55, 0x56, 0x2f, 0x49, 0x34, 0x32, + 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x33, 0x37, 0x20, 0x2d, 0x20, 0x41, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x33, 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x55, 0x56, - 0x34, 0x32, 0x30, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x41, 0x52, 0x5f, 0x31, - 0x30, 0x42, 0x49, 0x54, 0x5f, 0x49, 0x30, 0x31, 0x30, 0x0a, 0x20, 0x20, + 0x34, 0x32, 0x30, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x50, 0x4c, 0x41, 0x4e, + 0x41, 0x52, 0x20, 0x28, 0x4e, 0x56, 0x31, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x34, 0x32, 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x46, 0x4f, - 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x55, 0x56, 0x34, 0x32, 0x30, 0x5f, - 0x53, 0x45, 0x4d, 0x49, 0x50, 0x4c, 0x41, 0x4e, 0x41, 0x52, 0x5f, 0x31, - 0x30, 0x42, 0x49, 0x54, 0x5f, 0x50, 0x30, 0x31, 0x30, 0x0a, 0x0a, 0x23, - 0x23, 0x20, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x20, 0x20, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x20, - 0x47, 0x4f, 0x50, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x2c, - 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x62, 0x69, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x3a, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x67, 0x5b, - 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x67, 0x6f, 0x70, 0x4c, 0x65, 0x6e, 0x20, + 0x20, 0x20, 0x34, 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x46, 0x4f, 0x52, + 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x55, 0x56, 0x34, 0x32, 0x30, 0x5f, 0x53, + 0x45, 0x4d, 0x49, 0x50, 0x4c, 0x41, 0x4e, 0x41, 0x52, 0x5f, 0x56, 0x55, + 0x20, 0x28, 0x4e, 0x56, 0x32, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, - 0x6e, 0x74, 0x72, 0x61, 0x2d, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, - 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x66, 0x72, 0x61, - 0x6d, 0x65, 0x73, 0x2e, 0x20, 0x5b, 0x33, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x31, 0x33, 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x46, 0x4f, 0x52, 0x4d, + 0x41, 0x54, 0x5f, 0x59, 0x55, 0x56, 0x34, 0x32, 0x32, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x44, 0x5f, 0x59, 0x55, + 0x59, 0x56, 0x20, 0x28, 0x59, 0x55, 0x59, 0x56, 0x2f, 0x59, 0x55, 0x59, + 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x73, 0x20, 0x65, 0x76, 0x65, - 0x72, 0x79, 0x20, 0x4e, 0x74, 0x68, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, - 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x20, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x34, 0x20, 0x2d, 0x20, + 0x41, 0x58, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x55, + 0x56, 0x34, 0x32, 0x32, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4c, 0x45, + 0x41, 0x56, 0x45, 0x44, 0x5f, 0x55, 0x59, 0x56, 0x59, 0x20, 0x28, 0x55, + 0x59, 0x56, 0x59, 0x2f, 0x59, 0x34, 0x32, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, - 0x20, 0x3d, 0x20, 0x44, 0x6f, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x6f, - 0x72, 0x63, 0x65, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x42, 0x5b, 0x6e, 0x5d, - 0x20, 0x2d, 0x2d, 0x62, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x20, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x6b, 0x62, 0x70, - 0x73, 0x2e, 0x20, 0x5b, 0x32, 0x30, 0x30, 0x30, 0x5d, 0x0a, 0x20, 0x20, - 0x2d, 0x2d, 0x6c, 0x74, 0x4d, 0x61, 0x78, 0x42, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x33, 0x37, 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x46, 0x4f, + 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x55, 0x56, 0x34, 0x32, 0x30, 0x5f, + 0x50, 0x4c, 0x41, 0x4e, 0x41, 0x52, 0x5f, 0x31, 0x30, 0x42, 0x49, 0x54, + 0x5f, 0x49, 0x30, 0x31, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x2d, 0x74, - 0x65, 0x72, 0x6d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x6d, - 0x61, 0x78, 0x20, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x0a, - 0x20, 0x20, 0x2d, 0x2d, 0x6c, 0x74, 0x4d, 0x69, 0x6e, 0x42, 0x74, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x32, + 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, + 0x5f, 0x59, 0x55, 0x56, 0x34, 0x32, 0x30, 0x5f, 0x53, 0x45, 0x4d, 0x49, + 0x50, 0x4c, 0x41, 0x4e, 0x41, 0x52, 0x5f, 0x31, 0x30, 0x42, 0x49, 0x54, + 0x5f, 0x50, 0x30, 0x31, 0x30, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x20, 0x61, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x47, 0x4f, 0x50, 0x20, + 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x2c, 0x20, 0x72, 0x61, 0x74, + 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x20, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x3a, + 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x67, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, + 0x2d, 0x67, 0x6f, 0x70, 0x4c, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x6e, 0x74, 0x72, 0x61, + 0x2d, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x72, 0x61, 0x74, + 0x65, 0x20, 0x69, 0x6e, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x2e, + 0x20, 0x5b, 0x33, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x46, 0x6f, + 0x72, 0x63, 0x65, 0x73, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x4e, + 0x74, 0x68, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, + 0x62, 0x65, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x20, 0x61, + 0x73, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x20, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x20, 0x3d, 0x20, 0x44, + 0x6f, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x0a, + 0x0a, 0x20, 0x20, 0x2d, 0x42, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x62, + 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, + 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x72, 0x61, 0x74, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x6b, 0x62, 0x70, 0x73, 0x2e, 0x20, 0x5b, + 0x32, 0x30, 0x30, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6c, 0x74, + 0x4d, 0x61, 0x78, 0x42, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x20, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x62, + 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x20, 0x20, 0x2d, 0x2d, + 0x6c, 0x74, 0x4d, 0x69, 0x6e, 0x42, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x2d, 0x74, 0x65, 0x72, + 0x6d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x6d, 0x69, 0x6e, + 0x20, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x20, 0x20, + 0x2d, 0x2d, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x6e, 0x67, - 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x2e, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x54, + 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x2d, 0x74, + 0x65, 0x72, 0x6d, 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x68, 0x74, 0x53, 0x74, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x6f, - 0x6e, 0x67, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x20, 0x72, 0x61, 0x74, 0x65, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6f, + 0x72, 0x74, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x20, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x68, 0x74, - 0x53, 0x74, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x6d, 0x65, 0x2e, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x69, 0x6e, + 0x51, 0x70, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x69, 0x66, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x62, 0x65, 0x74, 0x77, + 0x65, 0x65, 0x6e, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x4d, 0x69, 0x6e, 0x51, 0x70, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x4d, 0x69, 0x6e, 0x51, 0x70, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x61, + 0x78, 0x51, 0x70, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x69, + 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x62, 0x65, 0x74, + 0x77, 0x65, 0x65, 0x6e, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x51, 0x70, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x4d, 0x61, 0x78, 0x51, 0x70, 0x0a, 0x0a, 0x0a, 0x23, 0x23, 0x20, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x20, + 0x71, 0x70, 0x3a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x71, 0x5b, 0x6e, 0x5d, + 0x20, 0x2d, 0x2d, 0x71, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x20, - 0x72, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x0a, 0x20, 0x20, 0x2d, - 0x2d, 0x6d, 0x69, 0x6e, 0x51, 0x70, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, 0x2e, + 0x39, 0x39, 0x2c, 0x20, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x20, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x51, 0x50, 0x20, 0x6f, 0x66, + 0x20, 0x6a, 0x65, 0x6e, 0x63, 0x2e, 0x20, 0x5b, 0x39, 0x30, 0x5d, 0x0a, + 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, - 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x46, 0x72, 0x61, 0x6d, - 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x69, 0x6e, 0x51, 0x70, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4d, 0x69, 0x6e, 0x51, 0x70, 0x0a, 0x20, 0x20, - 0x2d, 0x2d, 0x6d, 0x61, 0x78, 0x51, 0x70, 0x44, 0x65, 0x6c, 0x74, 0x61, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x31, 0x2e, 0x2e, 0x35, 0x31, 0x2c, + 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x71, 0x70, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x2e, 0x20, 0x5b, 0x31, 0x36, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, + 0x6d, 0x69, 0x6e, 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x46, 0x72, 0x61, - 0x6d, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x51, 0x70, - 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4d, 0x61, 0x78, 0x51, 0x70, 0x0a, 0x0a, - 0x0a, 0x23, 0x23, 0x20, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x20, 0x20, 0x71, 0x70, 0x3a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, - 0x71, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x71, 0x46, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x30, 0x2e, 0x2e, 0x39, 0x39, 0x2c, 0x20, 0x49, 0x6e, 0x69, 0x74, - 0x69, 0x61, 0x6c, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x51, - 0x50, 0x20, 0x6f, 0x66, 0x20, 0x6a, 0x65, 0x6e, 0x63, 0x2e, 0x20, 0x5b, - 0x39, 0x30, 0x5d, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x31, 0x2e, - 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x71, - 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x20, 0x5b, 0x31, 0x36, 0x5d, 0x0a, - 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x69, 0x6e, 0x51, 0x70, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x4d, - 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, - 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x71, 0x70, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x70, 0x69, 0x63, 0x74, 0x75, + 0x30, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x4d, 0x69, 0x6e, 0x69, 0x6d, + 0x75, 0x6d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x20, 0x71, 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, + 0x6e, 0x79, 0x20, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x20, + 0x5b, 0x31, 0x36, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x61, 0x78, + 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, 0x2e, + 0x35, 0x31, 0x2c, 0x20, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x20, 0x71, 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x79, 0x20, + 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x20, 0x5b, 0x35, 0x31, + 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x69, 0x6e, 0x49, 0x71, 0x70, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, 0x2e, 0x35, 0x31, 0x2c, + 0x20, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x71, 0x70, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x49, 0x20, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x20, 0x5b, 0x31, 0x36, 0x5d, 0x0a, 0x20, 0x20, 0x2d, - 0x2d, 0x6d, 0x61, 0x78, 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x2d, 0x6d, 0x61, 0x78, 0x49, 0x71, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x71, 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x61, 0x6e, 0x79, 0x20, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, - 0x20, 0x5b, 0x35, 0x31, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x69, - 0x6e, 0x49, 0x71, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, - 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, - 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x20, 0x71, 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x49, 0x20, 0x70, - 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x20, 0x5b, 0x31, 0x36, 0x5d, - 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x61, 0x78, 0x49, 0x71, 0x70, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, - 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x71, 0x70, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x49, 0x20, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x20, 0x5b, 0x35, 0x31, 0x5d, 0x0a, 0x0a, 0x20, 0x20, 0x2d, - 0x2d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x51, 0x70, 0x49, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x2d, 0x35, 0x31, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x51, 0x50, - 0x20, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x20, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x20, 0x5b, 0x2d, 0x32, 0x5d, 0x0a, 0x20, - 0x20, 0x2d, 0x2d, 0x6d, 0x61, 0x78, 0x49, 0x70, 0x72, 0x6f, 0x70, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x31, 0x2e, 0x2e, 0x31, 0x30, 0x30, 0x2c, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x49, 0x20, 0x50, 0x20, 0x73, - 0x69, 0x7a, 0x65, 0x20, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x2e, 0x20, 0x5b, - 0x31, 0x30, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x69, 0x6e, - 0x49, 0x70, 0x72, 0x6f, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x2e, 0x2e, - 0x6d, 0x61, 0x78, 0x49, 0x70, 0x72, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x49, 0x20, 0x50, 0x20, 0x73, 0x69, - 0x7a, 0x65, 0x20, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x2e, 0x20, 0x5b, 0x31, - 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x49, 0x51, 0x70, 0x20, 0x20, 0x20, + 0x49, 0x20, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x20, 0x5b, + 0x35, 0x31, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x63, 0x68, 0x67, 0x50, + 0x6f, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x62, 0x72, 0x2f, + 0x61, 0x76, 0x62, 0x72, 0x20, 0x63, 0x68, 0x67, 0x70, 0x6f, 0x73, 0x20, + 0x32, 0x30, 0x2d, 0x31, 0x30, 0x30, 0x2c, 0x20, 0x64, 0x65, 0x66, 0x20, + 0x39, 0x30, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x74, 0x69, 0x6c, 0x6c, + 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x76, 0x62, 0x72, 0x20, + 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x20, 0x31, 0x30, 0x2d, 0x31, 0x30, 0x30, 0x20, 0x64, 0x65, 0x66, + 0x20, 0x32, 0x35, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x74, 0x69, 0x6c, + 0x6c, 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, 0x2e, 0x35, + 0x31, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x51, + 0x50, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x49, + 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, + 0x74, 0x69, 0x6c, 0x6c, 0x20, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x2e, 0x20, + 0x5b, 0x30, 0x5d, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x51, 0x70, 0x49, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x35, 0x31, + 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x51, 0x50, 0x20, 0x61, 0x64, 0x6a, + 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x69, 0x6e, 0x74, 0x72, 0x61, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, + 0x2e, 0x20, 0x5b, 0x2d, 0x32, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, + 0x61, 0x78, 0x49, 0x70, 0x72, 0x6f, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, + 0x2e, 0x2e, 0x31, 0x30, 0x30, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, + 0x61, 0x78, 0x20, 0x49, 0x20, 0x50, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x2e, 0x20, 0x5b, 0x31, 0x30, 0x30, 0x5d, + 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x69, 0x6e, 0x49, 0x70, 0x72, 0x6f, + 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, 0x2e, 0x35, 0x31, 0x2c, - 0x20, 0x71, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, - 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x20, 0x5b, 0x32, 0x35, 0x5d, - 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x50, 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x2e, 0x2e, 0x6d, 0x61, 0x78, 0x49, + 0x70, 0x72, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x69, + 0x6e, 0x20, 0x49, 0x20, 0x50, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x2e, 0x20, 0x5b, 0x31, 0x5d, 0x0a, 0x20, 0x20, + 0x2d, 0x2d, 0x49, 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, - 0x71, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x20, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x20, 0x5b, 0x33, 0x30, 0x5d, 0x0a, - 0x20, 0x20, 0x2d, 0x2d, 0x42, 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x30, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x71, 0x70, 0x20, + 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x20, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x2e, 0x20, 0x5b, 0x32, 0x35, 0x5d, 0x0a, 0x20, 0x20, 0x2d, + 0x2d, 0x50, 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x71, - 0x70, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x20, 0x66, - 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x20, 0x5b, 0x33, 0x32, 0x5d, 0x0a, 0x20, - 0x20, 0x2d, 0x2d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x51, 0x70, 0x20, 0x20, + 0x20, 0x30, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x71, 0x70, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x20, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x2e, 0x20, 0x5b, 0x33, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, + 0x42, 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x2d, 0x31, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x46, - 0x69, 0x78, 0x65, 0x64, 0x20, 0x71, 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x28, - 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6a, 0x70, 0x65, - 0x67, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x30, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x71, 0x70, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x2e, 0x20, 0x5b, 0x33, 0x32, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x66, + 0x69, 0x78, 0x65, 0x64, 0x51, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, + 0x31, 0x2e, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x46, 0x69, 0x78, 0x65, 0x64, + 0x20, 0x71, 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x76, 0x65, 0x72, + 0x79, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x28, 0x6f, 0x6e, 0x6c, 0x79, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6a, 0x70, 0x65, 0x67, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x31, 0x20, - 0x3a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x69, - 0x78, 0x65, 0x64, 0x20, 0x71, 0x70, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5b, 0x30, 0x2c, 0x20, 0x35, - 0x31, 0x5d, 0x20, 0x3a, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6f, - 0x66, 0x20, 0x66, 0x69, 0x78, 0x65, 0x64, 0x20, 0x71, 0x70, 0x2e, 0x0a, - 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x63, 0x74, 0x62, 0x52, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x3a, 0x20, 0x64, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x20, 0x63, 0x74, 0x62, 0x52, 0x63, 0x3b, 0x20, 0x31, 0x3a, - 0x20, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x66, 0x69, 0x72, - 0x73, 0x74, 0x3b, 0x20, 0x32, 0x3a, 0x20, 0x62, 0x69, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x33, 0x3a, 0x20, - 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, - 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x20, 0x62, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x71, 0x70, 0x4d, 0x61, - 0x70, 0x51, 0x70, 0x54, 0x79, 0x70, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x3a, 0x20, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x71, 0x70, 0x6d, 0x61, 0x70, - 0x3b, 0x20, 0x31, 0x3a, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x51, 0x70, - 0x3b, 0x20, 0x32, 0x3a, 0x20, 0x61, 0x62, 0x73, 0x51, 0x70, 0x0a, 0x20, - 0x20, 0x2d, 0x2d, 0x71, 0x70, 0x4d, 0x61, 0x70, 0x42, 0x6c, 0x6b, 0x55, - 0x6e, 0x69, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x30, 0x3a, 0x20, 0x36, 0x34, 0x78, 0x36, 0x34, 0x2c, - 0x20, 0x31, 0x3a, 0x20, 0x33, 0x32, 0x78, 0x33, 0x32, 0x2c, 0x20, 0x32, - 0x3a, 0x20, 0x31, 0x36, 0x78, 0x31, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x2d, - 0x2d, 0x71, 0x70, 0x4d, 0x61, 0x70, 0x42, 0x6c, 0x6b, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x30, 0x3a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x3b, - 0x20, 0x31, 0x3a, 0x20, 0x73, 0x6b, 0x69, 0x70, 0x20, 0x6d, 0x6f, 0x64, - 0x65, 0x3b, 0x20, 0x32, 0x3a, 0x20, 0x49, 0x70, 0x63, 0x6d, 0x20, 0x6d, - 0x6f, 0x64, 0x65, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x72, 0x5b, 0x6e, - 0x5d, 0x20, 0x2d, 0x2d, 0x72, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x3a, - 0x20, 0x43, 0x42, 0x52, 0x20, 0x31, 0x3a, 0x20, 0x56, 0x42, 0x52, 0x20, - 0x32, 0x3a, 0x20, 0x41, 0x56, 0x42, 0x52, 0x20, 0x33, 0x3a, 0x20, 0x51, - 0x50, 0x4d, 0x41, 0x50, 0x20, 0x34, 0x3a, 0x46, 0x49, 0x58, 0x51, 0x50, - 0x20, 0x35, 0x3a, 0x43, 0x56, 0x42, 0x52, 0x2e, 0x20, 0x5b, 0x30, 0x5d, - 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x64, 0x79, 0x6e, 0x52, 0x63, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x20, 0x72, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x20, 0x64, 0x79, 0x6e, 0x61, - 0x6d, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x2e, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x30, 0x3a, 0x20, 0x43, 0x42, 0x52, 0x20, 0x31, 0x3a, 0x20, 0x56, - 0x42, 0x52, 0x20, 0x32, 0x3a, 0x20, 0x41, 0x56, 0x42, 0x52, 0x20, 0x33, - 0x3a, 0x20, 0x51, 0x50, 0x4d, 0x41, 0x50, 0x20, 0x34, 0x3a, 0x46, 0x49, - 0x58, 0x51, 0x50, 0x20, 0x35, 0x3a, 0x43, 0x56, 0x42, 0x52, 0x2e, 0x20, - 0x5b, 0x34, 0x5d, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x52, 0x5b, 0x6e, 0x5d, - 0x20, 0x2d, 0x2d, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x4e, 0x75, - 0x6d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f, 0x77, - 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, - 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x61, 0x6b, - 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x6f, 0x20, 0x47, 0x44, 0x52, 0x20, - 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x31, 0x20, 0x3a, 0x20, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x69, 0x78, 0x65, 0x64, 0x20, + 0x71, 0x70, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x20, 0x3a, 0x20, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x47, 0x44, 0x52, 0x20, - 0x28, 0x47, 0x72, 0x61, 0x64, 0x75, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x63, - 0x6f, 0x64, 0x65, 0x72, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5b, 0x30, 0x2c, 0x20, 0x35, 0x31, 0x5d, 0x20, 0x3a, + 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, + 0x78, 0x65, 0x64, 0x20, 0x71, 0x70, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x2d, + 0x2d, 0x63, 0x74, 0x62, 0x52, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3e, 0x30, 0x3a, 0x20, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x47, 0x44, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x30, 0x3a, 0x20, 0x64, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, + 0x74, 0x62, 0x52, 0x63, 0x3b, 0x20, 0x31, 0x3a, 0x20, 0x71, 0x75, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x3b, 0x20, + 0x32, 0x3a, 0x20, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x20, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x20, 0x33, 0x3a, 0x20, 0x71, 0x75, 0x61, 0x6c, + 0x69, 0x74, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x62, 0x69, 0x74, 0x72, + 0x61, 0x74, 0x65, 0x20, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x0a, + 0x20, 0x20, 0x2d, 0x2d, 0x71, 0x70, 0x4d, 0x61, 0x70, 0x51, 0x70, 0x54, + 0x79, 0x70, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x30, 0x3a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x20, 0x71, 0x70, 0x6d, 0x61, 0x70, 0x3b, 0x20, 0x31, 0x3a, + 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x51, 0x70, 0x3b, 0x20, 0x32, 0x3a, + 0x20, 0x61, 0x62, 0x73, 0x51, 0x70, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x71, + 0x70, 0x4d, 0x61, 0x70, 0x42, 0x6c, 0x6b, 0x55, 0x6e, 0x69, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, - 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, - 0x47, 0x44, 0x52, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, - 0x72, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x79, - 0x70, 0x65, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x56, 0x43, - 0x45, 0x4e, 0x43, 0x5f, 0x49, 0x4e, 0x54, 0x52, 0x41, 0x5f, 0x46, 0x52, - 0x41, 0x4d, 0x45, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, + 0x3a, 0x20, 0x36, 0x34, 0x78, 0x36, 0x34, 0x2c, 0x20, 0x31, 0x3a, 0x20, + 0x33, 0x32, 0x78, 0x33, 0x32, 0x2c, 0x20, 0x32, 0x3a, 0x20, 0x31, 0x36, + 0x78, 0x31, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x71, 0x70, 0x4d, + 0x61, 0x70, 0x42, 0x6c, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x3a, 0x20, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x3b, 0x20, 0x31, 0x3a, 0x20, + 0x73, 0x6b, 0x69, 0x70, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x3b, 0x20, 0x32, + 0x3a, 0x20, 0x49, 0x70, 0x63, 0x6d, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x0a, + 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x72, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, + 0x72, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, - 0x72, 0x61, 0x41, 0x72, 0x65, 0x61, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, - 0x6f, 0x69, 0x31, 0x41, 0x72, 0x65, 0x61, 0x20, 0x61, 0x72, 0x65, 0x20, - 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x47, 0x44, - 0x52, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x47, 0x44, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x3a, 0x20, 0x43, 0x42, 0x52, + 0x20, 0x31, 0x3a, 0x20, 0x56, 0x42, 0x52, 0x20, 0x32, 0x3a, 0x20, 0x41, + 0x56, 0x42, 0x52, 0x20, 0x33, 0x3a, 0x20, 0x51, 0x50, 0x4d, 0x41, 0x50, + 0x20, 0x34, 0x3a, 0x46, 0x49, 0x58, 0x51, 0x50, 0x20, 0x35, 0x3a, 0x43, + 0x56, 0x42, 0x52, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x0a, 0x20, 0x20, + 0x2d, 0x2d, 0x64, 0x79, 0x6e, 0x52, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x72, 0x63, 0x4d, + 0x6f, 0x64, 0x65, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x61, + 0x6c, 0x6c, 0x79, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x62, 0x65, 0x67, 0x69, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72, - 0x6b, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x20, 0x49, 0x44, 0x52, 0x20, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x2e, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x28, 0x66, 0x62, 0x63, 0x29, 0x3a, 0x0a, 0x0a, - 0x20, 0x20, 0x2d, 0x2d, 0x66, 0x62, 0x63, 0x54, 0x79, 0x70, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x3a, 0x20, + 0x43, 0x42, 0x52, 0x20, 0x31, 0x3a, 0x20, 0x56, 0x42, 0x52, 0x20, 0x32, + 0x3a, 0x20, 0x41, 0x56, 0x42, 0x52, 0x20, 0x33, 0x3a, 0x20, 0x51, 0x50, + 0x4d, 0x41, 0x50, 0x20, 0x34, 0x3a, 0x46, 0x49, 0x58, 0x51, 0x50, 0x20, + 0x35, 0x3a, 0x43, 0x56, 0x42, 0x52, 0x2e, 0x20, 0x5b, 0x34, 0x5d, 0x0a, + 0x0a, 0x20, 0x20, 0x2d, 0x52, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x4e, 0x75, 0x6d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x6d, 0x61, 0x6e, + 0x79, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x69, 0x74, 0x20, + 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x61, 0x6b, 0x65, 0x20, 0x74, 0x6f, + 0x20, 0x64, 0x6f, 0x20, 0x47, 0x44, 0x52, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x30, 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x43, 0x4f, - 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, - 0x4e, 0x4f, 0x4e, 0x45, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x30, 0x20, 0x3a, 0x20, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x20, 0x47, 0x44, 0x52, 0x20, 0x28, 0x47, 0x72, 0x61, + 0x64, 0x75, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, + 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x2d, - 0x20, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x4c, 0x45, - 0x53, 0x53, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3e, 0x30, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x20, 0x47, 0x44, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x20, 0x2d, 0x20, 0x41, - 0x58, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x59, 0x0a, 0x20, 0x20, - 0x2d, 0x2d, 0x62, 0x69, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x47, 0x44, 0x52, 0x20, + 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x73, + 0x65, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x56, 0x43, 0x45, 0x4e, 0x43, 0x5f, + 0x49, 0x4e, 0x54, 0x52, 0x41, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x2e, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x62, 0x69, 0x74, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x2e, 0x20, 0x5b, 0x38, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x41, 0x72, + 0x65, 0x61, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x6f, 0x69, 0x31, 0x41, + 0x72, 0x65, 0x61, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, + 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x47, 0x44, 0x52, 0x20, 0x66, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x47, 0x44, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x38, 0x20, 0x2d, 0x20, 0x56, 0x45, 0x4e, 0x43, 0x5f, - 0x46, 0x52, 0x41, 0x4d, 0x45, 0x5f, 0x38, 0x42, 0x49, 0x54, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x65, 0x67, 0x69, + 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x66, 0x72, + 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x20, 0x49, 0x44, 0x52, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x2e, + 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x28, 0x66, 0x62, 0x63, 0x29, 0x3a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, + 0x66, 0x62, 0x63, 0x54, 0x79, 0x70, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x6d, 0x6f, 0x64, + 0x65, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x31, 0x30, 0x20, 0x2d, 0x20, 0x56, 0x45, 0x4e, 0x43, - 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x5f, 0x31, 0x30, 0x42, 0x49, 0x54, - 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x63, 0x6f, 0x6d, 0x70, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x2e, 0x2e, 0x31, 0x30, 0x2e, - 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, - 0x2d, 0x79, 0x48, 0x64, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, + 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, + 0x53, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x6c, 0x75, 0x6d, 0x61, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x20, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4d, - 0x50, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4c, - 0x4f, 0x53, 0x53, 0x4c, 0x45, 0x53, 0x53, 0x29, 0x2e, 0x20, 0x5b, 0x30, - 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x79, 0x50, 0x61, 0x64, 0x53, 0x69, - 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, + 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x4c, 0x45, 0x53, 0x53, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x75, 0x6d, 0x61, 0x20, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x28, - 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x4c, 0x45, 0x53, - 0x53, 0x29, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, - 0x75, 0x76, 0x48, 0x64, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x41, 0x58, 0x5f, 0x43, 0x4f, + 0x20, 0x20, 0x20, 0x32, 0x20, 0x2d, 0x20, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, - 0x4c, 0x4f, 0x53, 0x53, 0x4c, 0x45, 0x53, 0x53, 0x29, 0x2e, 0x20, 0x5b, - 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x75, 0x76, 0x50, 0x61, 0x64, - 0x53, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x72, 0x6f, 0x6d, - 0x61, 0x20, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x73, 0x69, - 0x7a, 0x65, 0x28, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, - 0x53, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4c, 0x4f, 0x53, 0x53, - 0x4c, 0x45, 0x53, 0x53, 0x29, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x0a, - 0x0a, 0x23, 0x23, 0x20, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x20, 0x72, 0x6f, 0x69, 0x3a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, - 0x2d, 0x72, 0x6f, 0x69, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x20, + 0x4c, 0x4f, 0x53, 0x53, 0x59, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x69, + 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x20, 0x62, 0x69, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x2e, 0x20, 0x5b, 0x38, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x72, 0x6f, 0x69, 0x2e, - 0x20, 0x30, 0x3a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x2e, - 0x20, 0x31, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x20, - 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x76, 0x65, 0x6e, 0x63, - 0x52, 0x6f, 0x69, 0x4d, 0x61, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x32, 0x36, 0x34, - 0x2f, 0x68, 0x32, 0x36, 0x35, 0x20, 0x72, 0x6f, 0x69, 0x20, 0x6d, 0x61, - 0x70, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x20, 0x5b, 0x76, 0x65, 0x6e, - 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x2e, 0x72, 0x6f, 0x69, 0x5d, 0x0a, 0x20, - 0x20, 0x2d, 0x2d, 0x6a, 0x65, 0x6e, 0x63, 0x52, 0x6f, 0x69, 0x4d, 0x61, - 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x6a, 0x70, 0x65, 0x67, 0x2f, 0x6d, 0x6a, 0x70, 0x65, - 0x67, 0x20, 0x72, 0x6f, 0x69, 0x20, 0x6d, 0x61, 0x70, 0x20, 0x66, 0x69, - 0x6c, 0x65, 0x2e, 0x20, 0x5b, 0x6a, 0x65, 0x6e, 0x63, 0x5f, 0x6d, 0x61, - 0x70, 0x2e, 0x72, 0x6f, 0x69, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x71, - 0x52, 0x6f, 0x69, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38, + 0x20, 0x2d, 0x20, 0x56, 0x45, 0x4e, 0x43, 0x5f, 0x46, 0x52, 0x41, 0x4d, + 0x45, 0x5f, 0x38, 0x42, 0x49, 0x54, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x6f, 0x69, 0x20, 0x72, 0x69, 0x67, 0x69, 0x6f, 0x6e, 0x20, 0x71, 0x70, - 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, - 0x4d, 0x5b, 0x6e, 0x5d, 0x20, 0x2d, 0x2d, 0x67, 0x6f, 0x70, 0x4d, 0x6f, - 0x64, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x67, 0x6f, 0x70, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x20, 0x30, 0x3a, - 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x50, 0x2e, 0x20, 0x31, 0x3a, - 0x20, 0x6f, 0x6e, 0x65, 0x4c, 0x54, 0x52, 0x2e, 0x20, 0x32, 0x3a, 0x20, - 0x73, 0x76, 0x63, 0x2d, 0x74, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x0a, - 0x20, 0x20, 0x2d, 0x2d, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, - 0x49, 0x44, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, + 0x30, 0x20, 0x2d, 0x20, 0x56, 0x45, 0x4e, 0x43, 0x5f, 0x46, 0x52, 0x41, + 0x4d, 0x45, 0x5f, 0x31, 0x30, 0x42, 0x49, 0x54, 0x0a, 0x0a, 0x20, 0x20, + 0x2d, 0x2d, 0x63, 0x6f, 0x6d, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x73, 0x20, 0x61, 0x74, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x74, 0x20, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x20, 0x62, 0x79, - 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x49, 0x44, 0x20, - 0x69, 0x6e, 0x20, 0x73, 0x76, 0x63, 0x2d, 0x74, 0x20, 0x6d, 0x6f, 0x64, - 0x65, 0x2e, 0x20, 0x5b, 0x32, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x30, 0x2e, 0x2e, 0x31, 0x30, 0x2e, 0x20, 0x63, 0x6f, 0x6d, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x2e, + 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x79, 0x48, 0x64, + 0x72, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x75, 0x6d, + 0x61, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x73, 0x69, 0x7a, + 0x65, 0x28, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, + 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x4c, + 0x45, 0x53, 0x53, 0x29, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, + 0x2d, 0x2d, 0x79, 0x50, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x30, 0x20, 0x3a, 0x20, 0x73, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x28, 0x30, 0x29, 0x20, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x20, - 0x62, 0x69, 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x6c, 0x75, 0x6d, 0x61, 0x20, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x41, 0x58, 0x5f, 0x43, + 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x4c, 0x45, 0x53, 0x53, 0x29, 0x2e, 0x20, + 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x75, 0x76, 0x48, 0x64, + 0x72, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x72, 0x6f, + 0x6d, 0x61, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x73, 0x69, + 0x7a, 0x65, 0x28, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, + 0x53, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4c, 0x4f, 0x53, 0x53, + 0x4c, 0x45, 0x53, 0x53, 0x29, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, + 0x20, 0x2d, 0x2d, 0x75, 0x76, 0x50, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x3a, 0x20, 0x73, 0x61, - 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x28, 0x30, 0xe3, 0x80, 0x81, - 0x31, 0x29, 0x20, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x20, 0x62, 0x69, 0x74, - 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x20, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x41, + 0x58, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x4c, 0x45, 0x53, 0x53, + 0x29, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x0a, 0x0a, 0x23, 0x23, 0x20, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x72, + 0x6f, 0x69, 0x3a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x72, 0x6f, 0x69, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x20, 0x72, 0x6f, 0x69, 0x2e, 0x20, 0x30, 0x3a, 0x20, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x20, 0x31, 0x3a, 0x20, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, + 0x20, 0x20, 0x2d, 0x2d, 0x76, 0x65, 0x6e, 0x63, 0x52, 0x6f, 0x69, 0x4d, + 0x61, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x68, 0x32, 0x36, 0x34, 0x2f, 0x68, 0x32, 0x36, + 0x35, 0x20, 0x72, 0x6f, 0x69, 0x20, 0x6d, 0x61, 0x70, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x2e, 0x20, 0x5b, 0x76, 0x65, 0x6e, 0x63, 0x5f, 0x6d, 0x61, + 0x70, 0x2e, 0x72, 0x6f, 0x69, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6a, + 0x65, 0x6e, 0x63, 0x52, 0x6f, 0x69, 0x4d, 0x61, 0x70, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6a, + 0x70, 0x65, 0x67, 0x2f, 0x6d, 0x6a, 0x70, 0x65, 0x67, 0x20, 0x72, 0x6f, + 0x69, 0x20, 0x6d, 0x61, 0x70, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x20, + 0x5b, 0x6a, 0x65, 0x6e, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x2e, 0x72, 0x6f, + 0x69, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x71, 0x52, 0x6f, 0x69, 0x46, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x6f, 0x69, 0x20, 0x72, + 0x69, 0x67, 0x69, 0x6f, 0x6e, 0x20, 0x71, 0x70, 0x2e, 0x20, 0x5b, 0x30, + 0x5d, 0x0a, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x4d, 0x5b, 0x6e, 0x5d, + 0x20, 0x2d, 0x2d, 0x67, 0x6f, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6f, 0x70, + 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x20, 0x30, 0x3a, 0x20, 0x6e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x50, 0x2e, 0x20, 0x31, 0x3a, 0x20, 0x6f, 0x6e, 0x65, + 0x4c, 0x54, 0x52, 0x2e, 0x20, 0x32, 0x3a, 0x20, 0x73, 0x76, 0x63, 0x2d, + 0x74, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, + 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x49, 0x44, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, + 0x69, 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x20, 0x61, + 0x74, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x20, 0x62, 0x79, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x49, 0x44, 0x20, 0x69, 0x6e, 0x20, 0x73, + 0x76, 0x63, 0x2d, 0x74, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x20, 0x5b, + 0x32, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x20, 0x3a, + 0x20, 0x73, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x28, 0x30, + 0x29, 0x20, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x20, 0x62, 0x69, 0x74, 0x20, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x31, 0x20, 0x3a, 0x20, 0x73, 0x61, 0x76, 0x65, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x28, 0x30, 0xe3, 0x80, 0x81, 0x31, 0x29, 0x20, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x32, + 0x20, 0x3a, 0x20, 0x73, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x28, 0x30, 0xe3, 0x80, 0x81, 0x31, 0xe3, 0x80, 0x81, 0x32, 0x29, 0x20, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x6f, 0x74, + 0x68, 0x65, 0x72, 0x3a, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x50, + 0x65, 0x72, 0x66, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x32, 0x20, 0x3a, 0x20, 0x73, 0x61, 0x76, 0x65, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x28, 0x30, 0xe3, 0x80, 0x81, 0x31, 0xe3, 0x80, - 0x81, 0x32, 0x29, 0x20, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x20, 0x62, 0x69, - 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x0a, 0x0a, 0x23, - 0x23, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x3a, 0x0a, 0x0a, 0x20, 0x20, - 0x2d, 0x2d, 0x62, 0x50, 0x65, 0x72, 0x66, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, + 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, + 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, + 0x20, 0x2d, 0x2d, 0x76, 0x62, 0x43, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x6e, 0x63, - 0x6f, 0x64, 0x65, 0x72, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x5b, - 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x76, 0x62, 0x43, 0x6e, 0x74, + 0x20, 0x20, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x70, 0x6f, 0x6f, 0x6c, + 0x20, 0x5b, 0x31, 0x2c, 0x20, 0x31, 0x30, 0x30, 0x5d, 0x2e, 0x20, 0x5b, + 0x31, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x69, 0x6e, 0x46, 0x69, + 0x66, 0x6f, 0x44, 0x65, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x20, 0x66, 0x69, 0x66, 0x6f, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, + 0x2e, 0x20, 0x5b, 0x34, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x6f, 0x75, + 0x74, 0x46, 0x69, 0x66, 0x6f, 0x44, 0x65, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, - 0x70, 0x6f, 0x6f, 0x6c, 0x20, 0x5b, 0x31, 0x2c, 0x20, 0x31, 0x30, 0x30, - 0x5d, 0x2e, 0x20, 0x5b, 0x31, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x2d, 0x2d, - 0x69, 0x6e, 0x46, 0x69, 0x66, 0x6f, 0x44, 0x65, 0x70, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x66, 0x6f, 0x20, 0x64, 0x65, + 0x70, 0x74, 0x68, 0x2e, 0x20, 0x5b, 0x34, 0x5d, 0x0a, 0x0a, 0x20, 0x20, + 0x2d, 0x2d, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x0a, + 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x74, 0x72, 0x6d, 0x42, 0x69, 0x74, 0x44, + 0x65, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x62, 0x69, 0x74, 0x20, 0x64, 0x65, + 0x70, 0x74, 0x68, 0x2e, 0x20, 0x5b, 0x38, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x66, 0x6f, 0x20, 0x64, - 0x65, 0x70, 0x74, 0x68, 0x2e, 0x20, 0x5b, 0x34, 0x5d, 0x0a, 0x20, 0x20, - 0x2d, 0x2d, 0x6f, 0x75, 0x74, 0x46, 0x69, 0x66, 0x6f, 0x44, 0x65, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x66, - 0x6f, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x2e, 0x20, 0x5b, 0x34, 0x5d, - 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x4d, - 0x6f, 0x64, 0x65, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x74, 0x72, 0x6d, - 0x42, 0x69, 0x74, 0x44, 0x65, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x38, 0x20, 0x3a, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, + 0x20, 0x38, 0x62, 0x69, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x63, 0x6f, - 0x64, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x62, 0x69, - 0x74, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x2e, 0x20, 0x5b, 0x38, 0x5d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, + 0x30, 0x3a, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x31, 0x30, + 0x62, 0x69, 0x74, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x74, 0x72, + 0x6d, 0x42, 0x75, 0x66, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38, 0x20, 0x3a, 0x20, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x65, 0x20, 0x38, 0x62, 0x69, 0x74, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x62, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2e, 0x20, + 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x3a, 0x20, 0x75, + 0x73, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x6d, + 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x64, 0x6b, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x31, 0x30, 0x3a, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x65, 0x20, 0x31, 0x30, 0x62, 0x69, 0x74, 0x0a, 0x0a, 0x20, 0x20, 0x2d, - 0x2d, 0x73, 0x74, 0x72, 0x6d, 0x42, 0x75, 0x66, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x73, 0x69, - 0x7a, 0x65, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3e, 0x30, 0xef, 0xbc, 0x9a, 0x61, 0x6c, 0x6c, 0x6f, 0x63, + 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, + 0x20, 0x62, 0x79, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x20, + 0x20, 0x2d, 0x2d, 0x76, 0x69, 0x72, 0x49, 0x4c, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x49, + 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x64, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, + 0x6c, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x67, 0x6f, + 0x70, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x0a, 0x20, 0x20, + 0x2d, 0x2d, 0x62, 0x49, 0x44, 0x52, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x30, 0x3a, 0x20, 0x75, 0x73, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x64, 0x6b, - 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x49, 0x44, + 0x52, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3e, 0x30, 0xef, 0xbc, 0x9a, 0x61, - 0x6c, 0x6c, 0x6f, 0x63, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, - 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x62, 0x79, 0x20, 0x75, 0x73, 0x65, 0x72, - 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x76, 0x69, 0x72, 0x49, 0x4c, - 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, - 0x61, 0x6c, 0x20, 0x49, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x64, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x73, 0x68, 0x6f, - 0x75, 0x6c, 0x64, 0x20, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, - 0x6e, 0x20, 0x67, 0x6f, 0x70, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x2e, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x62, 0x49, 0x44, 0x52, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x3a, 0x20, + 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x20, 0x49, 0x44, 0x52, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2c, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x20, 0x49, 0x44, 0x52, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x31, 0x3a, 0x20, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x20, + 0x49, 0x44, 0x52, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x0a, + 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x4e, 0x75, + 0x6d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x30, 0x3a, 0x20, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x20, 0x49, - 0x44, 0x52, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, 0x20, - 0x6f, 0x66, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x72, 0x61, 0x74, - 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2c, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x2e, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x30, 0x20, 0x3a, 0x20, 0x6f, 0x6e, 0x65, 0x20, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, + 0x20, 0x69, 0x6e, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x73, 0x6c, 0x69, 0x63, + 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x28, 0x3e, 0x20, 0x30, 0x29, + 0x20, 0xef, 0xbc, 0x9a, 0x6e, 0x20, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x20, + 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x61, 0x20, + 0x73, 0x6c, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x75, 0x44, + 0x61, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x3a, 0x20, 0x69, 0x6e, 0x73, - 0x65, 0x72, 0x74, 0x20, 0x49, 0x44, 0x52, 0x20, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x74, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x73, 0x6c, 0x69, - 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x73, 0x65, + 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2e, + 0x20, 0x68, 0x32, 0x36, 0x34, 0x2f, 0x68, 0x32, 0x36, 0x35, 0x20, 0x5b, + 0x31, 0x2c, 0x20, 0x32, 0x30, 0x34, 0x38, 0x5d, 0x3b, 0x20, 0x6a, 0x70, + 0x65, 0x67, 0x20, 0x5b, 0x31, 0x2c, 0x20, 0x34, 0x30, 0x39, 0x36, 0x5d, + 0x2e, 0x20, 0x5b, 0x31, 0x30, 0x5d, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, + 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x75, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x20, 0x3a, 0x20, - 0x6f, 0x6e, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x6f, 0x6e, 0x65, 0x20, - 0x73, 0x6c, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, + 0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x74, 0x65, 0x73, + 0x74, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x28, - 0x3e, 0x20, 0x30, 0x29, 0x20, 0xef, 0xbc, 0x9a, 0x6e, 0x20, 0x6d, 0x61, - 0x63, 0x72, 0x6f, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x6d, 0x61, 0x6b, - 0x65, 0x20, 0x61, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, - 0x2d, 0x2d, 0x75, 0x44, 0x61, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, + 0x30, 0x32, 0x34, 0x3a, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x61, 0x6c, 0x6c, + 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x77, 0x2e, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, - 0x69, 0x7a, 0x65, 0x2e, 0x20, 0x68, 0x32, 0x36, 0x34, 0x2f, 0x68, 0x32, - 0x36, 0x35, 0x20, 0x5b, 0x31, 0x2c, 0x20, 0x32, 0x30, 0x34, 0x38, 0x5d, - 0x3b, 0x20, 0x6a, 0x70, 0x65, 0x67, 0x20, 0x5b, 0x31, 0x2c, 0x20, 0x34, - 0x30, 0x39, 0x36, 0x5d, 0x2e, 0x20, 0x5b, 0x31, 0x30, 0x5d, 0x0a, 0x0a, - 0x23, 0x23, 0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x75, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, + 0x41, 0x53, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x63, - 0x6f, 0x64, 0x65, 0x72, 0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x5b, 0x30, 0x5d, 0x0a, 0x20, + 0x20, 0x31, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, + 0x42, 0x49, 0x54, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x31, 0x30, 0x32, 0x34, 0x3a, 0x20, 0x72, 0x75, 0x6e, - 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x62, 0x65, - 0x6c, 0x6f, 0x77, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x32, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, + 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x43, 0x48, 0x4e, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x33, 0x3a, 0x20, + 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x56, 0x45, 0x4e, 0x43, + 0x5f, 0x52, 0x4f, 0x49, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x3a, 0x20, - 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, - 0x41, 0x4c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, - 0x41, 0x53, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x5f, 0x52, 0x41, 0x54, 0x45, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x3a, 0x20, + 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x46, 0x52, 0x41, 0x4d, + 0x45, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x35, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, + 0x41, 0x53, 0x45, 0x5f, 0x43, 0x48, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, - 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x43, 0x48, - 0x4e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x33, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, - 0x56, 0x45, 0x4e, 0x43, 0x5f, 0x52, 0x4f, 0x49, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x36, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, + 0x41, 0x53, 0x45, 0x5f, 0x52, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x37, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, + 0x56, 0x55, 0x49, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x34, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, - 0x46, 0x52, 0x41, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x35, 0x3a, 0x20, - 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x48, 0x4e, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38, 0x3a, 0x20, 0x55, + 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x4a, 0x50, 0x45, 0x47, 0x5f, + 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x4e, 0x43, 0x45, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x39, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, 0x41, + 0x53, 0x45, 0x5f, 0x4a, 0x50, 0x45, 0x47, 0x5f, 0x50, 0x41, 0x52, 0x41, + 0x4d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x36, 0x3a, 0x20, - 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x43, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x37, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, - 0x41, 0x53, 0x45, 0x5f, 0x56, 0x55, 0x49, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x30, 0x3a, 0x55, 0x54, 0x5f, + 0x43, 0x41, 0x53, 0x45, 0x5f, 0x56, 0x49, 0x52, 0x5f, 0x49, 0x4e, 0x54, + 0x52, 0x41, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x20, + 0x20, 0x20, 0x31, 0x31, 0x3a, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, + 0x5f, 0x49, 0x4e, 0x54, 0x52, 0x41, 0x5f, 0x52, 0x45, 0x46, 0x52, 0x45, + 0x53, 0x48, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x32, 0x3a, 0x55, 0x54, + 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x4c, 0x55, + 0x54, 0x49, 0x4f, 0x4e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x31, 0x33, 0x3a, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, + 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x49, 0x44, + 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x38, 0x3a, 0x20, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x4a, - 0x50, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4f, - 0x4e, 0x43, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x39, 0x3a, 0x20, 0x55, - 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x4a, 0x50, 0x45, 0x47, 0x5f, - 0x50, 0x41, 0x52, 0x41, 0x4d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x34, 0x3a, 0x55, 0x54, 0x5f, + 0x43, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x5f, + 0x43, 0x48, 0x4e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x31, 0x35, 0x3a, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, + 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x55, 0x53, 0x52, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x30, - 0x3a, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x56, 0x49, 0x52, - 0x5f, 0x49, 0x4e, 0x54, 0x52, 0x41, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, - 0x56, 0x41, 0x4c, 0x20, 0x20, 0x20, 0x31, 0x31, 0x3a, 0x55, 0x54, 0x5f, - 0x43, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x52, 0x41, 0x5f, 0x52, - 0x45, 0x46, 0x52, 0x45, 0x53, 0x48, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x36, 0x3a, 0x55, 0x54, 0x5f, + 0x43, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4a, 0x41, + 0x4d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x31, 0x37, 0x3a, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, + 0x5f, 0x53, 0x55, 0x50, 0x45, 0x52, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, - 0x32, 0x3a, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, - 0x53, 0x4f, 0x4c, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x33, 0x3a, 0x55, 0x54, - 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, - 0x54, 0x5f, 0x49, 0x44, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x34, - 0x3a, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x45, 0x4c, - 0x45, 0x43, 0x54, 0x5f, 0x43, 0x48, 0x4e, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x35, 0x3a, 0x55, 0x54, 0x5f, - 0x43, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x55, 0x53, 0x52, - 0x5f, 0x44, 0x41, 0x54, 0x41, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x36, - 0x3a, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x41, 0x54, - 0x45, 0x5f, 0x4a, 0x41, 0x4d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x37, 0x3a, 0x55, 0x54, 0x5f, - 0x43, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x45, 0x52, 0x5f, 0x46, - 0x52, 0x41, 0x4d, 0x45, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x38, 0x3a, - 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x4c, 0x49, 0x43, - 0x45, 0x5f, 0x53, 0x50, 0x4c, 0x49, 0x54, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x39, 0x3a, 0x55, 0x54, 0x5f, 0x43, - 0x41, 0x53, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, - 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x0a, 0x0a + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x38, 0x3a, 0x55, 0x54, 0x5f, 0x43, + 0x41, 0x53, 0x45, 0x5f, 0x53, 0x4c, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x50, + 0x4c, 0x49, 0x54, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x31, 0x39, 0x3a, 0x55, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, + 0x4f, 0x59, 0x0a, 0x0a diff --git a/msp/sample/venc/help.md b/msp/sample/venc/help.md index 533f799..66ca5c9 100644 --- a/msp/sample/venc/help.md +++ b/msp/sample/venc/help.md @@ -31,6 +31,8 @@ --grpId group id for select group, rang in [0, 32). [0] --bCoreCoWork enable multi core. [0] + --bStrmCached output stream use cached memory. [0] + --bAttachHdr support attach headers(sps/pps) to PB frame for h.265. [0] ``` @@ -113,6 +115,9 @@ --maxQp 0..51, Maximum frame header qp for any picture. [51] --minIqp 0..51, Minimum frame header qp for I picture. [16] --maxIqp 0..51, Maximum frame header qp for I picture. [51] + --chgPos vbr/avbr chgpos 20-100, def 90 + --stillPercent avbr still percent 10-100 def 25 + --stillQp 0..51, the max QP value of I frame for still scene. [0] --deltaQpI -51..51, QP adjustment for intra frames. [-2] --maxIprop 1..100, the max I P size ratio. [100] diff --git a/msp/sample/venc/sample_main.c b/msp/sample/venc/sample_main.c index cc40897..50258d4 100644 --- a/msp/sample/venc/sample_main.c +++ b/msp/sample/venc/sample_main.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/venc/sample_venc b/msp/sample/venc/sample_venc deleted file mode 100644 index c9abf22..0000000 Binary files a/msp/sample/venc/sample_venc and /dev/null differ diff --git a/msp/sample/video_convert/.clang-format b/msp/sample/video_convert/.clang-format new file mode 100644 index 0000000..a305bfd --- /dev/null +++ b/msp/sample/video_convert/.clang-format @@ -0,0 +1,96 @@ +--- +Language: Cpp +# BasedOnStyle: Google +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlinesLeft: true +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: false +AllowShortIfStatementsOnASingleLine: true +AllowShortLoopsOnASingleLine: true +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: true +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 140 +CommentPragmas: '^ IWYU pragma:' +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: true +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +IncludeCategories: + - Regex: '^<.*\.h>' + Priority: 1 + - Regex: '^<.*' + Priority: 2 + - Regex: '.*' + Priority: 3 +IncludeIsMainRegex: '([-_](test|unittest))?$' +IndentCaseLabels: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: false +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 200 +PointerAlignment: Left +ReflowComments: true +SortIncludes: true +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Auto +TabWidth: 4 +UseTab: Never +... + diff --git a/msp/sample/video_convert/Makefile b/msp/sample/video_convert/Makefile new file mode 100644 index 0000000..018aada --- /dev/null +++ b/msp/sample/video_convert/Makefile @@ -0,0 +1,61 @@ +CUR_PATH := $(shell pwd) +HOME_PATH := $(abspath $(CUR_PATH)/../../..) + +include $(HOME_PATH)/build/color.mk +include $(HOME_PATH)/build/config.mak + +PRJ_OUT_HOME := $(HOME_PATH)/build/out/$(PROJECT) +OBJ_OUT_PATH := $(PRJ_OUT_HOME)/objs +MSP_OUT_PATH := $(OBJ_OUT_PATH)/msp/out +OUT_PATH := $(HOME_PATH)/msp/out +LIB_PATH := $(OUT_PATH)/lib +INC_PATH := $(OUT_PATH)/include +SRC_PATH := $(CUR_PATH) +SRC_RELATIVE_PATH := $(subst $(HOME_PATH)/,,$(SRC_PATH)) +THIRD_PARTY_PATH := $(HOME_PATH)/third-party +TARGET_OUT_PATH := $(OBJ_OUT_PATH)/$(SRC_RELATIVE_PATH) +ROOTFS_TARGET_PATH := $(OUT_PATH) + +# output +MOD_NAME := sample_video_convert +OUTPUT := $(TARGET_OUT_PATH)/.obj + +# source +SRCS := $(wildcard $(SRC_PATH)/*.c) + +CINCLUDE := -I$(SRC_PATH) \ + -I$(INC_PATH) \ + -I$(THIRD_PARTY_PATH)/ffmpeg/include \ + + +OBJS := $(addprefix $(OUTPUT)/,$(notdir $(patsubst %.c,%.o,$(SRCS)))) + +# exec +TARGET := $(TARGET_OUT_PATH)/$(MOD_NAME) + +# build flags +CFLAGS := -Wall -Wl,-rpath-link=$(LIB_PATH):$(THIRD_PARTY_PATH)/ffmpeg/lib +CFLAGS += -D__BUILD_VERSION__=\"$(SDK_VERSION)\" +CFLAGS += -D__BUILD_NAME__=\"$(MOD_NAME)\" + +ifeq ($(debug),yes) +CFLAGS += -O0 -ggdb3 +else +CFLAGS += -O2 +endif + +# dependency +CLIB += -L$(LIB_PATH) +CLIB += -lax_sys +CLIB += -lax_vdec +CLIB += -lax_venc +CLIB += -L$(THIRD_PARTY_PATH)/ffmpeg/lib -lavcodec -lavutil -lavformat +CLIB += -lpthread -lm + +INSTALL_TARGET := $(TARGET) +INSTALL_DIR := $(ROOTFS_TARGET_PATH)/bin/ + +# link +LINK = $(CC) + +include $(HOME_PATH)/build/rules.mak \ No newline at end of file diff --git a/msp/sample/video_convert/README b/msp/sample/video_convert/README new file mode 100644 index 0000000..057a914 --- /dev/null +++ b/msp/sample/video_convert/README @@ -0,0 +1,39 @@ +overview +1. decode mp4 or raw 264/265 file by -i option. +2. scaler video size to -w and -h +3. encode raw 264/264 specified by -t option +4. save file to /opt/data/ directory, file name: output%d_wxh.264(265) %d is the ppl index. + +usage: sample_video_convert [OPTION] ...: +options: + -i file path (string *.mp4, h264, h265) + -w output width (int >= 64 [=1280]) + -h output height (int >= 64 [=720]) + -t output payload type 96: H264 265: H265 (int [=96]) + -d decode output order, 0: DISPLAY 1: DECCODE (int [=DECCODE]) + -v log level (int [=3]) + -? print this message + +example: + # decode 1920x1080.mp4 and convert to output0_1280x720.264 + sample_video_convert -i 1920x1080.mp4 -w 1280 -h 720 + + +/opt/bin # ./sample_video_convert -i person_test_ov1_noB.mp4 -w 1280 -h 720 +sample build at Jun 11 2024 24, SDK V2.6.0 +06-11 10:52:04:138 2390146117 874 K PPL: person_test_ov1_noB.mp4: probe 1920x1080, codec 96, fps 30 +06-11 10:52:07:970 2393978378 890 K PPL: person_test_ov1_noB.mp4: eof, total frame num 1799 + + usage statistics, H264 + Multi-core usage statistics: + Core[ 0] used 899 times (49%) + Core[ 1] used 900 times (50%) + + + usage statistics, JPEG + Single-core usage statistics: + Core[ 0] used 0 times ( 0%) + +done +/opt/bin # ls /opt/data/ +output0_1280x720.264 diff --git a/msp/sample/video_convert/def.h b/msp/sample/video_convert/def.h new file mode 100644 index 0000000..a3e13fd --- /dev/null +++ b/msp/sample/video_convert/def.h @@ -0,0 +1,51 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#ifndef __SAMPLE_DEF_H__ +#define __SAMPLE_DEF_H__ + +#include "ax_global_type.h" + +typedef AX_VOID* AX_HANDLE; + +#define AX_INVALID_HANDLE (AX_NULL) +#define INVALID_VDEC_GRP (-1) +#define INVALID_VENC_CHN (-1) + +#define MAX_PATH (260) + +#ifndef AX_MAX +#define AX_MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif + +#ifndef AX_MIN +#define AX_MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +#ifndef ALIGN_UP +#define ALIGN_UP(x, align) (((x) + ((align)-1)) & ~((align)-1)) +#endif + +/* VDEC stride align 256 */ +#define AX_SHIFT_LEFT_ALIGN(a) (1 << (a)) +#define VDEC_STRIDE_ALIGN AX_SHIFT_LEFT_ALIGN(8) + +/* VENC stride align */ +#define VENC_FBC_STRIDE_ALIGN_VAL (256) +#define VENC_NONE_FBC_STRIDE_ALIGN_VAL (16) + +#define VDEC_PP0 (0) +#define VDEC_PP1 (1) +#define VDEC_PP2 (2) + +#define MALLOC malloc +#define FREE free +#define CALLOC calloc + +#endif /* __SAMPLE_DEF_H__ */ \ No newline at end of file diff --git a/msp/sample/video_convert/event.c b/msp/sample/video_convert/event.c new file mode 100644 index 0000000..b38dc79 --- /dev/null +++ b/msp/sample/video_convert/event.c @@ -0,0 +1,131 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#include "event.h" +#include +#include +#include +#include +#include +#include "log.h" + +#define TAG "EVENT" + +typedef struct { + AX_CHAR name[64]; + pthread_mutex_t mutx; + pthread_cond_t cond; + AX_BOOL pred; +} event_obj_t; + +AX_HANDLE sample_create_event(const AX_CHAR *name) { + event_obj_t *obj = CALLOC(1, sizeof(event_obj_t)); + if (!obj) { + LOG_M_E(TAG, "create %s event obj fail", name); + return AX_INVALID_HANDLE; + } + + obj->pred = AX_FALSE; + if (name) { + strcpy(obj->name, name); + } else { + strcpy(obj->name, "unknown"); + } + + pthread_mutex_init(&obj->mutx, AX_NULL); + + pthread_condattr_t cond_attr; + pthread_condattr_init(&cond_attr); + pthread_condattr_setclock(&cond_attr, CLOCK_MONOTONIC); + pthread_cond_init(&obj->cond, &cond_attr); + pthread_condattr_destroy(&cond_attr); + + return (AX_HANDLE)obj; +} + +AX_BOOL sample_destory_event(AX_HANDLE handle) { + event_obj_t *obj = (event_obj_t *)handle; + if (!obj) { + LOG_M_E(TAG, "event obj is nil"); + return AX_FALSE; + } + + pthread_cond_destroy(&obj->cond); + pthread_mutex_destroy(&obj->mutx); + + FREE(obj); + return AX_TRUE; +} + +AX_BOOL sample_set_event(AX_HANDLE handle) { + event_obj_t *obj = (event_obj_t *)handle; + if (!obj) { + LOG_M_E(TAG, "event obj is nil"); + return AX_FALSE; + } + + pthread_mutex_lock(&obj->mutx); + obj->pred = AX_TRUE; + pthread_cond_signal(&obj->cond); + pthread_mutex_unlock(&obj->mutx); + + return AX_TRUE; +} + +AX_BOOL sample_reset_event(AX_HANDLE handle) { + event_obj_t *obj = (event_obj_t *)handle; + if (!obj) { + LOG_M_E(TAG, "event obj is nil"); + return AX_FALSE; + } + + pthread_mutex_lock(&obj->mutx); + obj->pred = AX_FALSE; + pthread_mutex_unlock(&obj->mutx); + + return AX_TRUE; +} +AX_BOOL sample_wait_event(AX_HANDLE handle, AX_S32 timeout) { + event_obj_t *obj = (event_obj_t *)handle; + if (!obj) { + LOG_M_E(TAG, "event obj is nil"); + return AX_FALSE; + } + + AX_BOOL ret = AX_TRUE; + pthread_mutex_lock(&obj->mutx); + + if (timeout < 0) { + while (!obj->pred) { + pthread_cond_wait(&obj->cond, &obj->mutx); + } + } else if (0 == timeout) { + ret = obj->pred ? AX_TRUE : AX_FALSE; + } else { + struct timespec now, abs; + clock_gettime(CLOCK_MONOTONIC, &now); + + abs.tv_sec = now.tv_sec + (timeout / 1000); + abs.tv_nsec = now.tv_nsec + (timeout % 1000) * 1000000; + if (abs.tv_nsec >= 1000000000) { + abs.tv_nsec -= 1000000000; + abs.tv_sec += 1; + } + + while (!obj->pred) { + if (0 != pthread_cond_timedwait(&obj->cond, &obj->mutx, &abs)) { + ret = AX_FALSE; + break; + } + } + } + + pthread_mutex_unlock(&obj->mutx); + return ret; +} \ No newline at end of file diff --git a/msp/sample/video_convert/event.h b/msp/sample/video_convert/event.h new file mode 100644 index 0000000..8bd9050 --- /dev/null +++ b/msp/sample/video_convert/event.h @@ -0,0 +1,22 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#ifndef __SAMPLE_EVENT_H__ +#define __SAMPLE_EVENT_H__ + +#include "def.h" + +AX_HANDLE sample_create_event(const AX_CHAR *name); +AX_BOOL sample_destory_event(AX_HANDLE handle); + +AX_BOOL sample_set_event(AX_HANDLE handle); +AX_BOOL sample_reset_event(AX_HANDLE handle); +AX_BOOL sample_wait_event(AX_HANDLE handle, AX_S32 timeout); + +#endif /* __SAMPLE_EVENT_H__ */ \ No newline at end of file diff --git a/msp/sample/video_convert/log.c b/msp/sample/video_convert/log.c new file mode 100644 index 0000000..b532f76 --- /dev/null +++ b/msp/sample/video_convert/log.c @@ -0,0 +1,51 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#include "log.h" +#include +#include +#include +#include +#include +#include "utils.h" + +#include +#define gettid() syscall(SYS_gettid) +#define MAX_LOG_BUFF (1024) + +static AX_S32 g_lv = LOG_LEVEL_WARN; + +static AX_VOID __logger(const AX_CHAR* fmt, va_list va) { + AX_CHAR buf[MAX_LOG_BUFF]; + AX_S32 len = vsnprintf(buf, sizeof(buf), fmt, va); + if (len > 0) { + struct timeval tv; + struct tm t; + gettimeofday(&tv, AX_NULL); + time_t now = time(AX_NULL); + localtime_r(&now, &t); + fprintf(stdout, "%02u-%02u %02u:%02u:%02u:%03u %lld %6lu %s", t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec, + (AX_U32)(tv.tv_usec / 1000), get_tick_count(), (long unsigned int)gettid(), buf); + } +} + +AX_VOID logger(AX_S32 lv, const AX_CHAR* fmt, ...) { + if (lv <= g_lv) { + va_list va; + va_start(va, fmt); + __logger(fmt, va); + va_end(va); + } +} + +AX_VOID set_log_level(AX_S32 lv) { + if (lv >= LOG_LEVEL_NONE && lv < LOG_LEVEL_BUTT) { + g_lv = lv; + } +} \ No newline at end of file diff --git a/msp/sample/video_convert/log.h b/msp/sample/video_convert/log.h new file mode 100644 index 0000000..4d75c8b --- /dev/null +++ b/msp/sample/video_convert/log.h @@ -0,0 +1,59 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#ifndef __SAMPLE_LOG_H__ +#define __SAMPLE_LOG_H__ + +#include +#include "def.h" + +#define MACRO_LOG_BLACK "\033[1;30;30m" +#define MACRO_LOG_RED "\033[1;30;31m" +#define MACRO_LOG_GREEN "\033[1;30;32m" +#define MACRO_LOG_YELLOW "\033[1;30;33m" +#define MACRO_LOG_BLUE "\033[1;30;34m" +#define MACRO_LOG_PURPLE "\033[1;30;35m" +#define MACRO_LOG_WHITE "\033[1;30;37m" +#define MACRO_LOG_END "\033[0m\n" + +typedef enum { + LOG_LEVEL_NONE = 0, + LOG_LEVEL_CRIT = 1, + LOG_LEVEL_ERROR = 2, + LOG_LEVEL_WARN = 3, + LOG_LEVEL_INFO = 4, + LOG_LEVEL_DEBUG = 5, + LOG_LEVEL_BUTT +} LOG_LEVEL_E; + +AX_VOID logger(AX_S32 lv, const AX_CHAR* fmt, ...); +AX_VOID set_log_level(AX_S32 lv); +#define LOGGER logger + +#define LOG_M_C(tag, fmt, ...) LOGGER(LOG_LEVEL_CRIT, MACRO_LOG_YELLOW "K %s: " fmt MACRO_LOG_END, tag, ##__VA_ARGS__) +#define LOG_M_E(tag, fmt, ...) LOGGER(LOG_LEVEL_ERROR, MACRO_LOG_RED "E %s: " fmt MACRO_LOG_END, tag, ##__VA_ARGS__) +#define LOG_M_W(tag, fmt, ...) LOGGER(LOG_LEVEL_WARN, MACRO_LOG_YELLOW "W %s: " fmt MACRO_LOG_END, tag, ##__VA_ARGS__) +#define LOG_M_I(tag, fmt, ...) LOGGER(LOG_LEVEL_INFO, MACRO_LOG_GREEN "I %s: " fmt MACRO_LOG_END, tag, ##__VA_ARGS__) +#define LOG_M_D(tag, fmt, ...) LOGGER(LOG_LEVEL_DEBUG, MACRO_LOG_WHITE "D %s: " fmt MACRO_LOG_END, tag, ##__VA_ARGS__) + +#define LOG_MM_C(tag, fmt, ...) \ + LOGGER(LOG_LEVEL_CRIT, MACRO_LOG_GREEN "K %s <%s>.%d: " fmt MACRO_LOG_END, tag, __func__, __LINE__, ##__VA_ARGS__) +#define LOG_MM_E(tag, fmt, ...) \ + LOGGER(LOG_LEVEL_ERROR, MACRO_LOG_GREEN "E %s <%s>.%d: " fmt MACRO_LOG_END, tag, __func__, __LINE__, ##__VA_ARGS__) +#define LOG_MM_W(tag, fmt, ...) \ + LOGGER(LOG_LEVEL_WARN, MACRO_LOG_GREEN "W %s <%s>.%d: " fmt MACRO_LOG_END, tag, __func__, __LINE__, ##__VA_ARGS__) +#define LOG_MM_I(tag, fmt, ...) \ + LOGGER(LOG_LEVEL_INFO, MACRO_LOG_GREEN "I %s <%s>.%d: " fmt MACRO_LOG_END, tag, __func__, __LINE__, ##__VA_ARGS__) +#define LOG_MM_D(tag, fmt, ...) \ + LOGGER(LOG_LEVEL_DEBUG, MACRO_LOG_GREEN "D %s <%s>.%d: " fmt MACRO_LOG_END, tag, __func__, __LINE__, ##__VA_ARGS__) + +#define ENTER_FUNC() LOG_MM_I(TAG, "+++") +#define LEAVE_FUNC() LOG_MM_I(TAG, "---") + +#endif /* __SAMPLE_LOG_H__ */ diff --git a/msp/sample/video_convert/main.c b/msp/sample/video_convert/main.c new file mode 100644 index 0000000..af6452e --- /dev/null +++ b/msp/sample/video_convert/main.c @@ -0,0 +1,142 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "log.h" + +static volatile AX_S32 g_exit = 0; +static AX_VOID __sigint(AX_S32 iSigNo); +static AX_VOID print_usage(AX_VOID); + +int main(int argc, char *argv[]) { + printf("sample build at %s %d, SDK %s\n", __DATE__, __LINE__, __BUILD_VERSION__); + + signal(SIGPIPE, SIG_IGN); + signal(SIGINT, __sigint); + + AX_S32 c; + AX_S32 quit = 0; + AX_CHAR fpath[MAX_PATH]; + AX_S32 codec = PT_H264; + AX_S32 log_lv = LOG_LEVEL_WARN; + AX_S32 width = 1280; + AX_S32 height = 720; + AX_S32 order = 1; /* AX_VDEC_OUTPUT_ORDER_DEC */ + + if (argc < 2) { + print_usage(); + exit(0); + } + + while ((c = getopt(argc, argv, "i:w:h:t:d:v:")) != -1) { + quit = 0; + switch (c) { + case 'i': + strcpy(fpath, optarg); + break; + case 't': + codec = (AX_S32)atoi(optarg); + if (!(PT_H264 == codec || PT_H265 == codec)) { + quit = 1; + } + break; + case 'w': + width = (AX_S32)atoi(optarg); + if (width < 64) { + quit = 1; + } + break; + case 'h': + height = (AX_S32)atoi(optarg); + if (height < 64) { + quit = 1; + } + break; + case 'd': + order = (AX_S32)atoi(optarg); + if (order < 0 || order > 1) { + quit = 1; + } + break; + case 'v': + log_lv = (AX_S32)atoi(optarg); + break; + case '?': + quit = 1; + break; + default: + quit = 1; + break; + } + } + + if (quit) { + print_usage(); + return 1; + } + + if (0 != access(fpath, F_OK)) { + printf("%s not exist\n", fpath); + return 1; + } + + set_log_level(log_lv); + + if (!sample_sys_init()) { + return 1; + } + + AX_HANDLE ppl = sample_create_ppl(fpath, (AX_PAYLOAD_TYPE_E)codec, width, height, order); + if (AX_INVALID_HANDLE == ppl) { + sample_sys_deinit(); + return 1; + } + + if (!sample_start_ppl(ppl)) { + sample_destory_ppl(ppl); + sample_sys_deinit(); + return 1; + } + + while (!g_exit) { + if (sample_wait_ppl_eof(ppl, 1000)) { + break; + } + } + + sample_stop_ppl(ppl); + sample_destory_ppl(ppl); + sample_sys_deinit(); + printf("done\n"); + + return 0; +} + +static AX_VOID __sigint(AX_S32 iSigNo) { + printf("Catch signal %d\n", iSigNo); + g_exit = 1; +} + +static AX_VOID print_usage(AX_VOID) { + printf("usage: %s [OPTION] ...:\n", __BUILD_NAME__); + printf("options:\n"); + printf(" -i\t\t file path (string *.mp4, h264, h265)\n"); + printf(" -w\t\t output width (int >= 64 [=1280])\n"); + printf(" -h\t\t output height (int >= 64 [=720])\n"); + printf(" -t\t\t output payload type %d: H264 %d: H265 (int [=%d])\n", PT_H264, PT_H265, PT_H264); + printf(" -d\t\t decode output order, 0: DISPLAY 1: DECCODE (int [=DECCODE])\n"); + printf(" -v\t\t log level (int [=3])\n"); + printf(" -?\t\t print this message\n"); +} diff --git a/msp/sample/video_convert/ppl.c b/msp/sample/video_convert/ppl.c new file mode 100644 index 0000000..9318144 --- /dev/null +++ b/msp/sample/video_convert/ppl.c @@ -0,0 +1,442 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#include "ppl.h" +#include +#include +#include +#include "event.h" +#include "log.h" +#include "stream.h" +#include "utils.h" +#include "vdec.h" +#include "venc.h" + +#define TAG "PPL" + +typedef struct { + AX_BOOL is_rtsp; + AX_U32 width; + AX_U32 height; + AX_PAYLOAD_TYPE_E payload; + AX_VDEC_OUTPUT_ORDER_E order; + + AX_HANDLE stream; + AX_HANDLE stream_event; + AX_S32 vdGrp; + AX_S32 veChn; + FILE *fp; /* file to save encoded stream */ +} ppl_obj_t; + +AX_BOOL sample_sys_init(AX_VOID) { + ENTER_FUNC(); + + AX_S32 ret; + + ret = AX_SYS_Init(); + if (0 != ret) { + LOG_M_E(TAG, "AX_SYS_Init() fail, ret = 0x%x", ret); + return AX_FALSE; + } + + (AX_VOID) AX_POOL_Exit(); + + AX_VDEC_MOD_ATTR_T vdec_attr; + memset(&vdec_attr, 0, sizeof(vdec_attr)); + vdec_attr.u32MaxGroupCount = AX_VDEC_MAX_GRP_NUM; /* can be configured by max. decoded grp num */ + vdec_attr.enDecModule = AX_ENABLE_ONLY_VDEC; + ret = AX_VDEC_Init(&vdec_attr); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_Init() fail, ret = 0x%x", ret); + return AX_FALSE; + } + + AX_VENC_MOD_ATTR_T venc_attr; + memset(&venc_attr, 0, sizeof(venc_attr)); + venc_attr.enVencType = AX_VENC_VIDEO_ENCODER; + venc_attr.stModThdAttr.u32TotalThreadNum = 8; + ret = AX_VENC_Init(&venc_attr); + if (0 != ret) { + LOG_M_E(TAG, "AX_VENC_Init() fail, ret = 0x%x", ret); + return AX_FALSE; + } + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_sys_deinit(AX_VOID) { + ENTER_FUNC(); + + AX_S32 ret; + ret = AX_VENC_Deinit(); + if (0 != ret) { + LOG_M_E(TAG, "AX_VENC_Deinit() fail, ret = 0x%x", ret); + return AX_FALSE; + } + + ret = AX_VDEC_Deinit(); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_Deinit() fail, ret = 0x%x", ret); + return AX_FALSE; + } + + ret = AX_POOL_Exit(); + if (0 != ret) { + LOG_M_E(TAG, "AX_POOL_Exit() fail, ret = 0x%x", ret); + return AX_FALSE; + } + + ret = AX_SYS_Deinit(); + if (0 != ret) { + LOG_M_E(TAG, "AX_SYS_Deinit() fail, ret = 0x%x", ret); + return AX_FALSE; + } + + LEAVE_FUNC(); + return AX_TRUE; +} + +static AX_VOID on_recv_encoded_stream(AX_S32 veChn, AX_VENC_STREAM_T *stream, AX_VOID *sinker) { + // printf("veChn %d seq %lld, len %d\n", veChn, stream->stPack.u64SeqNum, stream->stPack.u32Len); + ppl_obj_t *ppl = (ppl_obj_t *)sinker; + if (ppl->fp) { + fwrite(stream->stPack.pu8Addr, 1, stream->stPack.u32Len, ppl->fp); + } +} + +static AX_BOOL source_is_rtsp(const AX_CHAR *fpath) { + const AX_CHAR *prefix = "rtsp://"; + return (0 == strncasecmp(fpath, prefix, strlen(prefix))) ? AX_TRUE : AX_FALSE; +} + +static AX_BOOL create_codec_objs(AX_VOID *obj, const stream_info_t *info) { + ppl_obj_t *ppl = (ppl_obj_t *)obj; + + /** + * step1: create vdec object + * as for sample, only support local IP stream file, so set to playback mode and AX_VDEC_OUTPUT_ORDER_DEC. + * application can change by source type (rtsp or file) + * rtsp: AX_VDEC_DISPLAY_MODE_PREVIEW + * file: AX_VDEC_DISPLAY_MODE_PLAYBACK + * + * IPB: AX_VDEC_OUTPUT_ORDER_DISP + */ + vdec_attr_t vdec_attr; + memset(&vdec_attr, 0, sizeof(vdec_attr)); + vdec_attr.input_width = info->width; + vdec_attr.input_heigth = info->height; + vdec_attr.fps = info->fps; + vdec_attr.payload = info->payload; + vdec_attr.order = ppl->order; + vdec_attr.display_mode = ppl->is_rtsp ? AX_VDEC_DISPLAY_MODE_PREVIEW : AX_VDEC_DISPLAY_MODE_PLAYBACK; + + /* just for sample, set fixed 8 blk_num, application can set a proper value to decrease memory usage */ + vdec_attr.blk_num = 8; + vdec_attr.output_width = ppl->width; + vdec_attr.output_height = ppl->height; + ppl->vdGrp = sample_vdec_create_grp(&vdec_attr); + if (INVALID_VDEC_GRP == ppl->vdGrp) { + return AX_FALSE; + } + + /** + * step2: create venc object + * as for sample, RC is set to fixed value and bitrate is 4Kbps. + * recommend application to change to proper parameters. + */ + venc_attr_t venc_attr; + memset(&venc_attr, 0, sizeof(venc_attr)); + venc_attr.payload = ppl->payload; + venc_attr.width = ppl->width; + venc_attr.height = ppl->height; + venc_attr.fps = info->fps; + if (PT_H264 == ppl->payload) { + venc_attr.profile = AX_VENC_H264_MAIN_PROFILE; + venc_attr.level = AX_VENC_H264_LEVEL_5_2; + + venc_attr.rc.s32FirstFrameStartQp = 10; + venc_attr.rc.enRcMode = AX_VENC_RC_MODE_H264CBR; + venc_attr.rc.stH264Cbr.u32Gop = info->fps; + venc_attr.rc.stH264Cbr.u32BitRate = 4096; + venc_attr.rc.stH264Cbr.u32MinQp = 10; + venc_attr.rc.stH264Cbr.u32MaxQp = 51; + venc_attr.rc.stH264Cbr.u32MinIQp = 10; + venc_attr.rc.stH264Cbr.u32MaxIQp = 51; + venc_attr.rc.stH264Cbr.u32MinIprop = 10; + venc_attr.rc.stH264Cbr.u32MaxIprop = 40; + venc_attr.rc.stH264Cbr.s32IntraQpDelta = -1; + + } else { + venc_attr.profile = AX_VENC_HEVC_MAIN_PROFILE; + venc_attr.level = AX_VENC_HEVC_LEVEL_5_1; + venc_attr.tile = AX_VENC_HEVC_MAIN_TIER; + + venc_attr.rc.s32FirstFrameStartQp = 10; + venc_attr.rc.enRcMode = AX_VENC_RC_MODE_H265CBR; + venc_attr.rc.stH265Cbr.u32Gop = info->fps; + venc_attr.rc.stH265Cbr.u32BitRate = 4096; + venc_attr.rc.stH265Cbr.u32MinQp = 10; + venc_attr.rc.stH265Cbr.u32MaxQp = 51; + venc_attr.rc.stH265Cbr.u32MinIQp = 10; + venc_attr.rc.stH265Cbr.u32MaxIQp = 51; + venc_attr.rc.stH265Cbr.u32MinIprop = 30; + venc_attr.rc.stH265Cbr.u32MaxIprop = 40; + venc_attr.rc.stH265Cbr.s32IntraQpDelta = -1; + } + ppl->veChn = sample_venc_create_chn(&venc_attr); + if (INVALID_VENC_CHN == ppl->veChn) { + sample_vdec_destory_grp(ppl->vdGrp); + return AX_FALSE; + } + + /* register encoded stream handler */ + venc_sink_t vencSink = { + .on_recv_stream = on_recv_encoded_stream, + .sinker = ppl, + }; + + sample_venc_register_sink(ppl->veChn, vencSink); + + /* open file to save encoded stream */ + AX_CHAR fpath[MAX_PATH]; + sprintf(fpath, "/opt/data/output%d_%dx%d.%s", ppl->vdGrp, ppl->width, ppl->height, (PT_H265 == ppl->payload) ? "265" : "264"); + ppl->fp = fopen(fpath, "wb"); + if (!ppl->fp) { + sample_vdec_destory_grp(ppl->vdGrp); + sample_venc_destory_chn(ppl->veChn); + LOG_M_E(TAG, "open %s to save encoded stream fail", fpath); + return AX_FALSE; + } + + /* wakeup to start transfering */ + sample_set_event(ppl->stream_event); + return AX_TRUE; +} + +static AX_VOID on_stream_probe_event(const stream_info_t *info, AX_VOID *obj) { + LOG_M_C(TAG, "%s: probe %dx%d, codec %d, fps %d", info->url, info->width, info->height, info->payload, info->fps); + create_codec_objs(obj, info); +} + +static AX_VOID on_stream_eof_event(const AX_CHAR *url, AX_U32 frame_num, AX_VOID *obj) { + LOG_M_C(TAG, "%s: eof, total frame num %d", url, frame_num); + + ppl_obj_t *ppl = (ppl_obj_t *)obj; + sample_set_event(ppl->stream_event); +} + +static AX_VOID on_send_stream(const AX_U8 *data, AX_U32 len, AX_U64 pts, AX_VOID *sinker) { + ppl_obj_t *ppl = (ppl_obj_t *)sinker; + sample_vdec_send_stream(ppl->vdGrp, data, len, pts); +} + +static AX_BOOL sample_link_codec(ppl_obj_t *ppl) { + AX_MOD_INFO_T src = {AX_ID_VDEC, ppl->vdGrp, VDEC_PP1}; + AX_MOD_INFO_T dst = {AX_ID_VENC, 0, ppl->veChn}; + AX_S32 ret = AX_SYS_Link(&src, &dst); + if (0 != ret) { + LOG_M_E(TAG, "AX_SYS_Link(VDEC-%d-%d -> VENC-%d-%d) fail, ret = 0x%x", ppl->vdGrp, VDEC_PP1, 0, ppl->veChn, ret); + return AX_FALSE; + } + + return AX_TRUE; +} + +static AX_BOOL sample_unlink_codec(ppl_obj_t *ppl) { + AX_MOD_INFO_T src = {AX_ID_VDEC, ppl->vdGrp, VDEC_PP1}; + AX_MOD_INFO_T dst = {AX_ID_VENC, 0, ppl->veChn}; + AX_S32 ret = AX_SYS_UnLink(&src, &dst); + if (0 != ret) { + LOG_M_E(TAG, "AX_SYS_UnLink(VDEC-%d-%d -> VENC-%d-%d) fail, ret = 0x%x", ppl->vdGrp, VDEC_PP1, 0, ppl->veChn, ret); + return AX_FALSE; + } + + return AX_TRUE; +} + +AX_HANDLE sample_create_ppl(const AX_CHAR *fpath, AX_PAYLOAD_TYPE_E payload, AX_U32 width, AX_U32 height, AX_S32 order) { + ppl_obj_t *ppl = CALLOC(1, sizeof(ppl_obj_t)); + if (!ppl) { + LOG_M_E(TAG, "create ppl object fail, url %s", fpath); + return AX_INVALID_HANDLE; + } + + ppl->stream_event = sample_create_event("stream"); + if (AX_INVALID_HANDLE == ppl->stream_event) { + FREE(ppl); + return AX_INVALID_HANDLE; + } + + ppl->payload = payload; + ppl->width = width; + ppl->height = height; + ppl->vdGrp = -1; + ppl->veChn = -1; + ppl->is_rtsp = source_is_rtsp(fpath) ? AX_TRUE : AX_FALSE; + ppl->order = (order == AX_VDEC_OUTPUT_ORDER_DISP) ? AX_VDEC_OUTPUT_ORDER_DISP : AX_VDEC_OUTPUT_ORDER_DEC; + + stream_attr_t stream_attr; + memset(&stream_attr, 0, sizeof(stream_attr)); + strcpy(stream_attr.url, fpath); + stream_attr.event.probe = on_stream_probe_event; + stream_attr.event.eof = on_stream_eof_event; + stream_attr.event.obj = (AX_VOID *)ppl; + ppl->stream = sample_stream_create(&stream_attr); + if (AX_INVALID_HANDLE == ppl->stream) { + FREE(ppl); + return AX_INVALID_HANDLE; + } + + LEAVE_FUNC(); + return (AX_HANDLE)ppl; +} + +AX_BOOL sample_destory_ppl(AX_HANDLE handle) { + ENTER_FUNC(); + + ppl_obj_t *ppl = (ppl_obj_t *)handle; + if (!ppl) { + LOG_M_E(TAG, "obj is nil"); + return AX_FALSE; + } + + if (INVALID_VENC_CHN != ppl->veChn) { + sample_venc_destory_chn(ppl->veChn); + ppl->veChn = INVALID_VENC_CHN; + } + + if (INVALID_VDEC_GRP != ppl->vdGrp) { + sample_vdec_destory_grp(ppl->vdGrp); + ppl->vdGrp = INVALID_VDEC_GRP; + } + + if (AX_INVALID_HANDLE != ppl->stream) { + sample_stream_destory(ppl->stream); + ppl->stream = AX_INVALID_HANDLE; + } + + if (ppl->stream_event) { + sample_destory_event(ppl->stream_event); + ppl->stream_event = AX_INVALID_HANDLE; + } + + FREE(ppl); + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_start_ppl(AX_HANDLE handle) { + ENTER_FUNC(); + + ppl_obj_t *ppl = (ppl_obj_t *)handle; + if (!ppl) { + LOG_M_E(TAG, "obj is nil"); + return AX_FALSE; + } + + /* wait stream is probed and codec objects are created */ + sample_wait_event(ppl->stream_event, -1); + sample_reset_event(ppl->stream_event); + + if (!sample_link_codec(ppl)) { + return AX_FALSE; + } + + if (!sample_venc_start_chn(ppl->veChn)) { + sample_unlink_codec(ppl); + return AX_FALSE; + } + + if (!sample_vdec_start_grp(ppl->vdGrp)) { + sample_unlink_codec(ppl); + sample_venc_stop_chn(ppl->veChn, 0); + return AX_FALSE; + } + + stream_sink_t streamSink = { + .on_send_stream = on_send_stream, + .sinker = (AX_VOID *)ppl, + }; + + sample_stream_register_sink(ppl->stream, streamSink); + + if (!sample_stream_start(ppl->stream)) { + sample_unlink_codec(ppl); + sample_venc_stop_chn(ppl->veChn, 0); + sample_vdec_stop_grp(ppl->vdGrp, 0); + return AX_FALSE; + } + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_wait_ppl_eof(AX_HANDLE handle, AX_S32 timeout) { + ppl_obj_t *ppl = (ppl_obj_t *)handle; + if (!ppl) { + LOG_M_E(TAG, "obj is nil"); + return AX_FALSE; + } + + if (ppl->is_rtsp) { + msleep(timeout); + return AX_FALSE; + } else { + return sample_wait_event(ppl->stream_event, timeout); + } +} + +AX_BOOL sample_stop_ppl(AX_HANDLE handle) { + ENTER_FUNC(); + + ppl_obj_t *ppl = (ppl_obj_t *)handle; + if (!ppl) { + LOG_M_E(TAG, "obj is nil"); + return AX_FALSE; + } + + /** + * if rtsp, stop immediately, otherwise wait all frames are finished. + */ + if (!ppl->is_rtsp) { + /* Step1: stop stream */ + sample_stream_stop(ppl->stream); + + /* Step2: stop decoder */ + sample_vdec_stop_grp(ppl->vdGrp, -1); + + /* Step3: stop encoder */ + sample_venc_stop_chn(ppl->veChn, -1); + + /* Step4: unlink src and dst */ + sample_unlink_codec(ppl); + } else { + /* Step1: unlink src and dst */ + sample_unlink_codec(ppl); + + /* Step2: stop stream */ + sample_stream_stop(ppl->stream); + + /* Step3: stop decoder */ + sample_vdec_stop_grp(ppl->vdGrp, 0); + + /* Step4: stop encoder */ + sample_venc_stop_chn(ppl->veChn, 0); + } + + if (ppl->fp) { + fclose(ppl->fp); + ppl->fp = AX_NULL; + } + + LEAVE_FUNC(); + return AX_TRUE; +} diff --git a/msp/sample/video_convert/ppl.h b/msp/sample/video_convert/ppl.h new file mode 100644 index 0000000..0b45673 --- /dev/null +++ b/msp/sample/video_convert/ppl.h @@ -0,0 +1,27 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#ifndef __SAMPLE_PPL_H__ +#define __SAMPLE_PPL_H__ + +#include "def.h" + +/* SDK init */ +AX_BOOL sample_sys_init(AX_VOID); +AX_BOOL sample_sys_deinit(AX_VOID); + +/* PPL: stream(demux) -> vdec -> venc -> record */ +AX_HANDLE sample_create_ppl(const AX_CHAR *fpath, AX_PAYLOAD_TYPE_E payload, AX_U32 width, AX_U32 height, AX_S32 order); +AX_BOOL sample_destory_ppl(AX_HANDLE handle); + +AX_BOOL sample_start_ppl(AX_HANDLE handle); +AX_BOOL sample_wait_ppl_eof(AX_HANDLE handle, AX_S32 timeout); +AX_BOOL sample_stop_ppl(AX_HANDLE handle); + +#endif /* __SAMPLE_PPL_H__ */ \ No newline at end of file diff --git a/msp/sample/video_convert/stream.c b/msp/sample/video_convert/stream.c new file mode 100644 index 0000000..9263328 --- /dev/null +++ b/msp/sample/video_convert/stream.c @@ -0,0 +1,329 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#include "stream.h" +#include +#include +#include +#include +#include "libavcodec/avcodec.h" +#include "libavformat/avformat.h" +#include "log.h" + +#define TAG "STREAM" + +#define AVERRMSG(err, msg) \ + ({ \ + av_strerror(err, msg, sizeof(msg)); \ + msg; \ + }) + +typedef struct { + stream_attr_t attr; + AVFormatContext *avfmt; + AVBSFContext *avbsf; + pthread_t demux_tid; + volatile AX_BOOL stop_demux; + struct { + AX_S32 id; + stream_info_t info; + } video; + stream_sink_t sink; +} STREAM_OBJ_T; + +static AX_VOID *demux_thread(AX_VOID *arg); + +AX_HANDLE sample_stream_create(const stream_attr_t *attr) { + ENTER_FUNC(); + + STREAM_OBJ_T *obj = CALLOC(1, sizeof(STREAM_OBJ_T)); + if (!obj) { + LOG_M_E(TAG, "create stream obj fail, url: %s", attr->url); + return AX_INVALID_HANDLE; + } + + obj->attr = *attr; + obj->video.id = -1; + obj->stop_demux = AX_TRUE; + + AX_S32 ret; + AX_CHAR err_msg[64] = {0}; + + do { + obj->avfmt = avformat_alloc_context(); + if (!obj->avfmt) { + LOG_M_E(TAG, "%s: avformat_alloc_context() fail", attr->url); + break; + } + + ret = avformat_open_input(&obj->avfmt, attr->url, NULL, NULL); + if (ret < 0) { + LOG_M_E(TAG, "open url: %s fail, %s", attr->url, AVERRMSG(ret, err_msg)); + avformat_free_context(obj->avfmt); + obj->avfmt = AX_NULL; + break; + } + + /* find video track id */ + ret = avformat_find_stream_info(obj->avfmt, NULL); + if (ret < 0) { + LOG_M_E(TAG, "avformat_find_stream_info(url: %s) fail, %s", attr->url, AVERRMSG(ret, err_msg)); + break; + } + + for (AX_S32 i = 0; i < obj->avfmt->nb_streams; ++i) { + if (AVMEDIA_TYPE_VIDEO == obj->avfmt->streams[i]->codecpar->codec_type) { + obj->video.id = i; + break; + } + } + + if (-1 == obj->video.id) { + LOG_M_E(TAG, "%s: has no video stream", attr->url); + break; + } + + AVStream *avs = obj->avfmt->streams[obj->video.id]; + switch (avs->codecpar->codec_id) { + case AV_CODEC_ID_H264: + obj->video.info.payload = PT_H264; + break; + case AV_CODEC_ID_HEVC: + obj->video.info.payload = PT_H265; + break; + default: + LOG_M_E(TAG, "unsupport video codec of url: %s", attr->url); + break; + } + + strcpy(obj->video.info.url, attr->url); + obj->video.info.width = avs->codecpar->width; + obj->video.info.height = avs->codecpar->height; + + if (avs->avg_frame_rate.den == 0 || (avs->avg_frame_rate.num == 0 && avs->avg_frame_rate.den == 1)) { + obj->video.info.fps = (AX_U32)(round(av_q2d(avs->r_frame_rate))); + } else { + obj->video.info.fps = (AX_U32)(round(av_q2d(avs->avg_frame_rate))); + } + if (0 == obj->video.info.fps) { + obj->video.info.fps = 30; + LOG_M_W(TAG, "fps is 0, set to %d fps of url: %s", obj->video.info.fps, attr->url); + } + + /* just example: assume mp4 here */ + const AVBitStreamFilter *bsf = av_bsf_get_by_name((PT_H264 == obj->video.info.payload) ? "h264_mp4toannexb" : "hevc_mp4toannexb"); + if (!bsf) { + LOG_M_E(TAG, "%s: av_bsf_get_by_name() fail", attr->url); + break; + } + + ret = av_bsf_alloc(bsf, &obj->avbsf); + if (ret < 0) { + LOG_M_E(TAG, "%s: av_bsf_alloc() fail, %s", attr->url, AVERRMSG(ret, err_msg)); + break; + } + + ret = avcodec_parameters_copy(obj->avbsf->par_in, obj->avfmt->streams[obj->video.id]->codecpar); + if (ret < 0) { + LOG_M_E(TAG, "%s: avcodec_parameters_copy() fail, %s", attr->url, AVERRMSG(ret, err_msg)); + break; + } + + obj->avbsf->time_base_in = obj->avfmt->streams[obj->video.id]->time_base; + + ret = av_bsf_init(obj->avbsf); + if (ret < 0) { + LOG_M_E(TAG, "%s: av_bsf_init() fail, %s", attr->url, AVERRMSG(ret, err_msg)); + break; + } + + /* probe to create decoder */ + if (obj->attr.event.probe) { + obj->attr.event.probe(&obj->video.info, obj->attr.event.obj); + } + + LEAVE_FUNC(); + return (AX_HANDLE)obj; + + } while (0); + + sample_stream_destory(obj); + return AX_INVALID_HANDLE; +} + +AX_BOOL sample_stream_destory(AX_HANDLE handle) { + ENTER_FUNC(); + + STREAM_OBJ_T *obj = (STREAM_OBJ_T *)handle; + if (!obj) { + LOG_M_E(TAG, "handle is nil"); + return AX_FALSE; + } + + if (obj->avbsf) { + av_bsf_free(&obj->avbsf); + obj->avbsf = AX_NULL; + } + + if (obj->avfmt) { + avformat_close_input(&obj->avfmt); + /* avformat_close_input will FREE ctx + http://ffmpeg.org/doxygen/trunk/demux_8c_source.html + */ + // avformat_free_context(m_pAvFmtCtx); + obj->avfmt = AX_NULL; + } + + FREE(obj); + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_stream_register_sink(AX_HANDLE handle, stream_sink_t sink) { + ENTER_FUNC(); + + STREAM_OBJ_T *obj = (STREAM_OBJ_T *)handle; + if (!obj) { + LOG_M_E(TAG, "handle is nil"); + return AX_FALSE; + } + + obj->sink = sink; + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_stream_start(AX_HANDLE handle) { + ENTER_FUNC(); + + STREAM_OBJ_T *obj = (STREAM_OBJ_T *)handle; + if (!obj) { + LOG_M_E(TAG, "handle is nil"); + return AX_FALSE; + } + + if (!obj->stop_demux) { + LOG_M_W(TAG, "%s: recv thread is running", obj->attr.url); + return AX_TRUE; + } + + if (0 != pthread_create(&obj->demux_tid, AX_NULL, demux_thread, obj)) { + LOG_M_E(TAG, "%s: create recv thread fail", obj->attr.url); + return AX_FALSE; + } + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_stream_stop(AX_HANDLE handle) { + ENTER_FUNC(); + + STREAM_OBJ_T *obj = (STREAM_OBJ_T *)handle; + if (!obj) { + LOG_M_E(TAG, "handle is nil"); + return AX_FALSE; + } + + obj->stop_demux = AX_TRUE; + + if (obj->demux_tid) { + pthread_join(obj->demux_tid, AX_NULL); + obj->demux_tid = 0; + } + + LEAVE_FUNC(); + return AX_TRUE; +} + +static AX_VOID *demux_thread(AX_VOID *arg) { + ENTER_FUNC(); + + STREAM_OBJ_T *obj = (STREAM_OBJ_T *)arg; + obj->stop_demux = AX_FALSE; + + AX_S32 ret; + AX_CHAR err_msg[64] = {0}; + AX_U32 frame_num = 0; + AX_U64 pts = 0; /* us */ + const AX_U32 interval = (1000000 / obj->video.info.fps); + + AVPacket *avpkt = av_packet_alloc(); + if (!avpkt) { + obj->stop_demux = AX_TRUE; + LOG_M_E(TAG, "%s: av_packet_alloc() fail!", obj->attr.url); + return (AX_VOID *)0; + } + + while (!obj->stop_demux) { + ret = av_read_frame(obj->avfmt, avpkt); + if (ret < 0) { + if (AVERROR_EOF == ret) { + LOG_M_I(TAG, "%s: reach eof", obj->attr.url); + /* EOF */ + if (obj->sink.on_send_stream) { + obj->sink.on_send_stream(AX_NULL, 0, 0, obj->sink.sinker); + } + + if (obj->attr.event.eof) { + obj->attr.event.eof(obj->attr.url, frame_num, obj->attr.event.obj); + } + break; + } else { + LOG_M_E(TAG, "%s: av_read_frame()fail, %s", obj->attr.url, AVERRMSG(ret, err_msg)); + break; + } + + } else { + if (avpkt->stream_index == obj->video.id) { + ret = av_bsf_send_packet(obj->avbsf, avpkt); + if (ret < 0) { + av_packet_unref(avpkt); + LOG_M_E(TAG, "%s: av_bsf_send_packet() fail, %s", obj->attr.url, AVERRMSG(ret, err_msg)); + break; + } + + while (ret >= 0) { + ret = av_bsf_receive_packet(obj->avbsf, avpkt); + if (ret < 0) { + if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) { + break; + } + + LOG_M_E(TAG, "%s: av_bsf_receive_packet() fail, %s", obj->attr.url, AVERRMSG(ret, err_msg)); + + av_packet_unref(avpkt); + av_packet_free(&avpkt); + obj->stop_demux = AX_TRUE; + + return (AX_VOID *)0; + } + + ++frame_num; + + /* just example */ + pts += interval; + + if (obj->sink.on_send_stream) { + obj->sink.on_send_stream(avpkt->data, avpkt->size, pts, obj->sink.sinker); + } + } + } + + av_packet_unref(avpkt); + } + } + + av_packet_free(&avpkt); + + LEAVE_FUNC(); + return (AX_VOID *)0; +} \ No newline at end of file diff --git a/msp/sample/video_convert/stream.h b/msp/sample/video_convert/stream.h new file mode 100644 index 0000000..d9fbe04 --- /dev/null +++ b/msp/sample/video_convert/stream.h @@ -0,0 +1,62 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#ifndef __SAMPLE_STREAM_H__ +#define __SAMPLE_STREAM_H__ + +#include "def.h" + +/** + * @brief demux mp4 or h264/h265 annexb raw stream, send to decode by frame + * H264: combine sps+pps+IDR to one frame + * H265: combine sps+pps+vps+IDR to one frame + */ + +typedef struct { + AX_CHAR url[MAX_PATH]; + AX_U32 width; + AX_U32 height; + AX_U32 fps; + AX_PAYLOAD_TYPE_E payload; +} stream_info_t; + +/** + * @brief Send annexb nalu to decoder + * @data annexb nalu + * @len length of annexb nalu + * @pts PTS + * @sinker deocder object + */ +typedef AX_VOID (*on_send_stream_callback)(const AX_U8 *data, AX_U32 len, AX_U64 pts, AX_VOID *sinker); +typedef AX_VOID (*on_stream_probe_event_callback)(const stream_info_t *info, AX_VOID *obj); +typedef AX_VOID (*on_stream_eof_event_callback)(const AX_CHAR *url, AX_U32 frame_num, AX_VOID *obj); + +typedef struct { + AX_CHAR url[MAX_PATH]; + struct { + on_stream_probe_event_callback probe; + on_stream_eof_event_callback eof; + AX_VOID *obj; + } event; +} stream_attr_t; + +typedef struct { + on_send_stream_callback on_send_stream; + AX_VOID *sinker; +} stream_sink_t; + +AX_HANDLE sample_stream_create(const stream_attr_t *attr); +AX_BOOL sample_stream_destory(AX_HANDLE handle); + +AX_BOOL sample_stream_register_sink(AX_HANDLE handle, stream_sink_t sink); + +AX_BOOL sample_stream_start(AX_HANDLE handle); +AX_BOOL sample_stream_stop(AX_HANDLE handle); + +#endif /* __SAMPLE_STREAM_H__ */ \ No newline at end of file diff --git a/msp/sample/video_convert/utils.c b/msp/sample/video_convert/utils.c new file mode 100644 index 0000000..77c034d --- /dev/null +++ b/msp/sample/video_convert/utils.c @@ -0,0 +1,25 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#include "utils.h" +#include +#include +#include + +AX_U64 get_tick_count(AX_VOID) { + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (ts.tv_sec * 1000000 + ts.tv_nsec / 1000); +} + +AX_VOID msleep(AX_U32 milliseconds) { + struct timespec ts = {(milliseconds / 1000), (milliseconds % 1000) * 1000000}; + while ((-1 == nanosleep(&ts, &ts)) && (EINTR == errno)) + ; +} diff --git a/msp/sample/video_convert/utils.h b/msp/sample/video_convert/utils.h new file mode 100644 index 0000000..d7daf91 --- /dev/null +++ b/msp/sample/video_convert/utils.h @@ -0,0 +1,18 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#ifndef __SAMPLE_UTILS_H__ +#define __SAMPLE_UTILS_H__ + +#include "def.h" + +AX_U64 /*us*/ get_tick_count(AX_VOID); +AX_VOID msleep(AX_U32 milliseconds); + +#endif /* __SAMPLE_UTILS_H__ */ \ No newline at end of file diff --git a/msp/sample/video_convert/vdec.c b/msp/sample/video_convert/vdec.c new file mode 100644 index 0000000..f3b257c --- /dev/null +++ b/msp/sample/video_convert/vdec.c @@ -0,0 +1,390 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#include "vdec.h" +#include +#include +#include +#include "ax_buffer_tool.h" +#include "log.h" +#include "utils.h" + +#define TAG "VDEC" + +enum { + stateUnknown = 0, + stateInited = 1, + stateStarted = 2, +}; + +typedef struct { + pthread_mutex_t lock; + AX_S32 vdGrp; + AX_U32 state; + vdec_attr_t attr; + AX_S32 send_timeout; +} vdec_obj_t; + +static vdec_obj_t *g_objs[AX_VDEC_MAX_GRP_NUM] = {AX_NULL}; +static pthread_mutex_t g_objsLock = PTHREAD_MUTEX_INITIALIZER; + +#define GET_VDEC_OBJ(vdGrp) \ + ({ \ + if (vdGrp < 0 || vdGrp >= AX_VDEC_MAX_GRP_NUM) { \ + LOG_M_E(TAG, "invalid vdGrp %d", vdGrp); \ + return AX_FALSE; \ + } \ + \ + vdec_obj_t *obj = g_objs[vdGrp]; \ + if (!obj || !obj->state) { \ + LOG_M_E(TAG, "vdGrp %d is not inited, obj %p", vdGrp, obj); \ + return AX_FALSE; \ + } \ + \ + obj; \ + }) + +AX_S32 sample_vdec_create_grp(const vdec_attr_t *attr) { + ENTER_FUNC(); + + vdec_obj_t *obj = CALLOC(1, sizeof(vdec_obj_t)); + if (!obj) { + LOG_M_E(TAG, "create vdec obj fail"); + return INVALID_VDEC_GRP; + } + + obj->attr = *attr; + obj->vdGrp = INVALID_VDEC_GRP; + obj->state = stateUnknown; + + pthread_mutex_init(&obj->lock, AX_NULL); + + /* find an unused vdGrp */ + pthread_mutex_lock(&g_objsLock); + for (AX_S32 i = 0; i < AX_VDEC_MAX_GRP_NUM; ++i) { + if (!g_objs[i]) { + /* mark vdGrp busy */ + obj->vdGrp = i; + g_objs[i] = obj; + break; + } + } + pthread_mutex_unlock(&g_objsLock); + + if (INVALID_VDEC_GRP == obj->vdGrp) { + LOG_M_E(TAG, "all vdGrps are used"); + pthread_mutex_destroy(&obj->lock); + FREE(obj); + return INVALID_VDEC_GRP; + } + + AX_S32 ret; + + enum { + stateGrpCreated = (1 << 0), + stateChnEnabled = (1 << 1), + }; + + AX_U32 state = 0; + do { + /* Step1: Create and configure VDEC group */ + AX_VDEC_GRP_ATTR_T grp_attr; + memset(&grp_attr, 0, sizeof(grp_attr)); + grp_attr.enCodecType = attr->payload; + grp_attr.enInputMode = AX_VDEC_INPUT_MODE_FRAME; + grp_attr.u32MaxPicWidth = ALIGN_UP(attr->input_width, 16); /* H264 MB 16x16 */ + grp_attr.u32MaxPicHeight = ALIGN_UP(attr->input_heigth, 16); /* H264 MB 16x16 */ + + /* input stream buffer size:make sure VDEC can hold one nalu frame at least */ + grp_attr.u32StreamBufSize = grp_attr.u32MaxPicWidth * grp_attr.u32MaxPicHeight * 2; + + /* private pool is highly recommended */ + grp_attr.bSdkAutoFramePool = AX_TRUE; + ret = AX_VDEC_CreateGrp(obj->vdGrp, &grp_attr); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_CreateGrp(vdGrp %d) fail, ret = 0x%x", obj->vdGrp, ret); + break; + } else { + state |= stateGrpCreated; + } + + AX_VDEC_GRP_PARAM_T grp_param; + memset(&grp_param, 0, sizeof(grp_param)); + /* if no B frame, can replaced by VIDEO_DEC_MODE_IP */ + grp_param.stVdecVideoParam.enVdecMode = VIDEO_DEC_MODE_IPB; + grp_param.stVdecVideoParam.enOutputOrder = attr->order; + ret = AX_VDEC_SetGrpParam(obj->vdGrp, &grp_param); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_SetGrpParam(vdGrp %d) fail, ret = 0x%x", obj->vdGrp, ret); + break; + } + + ret = AX_VDEC_SetDisplayMode(obj->vdGrp, attr->display_mode); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_SetGrpParam(vdGrp %d) fail, ret = 0x%x", obj->vdGrp, ret); + break; + } + + /* playback recommend to -1, preview mode can be adjust, unit is ms. */ + obj->send_timeout = (AX_VDEC_DISPLAY_MODE_PLAYBACK == attr->display_mode) ? -1 : 1000; + + /* + Step2: configure and enable channel PP + PP0: same width and height with stream, cannot support scaler + PP1: support scaler down, max output is: 4096×4096 + PP2: support scaler down, max output is: 1920×1080 + + Here we only use PP1 one channel. + */ + for (AX_VDEC_CHN vdChn = 0; vdChn < AX_VDEC_MAX_CHN_NUM; ++vdChn) { + if (VDEC_PP1 == vdChn) { + AX_VDEC_CHN_ATTR_T chn_attr; + memset(&chn_attr, 0, sizeof(chn_attr)); + chn_attr.u32PicWidth = attr->output_width; + chn_attr.u32PicHeight = attr->output_height; + /* VDEC stride is 256 whatever FBC or no FBC */ + chn_attr.u32FrameStride = ALIGN_UP(chn_attr.u32PicWidth, VDEC_STRIDE_ALIGN); + + /* if linked mode (eg: VDEC link VENC), set depth to 0, otherwise should configure depth > 0 */ + chn_attr.u32OutputFifoDepth = 0; + + chn_attr.enOutputMode = AX_VDEC_OUTPUT_SCALE; + chn_attr.enImgFormat = AX_FORMAT_YUV420_SEMIPLANAR; + + /* + active lossy 4 mode to save DDR bitwidth and memory + AX_COMPRESS_MODE_LOSSLESS is not supported by VDEC + */ + chn_attr.stCompressInfo.enCompressMode = AX_COMPRESS_MODE_LOSSY; + chn_attr.stCompressInfo.u32CompressLevel = 4; + + chn_attr.u32FrameBufCnt = attr->blk_num; + chn_attr.u32FrameBufSize = AX_VDEC_GetPicBufferSize(chn_attr.u32PicWidth, chn_attr.u32PicHeight, chn_attr.enImgFormat, + &chn_attr.stCompressInfo, grp_attr.enCodecType); + + LOG_M_I(TAG, "vdGrp %d vdChn %d: %dx%d stride %d, pix %d, FBC %d(lv %d), blkCnt %d blkSize %d, depth %d", obj->vdGrp, vdChn, + chn_attr.u32PicWidth, chn_attr.u32PicHeight, chn_attr.u32FrameStride, chn_attr.enImgFormat, + chn_attr.stCompressInfo.enCompressMode, chn_attr.stCompressInfo.u32CompressLevel, chn_attr.u32FrameBufCnt, + chn_attr.u32FrameBufSize, chn_attr.u32OutputFifoDepth); + + ret = AX_VDEC_SetChnAttr(obj->vdGrp, vdChn, &chn_attr); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_SetChnAttr(vdGrp %d, vdChn %d) fail, ret = 0x%x", obj->vdGrp, vdChn, ret); + break; + } + + ret = AX_VDEC_EnableChn(obj->vdGrp, vdChn); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_EnableChn(vdGrp %d, vdChn %d) fail, ret = 0x%x", obj->vdGrp, vdChn, ret); + break; + } + + state |= stateChnEnabled; + + } else { + ret = AX_VDEC_DisableChn(obj->vdGrp, vdChn); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_DisableChn(vdGrp %d, vdChn %d) fail, ret = 0x%x", obj->vdGrp, vdChn, ret); + break; + } + } + } + + pthread_mutex_lock(&obj->lock); + obj->state = stateInited; + pthread_mutex_unlock(&obj->lock); + + LEAVE_FUNC(); + return obj->vdGrp; + + } while (0); + + /* failure, destory resources */ + if (stateChnEnabled == (state & stateChnEnabled)) { + for (AX_VDEC_CHN vdChn = 0; vdChn < AX_VDEC_MAX_CHN_NUM; ++vdChn) { + AX_VDEC_DisableChn(obj->vdGrp, vdChn); + } + } + + if (stateGrpCreated == (state & stateGrpCreated)) { + AX_VDEC_DestroyGrp(obj->vdGrp); + } + + pthread_mutex_lock(&g_objsLock); + g_objs[obj->vdGrp] = AX_NULL; + pthread_mutex_unlock(&g_objsLock); + + pthread_mutex_destroy(&obj->lock); + FREE(obj); + + return INVALID_VDEC_GRP; +} + +AX_BOOL sample_vdec_destory_grp(AX_S32 vdGrp) { + ENTER_FUNC(); + + vdec_obj_t *obj = GET_VDEC_OBJ(vdGrp); + + AX_S32 ret; + for (AX_VDEC_CHN vdChn = 0; vdChn < AX_VDEC_MAX_CHN_NUM; ++vdChn) { + ret = AX_VDEC_DisableChn(vdGrp, vdChn); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_DisableChn(vdGrp %d, vdChn %d) fail, ret = 0x%x", vdGrp, vdChn, ret); + return AX_FALSE; + } + } + + ret = AX_VDEC_DestroyGrp(vdGrp); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_DestroyGrp(vdGrp %d) fail, ret = 0x%x", vdGrp, ret); + return AX_FALSE; + } + + pthread_mutex_lock(&g_objsLock); + g_objs[vdGrp] = AX_NULL; + pthread_mutex_unlock(&g_objsLock); + + pthread_mutex_destroy(&obj->lock); + FREE(obj); + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_vdec_start_grp(AX_S32 vdGrp) { + ENTER_FUNC(); + + vdec_obj_t *obj = GET_VDEC_OBJ(vdGrp); + if (stateStarted == obj->state) { + LOG_M_W(TAG, "vdGrp %d is started", vdGrp); + return AX_TRUE; + } + + AX_VDEC_RECV_PIC_PARAM_T param; + memset(¶m, 0, sizeof(param)); + param.s32RecvPicNum = -1; + AX_S32 ret = AX_VDEC_StartRecvStream(vdGrp, ¶m); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_StartRecvStream(vdGrp %d) fail, ret = 0x%x", vdGrp); + return AX_FALSE; + } + + pthread_mutex_lock(&obj->lock); + obj->state = stateStarted; + pthread_mutex_unlock(&obj->lock); + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_vdec_stop_grp(AX_S32 vdGrp, AX_S32 timeout) { + ENTER_FUNC(); + + vdec_obj_t *obj = GET_VDEC_OBJ(vdGrp); + if (stateStarted != obj->state) { + LOG_M_W(TAG, "vdGrp %d is not started", vdGrp); + return AX_TRUE; + } + + AX_S32 ret; + + /* step1: stop recv stream at first */ + ret = AX_VDEC_StopRecvStream(vdGrp); + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_StopRecvStream(vdGrp %d) fail, ret = 0x%x", vdGrp, ret); + return AX_FALSE; + } + + if (0 != timeout) { + /* step2: make sure all frames are decoded done if needed */ + AX_U64 nTick = get_tick_count(); + do { + AX_VDEC_GRP_STATUS_T status; + ret = AX_VDEC_QueryStatus(vdGrp, &status); + if (0 == ret) { + if (0 == (status.u32LeftStreamFrames + status.u32LeftPics[0] + status.u32LeftPics[1] + status.u32LeftPics[2])) { + break; + } else { + LOG_M_I(TAG, "vdGrp %d left stream %d, left pic %d - %d - %d", vdGrp, status.u32LeftStreamFrames, status.u32LeftPics[0], + status.u32LeftPics[1], status.u32LeftPics[2]); + } + } else { + LOG_M_E(TAG, "AX_VDEC_QueryStatus(vdGrp %d) fail, ret = 0x%x", vdGrp, ret); + } + + msleep(10); + + } while (timeout < 0 || (get_tick_count() - nTick < timeout)); + } + + /* step3: reset grp, retry to make sure reset success */ + for (AX_U32 i = 0; i < 5; ++i) { + ret = AX_VDEC_ResetGrp(vdGrp); + if (0 == ret) { + break; + } + + if (AX_ERR_VDEC_BUSY == ret) { + LOG_M_W(TAG, "vdGrp %d is busy, try again", vdGrp); + } else { + LOG_M_E(TAG, "AX_VDEC_ResetGrp(vdGrp %d) fail, ret = 0x%x, try again", vdGrp, ret); + } + + msleep(10); + } + + if (0 != ret) { + LOG_M_E(TAG, "AX_VDEC_ResetGrp(vdGrp %d) failed, ret = 0x%x", vdGrp, ret); + return AX_FALSE; + } + + pthread_mutex_lock(&obj->lock); + obj->state = stateInited; + pthread_mutex_unlock(&obj->lock); + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_vdec_send_stream(AX_S32 vdGrp, const AX_U8 *data, AX_U32 len, AX_U64 pts) { + vdec_obj_t *obj = GET_VDEC_OBJ(vdGrp); + if (stateStarted != obj->state) { + LOG_M_W(TAG, "vdGrp %d is not started", vdGrp); + return AX_TRUE; + } + + AX_VDEC_STREAM_T stream; + memset(&stream, 0, sizeof(stream)); + /* as we uses AX_VDEC_INPUT_MODE_FRAME, bEndofFame always AX_TRUE */ + stream.bEndOfFrame = AX_TRUE; + if (data && len > 0) { + stream.u64PTS = pts; + stream.pu8Addr = (AX_U8 *)data; + stream.u32StreamPackLen = len; + } else { + /* end of all stream */ + stream.bEndOfStream = AX_TRUE; + } + + AX_S32 ret = AX_VDEC_SendStream(vdGrp, &stream, obj->send_timeout); + if (0 != ret) { + if ((AX_ERR_VDEC_BUF_FULL == ret) || (AX_ERR_VDEC_QUEUE_FULL == ret)) { + LOG_M_E(TAG, "vdGrp %d input buffer is full, abandon %d bytes, pts %lld", vdGrp, len, pts); + } else if (AX_ERR_VDEC_NOT_PERM == ret) { + LOG_M_E(TAG, "AX_VDEC_SendStream(vdGrp %d, len %d, pts %lld, timeout %d) not permitted", vdGrp, len, pts, obj->send_timeout); + } else { + LOG_M_E(TAG, "AX_VDEC_SendStream(vdGrp %d, len %d, pts %lld, timeout %d) fail, ret = 0x%x", vdGrp, len, pts, obj->send_timeout, + ret); + } + + return AX_FALSE; + } + + return AX_TRUE; +} \ No newline at end of file diff --git a/msp/sample/video_convert/vdec.h b/msp/sample/video_convert/vdec.h new file mode 100644 index 0000000..92fb98a --- /dev/null +++ b/msp/sample/video_convert/vdec.h @@ -0,0 +1,85 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#ifndef __SAMPLE_VDEC_H__ +#define __SAMPLE_VDEC_H__ + +#include "ax_vdec_api.h" +#include "def.h" + +typedef struct { + /* input stream information */ + AX_U32 input_width; + AX_U32 input_heigth; + AX_U32 fps; + AX_PAYLOAD_TYPE_E payload; + /* + if no B frame and decode and display order are sample, set AX_VDEC_OUTPUT_ORDER_DEC to save memory. + Otherwise set to AX_VDEC_OUTPUT_ORDER_DISP. + */ + AX_VDEC_OUTPUT_ORDER_E order; + /* + if src stream is from file, recommend to set AX_VDEC_DISPLAY_MODE_PLAYBACK + if src stream is from rtsp, recommend to set AX_VDEC_DISPLAY_MODE_PREVIEW + refer to VDEC API doc to get more information about playback and preview mode + */ + AX_VDEC_DISPLAY_MODE_E display_mode; + + /* + refer to AX_VDEC_CHN_ATTR_T.u32FrameBufCnt of VDEC API doc or AX AE engineer to get more information. + */ + AX_U32 blk_num; + + /* output */ + AX_U32 output_width; + AX_U32 output_height; + +} vdec_attr_t; + +/** + * @brief VDEC support 3 channels which called PP: + * PP0: same width and height with stream, cannot support scaler + * PP1: support scaler down, max output is: 4096×4096 + * PP2: support scaler down, max output is: 1920×1080 + * sample_vdec_create_grp API just enable PP1 to hit scaler down target. + * + * @param attr - refer to VDEC API doc to add more parameters, sample just list the basic parameters. + * @return AX_S32 - VDEC group id, range: [0 - AX_VDEC_MAX_GRP_NUM] + */ +AX_S32 sample_vdec_create_grp(const vdec_attr_t *attr); +AX_BOOL sample_vdec_destory_grp(AX_S32 vdGrp); + +/** + * @brief Start and stop VDEC + * + * @param vdGrp + * @param timeout - unit: ms + * < 0: wait all streams are decoded and then stop + * 0: stop immediatelly + * if rtsp, recommend to 0. + * @return AX_BOOL + */ +AX_BOOL sample_vdec_start_grp(AX_S32 vdGrp); +AX_BOOL sample_vdec_stop_grp(AX_S32 vdGrp, AX_S32 timeout); + +/** + * @brief Send annexb stream by frame + * AX_VDEC_INPUT_MODE_FRAME mode is highly recommeneded and make sure combine SPS,PPS,VPS and IDR to one frame to send + * if rtsp, client received frame by protocol + * if file, application should identify the start and end of one frame from nalu stream. + * + * @param vdGrp + * @param data - annexb stream frame + * @param len - annexb stream frame length in bytes + * @param pts - PTS is by pass to next moudle, SDK will not change PTS + * @return AX_BOOL + */ +AX_BOOL sample_vdec_send_stream(AX_S32 vdGrp, const AX_U8 *data, AX_U32 len, AX_U64 pts); + +#endif /* __SAMPLE_VDEC_H__ */ diff --git a/msp/sample/video_convert/venc.c b/msp/sample/video_convert/venc.c new file mode 100644 index 0000000..a50cab4 --- /dev/null +++ b/msp/sample/video_convert/venc.c @@ -0,0 +1,320 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#include "venc.h" +#include +#include +#include +#include "log.h" +#include "utils.h" + +#define TAG "VENC" + +enum { + stateUnknown = 0, + stateInited = 1, + stateStarted = 2, +}; + +typedef struct { + pthread_mutex_t lock; + AX_S32 veChn; + AX_U32 state; + venc_attr_t attr; + venc_sink_t sink; + pthread_t recv_tid; + volatile AX_BOOL stop_recv; +} venc_obj_t; + +static venc_obj_t *g_objs[MAX_VENC_CHN_NUM] = {AX_NULL}; +static pthread_mutex_t g_objsLock = PTHREAD_MUTEX_INITIALIZER; + +#define GET_VENC_OBJ(veChn) \ + ({ \ + if (veChn < 0 || veChn >= MAX_VENC_CHN_NUM) { \ + LOG_M_E(TAG, "invalid veChn %d", veChn); \ + return AX_FALSE; \ + } \ + \ + venc_obj_t *obj = g_objs[veChn]; \ + if (!obj || !obj->state) { \ + LOG_M_E(TAG, "veChn %d is not inited, obj %p", veChn, obj); \ + return AX_FALSE; \ + } \ + \ + obj; \ + }) + +static AX_VOID *recv_thread(AX_VOID *arg); + +AX_S32 sample_venc_create_chn(const venc_attr_t *attr) { + ENTER_FUNC(); + + venc_obj_t *obj = CALLOC(1, sizeof(venc_obj_t)); + if (!obj) { + LOG_M_E(TAG, "create venc obj fail"); + return INVALID_VENC_CHN; + } + + obj->attr = *attr; + obj->veChn = INVALID_VENC_CHN; + obj->stop_recv = AX_TRUE; + pthread_mutex_init(&obj->lock, AX_NULL); + + /* find an unused vdChn */ + pthread_mutex_lock(&g_objsLock); + for (AX_S32 i = 0; i < MAX_VENC_CHN_NUM; ++i) { + if (!g_objs[i]) { + obj->veChn = i; + g_objs[i] = obj; + break; + } + } + pthread_mutex_unlock(&g_objsLock); + + if (INVALID_VENC_CHN == obj->veChn) { + LOG_M_E(TAG, "all veChns are used"); + pthread_mutex_destroy(&obj->lock); + FREE(obj); + return INVALID_VENC_CHN; + } + + AX_S32 ret; + + do { + /* Step1: Create and configure encoder channel */ + AX_VENC_CHN_ATTR_T chn_attr; + memset(&chn_attr, 0, sizeof(chn_attr)); + + chn_attr.stVencAttr.enType = attr->payload; + chn_attr.stVencAttr.u32MaxPicWidth = ALIGN_UP(attr->width, VENC_FBC_STRIDE_ALIGN_VAL); + chn_attr.stVencAttr.u32MaxPicHeight = ALIGN_UP(attr->height, 16); + chn_attr.stVencAttr.enMemSource = AX_MEMORY_SOURCE_CMM; + /* + 0: means calculate u32BufSize by SDK - default w * h * 1.5 + min u32BufSize for H264/H265 not less than w * h / 2 + */ + chn_attr.stVencAttr.u32BufSize = 0; + chn_attr.stVencAttr.enProfile = attr->profile; + chn_attr.stVencAttr.enLevel = attr->level; + chn_attr.stVencAttr.enTier = attr->tile; + chn_attr.stVencAttr.enStrmBitDepth = AX_VENC_STREAM_BIT_8; + chn_attr.stVencAttr.u32PicWidthSrc = attr->width; + chn_attr.stVencAttr.u32PicHeightSrc = attr->height; + chn_attr.stVencAttr.enLinkMode = AX_VENC_LINK_MODE; + chn_attr.stVencAttr.s32StopWaitTime = 0; + chn_attr.stVencAttr.u8InFifoDepth = 2; + chn_attr.stVencAttr.u8OutFifoDepth = 2; + + chn_attr.stVencAttr.flag = (1 << 1); /* stream is cached */ + + /* RC */ + chn_attr.stRcAttr = attr->rc; + chn_attr.stRcAttr.stFrameRate.fSrcFrameRate = attr->fps; + chn_attr.stRcAttr.stFrameRate.fDstFrameRate = attr->fps; + + /* just example, fix to normalP mode, application can change the gop mode. */ + chn_attr.stGopAttr.enGopMode = AX_VENC_GOPMODE_NORMALP; + ret = AX_VENC_CreateChn(obj->veChn, &chn_attr); + if (0 != ret) { + LOG_M_E(TAG, "AX_VENC_CreateChn(veChn %d) fail, ret = 0x%x", obj->veChn, ret); + break; + } + + pthread_mutex_lock(&obj->lock); + obj->state = stateInited; + pthread_mutex_unlock(&obj->lock); + + LEAVE_FUNC(); + return obj->veChn; + + } while (0); + + pthread_mutex_lock(&g_objsLock); + g_objs[obj->veChn] = AX_NULL; + pthread_mutex_unlock(&g_objsLock); + + pthread_mutex_destroy(&obj->lock); + FREE(obj); + + return INVALID_VENC_CHN; +} + +AX_BOOL sample_venc_destory_chn(AX_S32 veChn) { + ENTER_FUNC(); + + venc_obj_t *obj = GET_VENC_OBJ(veChn); + + AX_S32 ret; + ret = AX_VENC_DestroyChn(veChn); + if (0 != ret) { + LOG_M_E(TAG, "AX_VENC_DestroyChn(veChn %d) fail, ret = 0x%x", veChn, ret); + return AX_FALSE; + } + + pthread_mutex_lock(&g_objsLock); + g_objs[veChn] = AX_NULL; + pthread_mutex_unlock(&g_objsLock); + + pthread_mutex_destroy(&obj->lock); + FREE(obj); + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_venc_start_chn(AX_S32 veChn) { + ENTER_FUNC(); + + venc_obj_t *obj = GET_VENC_OBJ(veChn); + if (stateStarted == obj->state) { + LOG_M_W(TAG, "veChn %d is started", veChn); + return AX_TRUE; + } + + if (0 != pthread_create(&obj->recv_tid, AX_NULL, recv_thread, obj)) { + LOG_M_E(TAG, "start veChn %d recv thread fail", veChn); + return AX_FALSE; + } + + AX_VENC_RECV_PIC_PARAM_T param; + param.s32RecvPicNum = -1; + AX_S32 ret = AX_VENC_StartRecvFrame(veChn, ¶m); + if (0 != ret) { + LOG_M_E(TAG, "AX_VENC_StartRecvFrame(veChn %d) failed, ret = 0x%x", veChn, ret); + return AX_FALSE; + } + + pthread_mutex_lock(&obj->lock); + obj->state = stateStarted; + pthread_mutex_unlock(&obj->lock); + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_venc_stop_chn(AX_S32 veChn, AX_S32 timeout) { + ENTER_FUNC(); + + venc_obj_t *obj = GET_VENC_OBJ(veChn); + if (stateStarted != obj->state) { + LOG_M_W(TAG, "veChn %d is not started", veChn); + return AX_TRUE; + } + + AX_S32 ret; + + /* Step1: stop recv frame */ + ret = AX_VENC_StopRecvFrame(veChn); + if (AX_SUCCESS != ret) { + LOG_M_E(TAG, "AX_VENC_StopRecvFrame(veChn %d) fail, ret = 0x%x", veChn, ret); + return AX_FALSE; + } + + /* Step2: wait all frames encoded done if needed */ + if (0 != timeout) { + AX_U64 nTick = get_tick_count(); + do { + AX_VENC_CHN_STATUS_T status; + ret = AX_VENC_QueryStatus(veChn, &status); + if (0 == ret) { + if (0 == (status.u32LeftPics + status.u32LeftStreamFrames)) { + break; + } else { + LOG_M_I(TAG, "veChn %d left pic %d, left stream %d", veChn, status.u32LeftPics, status.u32LeftStreamFrames); + } + } else { + LOG_M_E(TAG, "AX_VENC_QueryStatus(veChn %d) fail, ret = 0x%x", veChn, ret); + } + + msleep(10); + + } while (timeout < 0 || (get_tick_count() - nTick < timeout)); + } + + /* Step3: stop recv thread */ + obj->stop_recv = AX_TRUE; + + /* Step4: reset to wakeup AX_VENC_GetStream(timeout: -1) */ + ret = AX_VENC_ResetChn(veChn); + if (0 != ret) { + LOG_M_E(TAG, "AX_VENC_ResetChn(veChn) fail, ret = 0x%x", veChn, ret); + return AX_FALSE; + } + + /* Step5: wait recv thread safe quit */ + if (obj->recv_tid) { + pthread_join(obj->recv_tid, AX_NULL); + obj->recv_tid = 0; + } + + pthread_mutex_lock(&obj->lock); + obj->state = stateInited; + pthread_mutex_unlock(&obj->lock); + + LEAVE_FUNC(); + return AX_TRUE; +} + +AX_BOOL sample_venc_register_sink(AX_S32 veChn, venc_sink_t sink) { + ENTER_FUNC(); + + venc_obj_t *obj = GET_VENC_OBJ(veChn); + obj->sink = sink; + + LEAVE_FUNC(); + return AX_TRUE; +} + +static AX_VOID *recv_thread(AX_VOID *arg) { + ENTER_FUNC(); + + venc_obj_t *obj = (venc_obj_t *)arg; + obj->stop_recv = AX_FALSE; + + const AX_S32 veChn = obj->veChn; + AX_S32 ret; + AX_VENC_STREAM_T stream; + memset(&stream, 0, sizeof(AX_VENC_STREAM_T)); + + while (!obj->stop_recv) { + /* Step1: get encoded stream */ + ret = AX_VENC_GetStream(veChn, &stream, -1); + if (0 != ret) { + if (AX_ERR_VENC_FLOW_END == ret) { + LOG_M_I(TAG, "reach eof"); + obj->stop_recv = AX_TRUE; + break; + } + + if (AX_ERR_VENC_QUEUE_EMPTY == ret) { + LOG_M_I(TAG, "no stream in veChn %d queue", veChn); + } else { + LOG_M_E(TAG, "AX_VENC_GetStream(veChn %d) fail, ret = 0x%x", veChn, ret); + } + + continue; + } + + /* Step2: notify stream */ + if (obj->sink.on_recv_stream) { + obj->sink.on_recv_stream(veChn, &stream, obj->sink.sinker); + } + + /* Step3: release stream */ + ret = AX_VENC_ReleaseStream(veChn, &stream); + if (0 != ret) { + LOG_M_E(TAG, "AX_VENC_ReleaseStream(veChn %d) fail, ret = 0x%x", veChn, ret); + continue; + } + } + + LEAVE_FUNC(); + return (AX_VOID *)0; +} \ No newline at end of file diff --git a/msp/sample/video_convert/venc.h b/msp/sample/video_convert/venc.h new file mode 100644 index 0000000..e206ad6 --- /dev/null +++ b/msp/sample/video_convert/venc.h @@ -0,0 +1,53 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor Co., Ltd. + * + **************************************************************************************************/ +#ifndef __SAMPLE_VENC_H__ +#define __SAMPLE_VENC_H__ + +#include "ax_venc_api.h" +#include "def.h" + +typedef struct { + AX_PAYLOAD_TYPE_E payload; + AX_U32 width; + AX_U32 height; + AX_U32 fps; + AX_VENC_PROFILE_E profile; + AX_VENC_LEVEL_E level; + AX_VENC_TIER_E tile; + + /* RC */ + AX_VENC_RC_ATTR_T rc; +} venc_attr_t; + +typedef AX_VOID (*on_recv_stream_callback)(AX_S32 veChn, AX_VENC_STREAM_T *stream, AX_VOID *sinker); +typedef struct { + on_recv_stream_callback on_recv_stream; + AX_VOID *sinker; +} venc_sink_t; + +AX_S32 sample_venc_create_chn(const venc_attr_t *attr); +AX_BOOL sample_venc_destory_chn(AX_S32 veChn); + +AX_BOOL sample_venc_register_sink(AX_S32 veChn, venc_sink_t sink); + +/** + * @brief Start and stop encoder + * + * @param veChn + * @param timeout - unit: ms + * < 0: wait all streams are finished to encode and then stop + * 0: stop immediatelly + * if rtsp, recommend to 0. + * @return AX_BOOL + */ +AX_BOOL sample_venc_start_chn(AX_S32 veChn); +AX_BOOL sample_venc_stop_chn(AX_S32 veChn, AX_S32 timeout); + +#endif /* __SAMPLE_VENC_H__ */ \ No newline at end of file diff --git a/msp/sample/vin/sample_vin.c b/msp/sample/vin/sample_vin.c index b2b2b19..520935a 100644 --- a/msp/sample/vin/sample_vin.c +++ b/msp/sample/vin/sample_vin.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vin/sample_vin.h b/msp/sample/vin/sample_vin.h index a7ab8d3..175e6a3 100644 --- a/msp/sample/vin/sample_vin.h +++ b/msp/sample/vin/sample_vin.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/Makefile b/msp/sample/vin_ivps_engine_venc_rtsp/Makefile new file mode 100644 index 0000000..d77ef49 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/Makefile @@ -0,0 +1,105 @@ +################################################################################ +# prepare param +################################################################################ +CUR_PATH := $(shell pwd) +HOME_PATH := $(abspath $(CUR_PATH)/../../..) + +include $(HOME_PATH)/build/color.mk +include $(HOME_PATH)/build/config.mak + +PRJ_OUT_HOME := $(HOME_PATH)/build/out/$(PROJECT) +OBJ_OUT_PATH := $(PRJ_OUT_HOME)/objs +MSP_OUT_PATH := $(HOME_PATH)/msp/out +SRC_PATH := $(CUR_PATH) +OUT_PATH := $(MSP_OUT_PATH) +SAMPLE_PATH := $(CUR_PATH)/.. +LIB_PATH := $(MSP_OUT_PATH)/lib +SRC_RELATIVE_PATH := $(subst $(HOME_PATH)/,,$(SRC_PATH)) +TARGET_OUT_PATH := $(OBJ_OUT_PATH)/$(SRC_RELATIVE_PATH) +ROOTFS_TARGET_PATH := $(MSP_OUT_PATH) +SSL_PATH := $(HOME_PATH)/third-party/openssl +LIVE_PATH := $(HOME_PATH)/third-party/live/out +OPENCV_PATH := $(HOME_PATH)/third-party/opencv-4.5.5 + +################################################################################ +# set task +################################################################################ +MOD_NAME = sample_vin_ivps_engine_venc_rtsp +OUTPUT := $(TARGET_OUT_PATH)/obj + +# source +SRCS := $(wildcard $(SRC_PATH)/*.c) \ + $(wildcard $(SRC_PATH)/../common/common_venc.c) \ + $(wildcard $(SRC_PATH)/../common/common_venc_log.c) +SRCS += $(SAMPLE_PATH)/common/common_arg_parse.c +SRCS += $(SAMPLE_PATH)/common/common_cam.c +SRCS += $(SAMPLE_PATH)/common/common_sys.c +SRCS += $(SAMPLE_PATH)/common/common_vin.c +SRCS += $(SAMPLE_PATH)/common/common_isp.c +SRCS += $(SAMPLE_PATH)/common/common_nt.c +SRCS += $(SAMPLE_PATH)/common/common_hw.c +SRCCPPS := $(wildcard $(SAMPLE_PATH)/rtsp/*.cpp) \ + $(wildcard $(SRC_PATH)/*.cpp) + +vpath %.c $(addsuffix :,$(dir $(patsubst %.c,%.o,$(SRCS)))) + +CINCLUDE := -I$(SRC_PATH) \ + -I$(MSP_OUT_PATH)/include \ + -I$(SRC_PATH)/../common/include \ + -I$(SRC_PATH)/../common/ \ + -I$(HOME_PATH)/msp/out \ + -I$(SAMPLE_PATH)/rtsp \ + -I$(LIVE_PATH)/include/BasicUsageEnvironment \ + -I$(LIVE_PATH)/include/groupsock \ + -I$(LIVE_PATH)/include/liveMedia \ + -I$(LIVE_PATH)/include/UsageEnvironment \ + -I$(SSL_PATH)/include \ + -I$(OUT_PATH)/include \ + -I$(SAMPLE_PATH)/common \ + -I$(SRC_PATH)/include \ + -I$(OPENCV_PATH)/include/opencv4 + + +OBJS := $(addprefix $(OUTPUT)/,$(notdir $(patsubst %.c,%.o,$(SRCS)))) +OBJS += $(SRCCPPS:%.cpp=$(OUTPUT)/%.o) +DEPS := $(OBJS:%.o=%.d) + +# exec +TARGET := $(TARGET_OUT_PATH)/$(MOD_NAME) + +# build flags +CFLAGS := -Wall -Wl,-rpath-link=$(LIB_PATH) + +debug = no +ifeq ($(debug),yes) +CFLAGS += -O0 -ggdb3 -Wno-unused +else +CFLAGS += -O2 -Wno-unused +endif + +# dependency +CLIB += -L$(LIB_PATH) +CLIB += -L$(OUT_PATH)/lib +CLIB += -lax_sys +CLIB += -lax_3a +CLIB += -lax_proton +CLIB += -lax_engine +CLIB += -lax_mipi +CLIB += -lax_nt_stream +CLIB += -lax_nt_ctrl +CLIB += -lax_ivps +CLIB += -lax_venc +CLIB += -lm -lpthread -lrt -ldl -lstdc++ +CLIB += -L$(SSL_PATH)/lib -L$(LIVE_PATH)/lib -lssl -lcrypto -lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment +CLIB += -L$(OPENCV_PATH)/lib +CLIB += -L$(OPENCV_PATH)/lib/opencv4/3rdparty/ +CLIB += -Wl,--start-group -lopencv_imgcodecs -lopencv_imgproc -lopencv_core -ldl -lm -lpthread -lrt -littnotify -ltegra_hal -llibjpeg-turbo -llibwebp -llibpng -llibtiff -llibopenjp2 -lzlib -Wl,--end-group + +# install +INSTALL_TARGET := $(TARGET) +INSTALL_DIR := $(ROOTFS_TARGET_PATH)/bin/ + +# link +LINK = $(CC) + +include $(HOME_PATH)/build/rules.mak diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/README.md b/msp/sample/vin_ivps_engine_venc_rtsp/README.md new file mode 100644 index 0000000..618cc58 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/README.md @@ -0,0 +1,23 @@ +1. Function description: + + This module is an example code for VIN->IVPS->VENC->RTSP, which is convenient for users to quickly understand +and master the use of VIN->IVPS->VENC->RTSP. + + +2. Examples: + +Example1: VIN->IVPS->VENC->RTSP + /opt/bin/sample_vin_ivps_venc_rtsp -c 0 + + +3. Results: + + After running successfully, the encoded code stream will be send to streaming server. +The stream can be viewed through a tool, e.g. EasyPlayer-RTSP. + + Execute Ctrl + C to exit. + + +4. Notes: + + diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/include/args.hpp b/msp/sample/vin_ivps_engine_venc_rtsp/include/args.hpp new file mode 100644 index 0000000..9af10c4 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/include/args.hpp @@ -0,0 +1,47 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include +#include +#include + +#include "split.hpp" + + +namespace utilities +{ + template + bool parse_string(const std::string& argument_string, std::array& arguments, const std::string& delimiter = ",") + { + std::vector result = split_string(argument_string, delimiter); + + if (N != result.size()) + { + return false; + } + + for (size_t i = 0; i < N; i++) + { + if (std::is_integral::value) + { + arguments[i] = std::stoi(result[i]); + } + + if (std::is_floating_point::value) + { + arguments[i] = std::stof(result[i]); + } + } + + return true; + } +} diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/include/common.hpp b/msp/sample/vin_ivps_engine_venc_rtsp/include/common.hpp new file mode 100644 index 0000000..794566d --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/include/common.hpp @@ -0,0 +1,120 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include +#include +#include +#include +#include +#include + +namespace preprocess +{ + // opencv mat(h, w) + // resize cv::Size(dstw, dsth) + void get_input_data_no_letterbox(const cv::Mat& mat, std::vector& image, int model_h, int model_w, bool bgr2rgb = false) + { + cv::Mat img_new(model_h, model_w, CV_8UC3, image.data()); + cv::resize(mat, img_new, cv::Size(model_w, model_h)); + if (bgr2rgb) + { + cv::cvtColor(img_new, img_new, cv::COLOR_BGR2RGB); + } + } + + void get_input_data_letterbox(cv::Mat mat, std::vector& image, int letterbox_rows, int letterbox_cols, bool bgr2rgb = false) + { + /* letterbox process to support different letterbox size */ + float scale_letterbox; + int resize_rows; + int resize_cols; + if ((letterbox_rows * 1.0 / mat.rows) < (letterbox_cols * 1.0 / mat.cols)) + { + scale_letterbox = (float)letterbox_rows * 1.0f / (float)mat.rows; + } + else + { + scale_letterbox = (float)letterbox_cols * 1.0f / (float)mat.cols; + } + resize_cols = int(scale_letterbox * (float)mat.cols); + resize_rows = int(scale_letterbox * (float)mat.rows); + + cv::Mat img_new(letterbox_rows, letterbox_cols, CV_8UC3, image.data()); + + cv::resize(mat, mat, cv::Size(resize_cols, resize_rows)); + + int top = (letterbox_rows - resize_rows) / 2; + int bot = (letterbox_rows - resize_rows + 1) / 2; + int left = (letterbox_cols - resize_cols) / 2; + int right = (letterbox_cols - resize_cols + 1) / 2; + + // Letterbox filling + cv::copyMakeBorder(mat, img_new, top, bot, left, right, cv::BORDER_CONSTANT, cv::Scalar(0, 0, 0)); + if (bgr2rgb) + { + cv::cvtColor(img_new, img_new, cv::COLOR_BGR2RGB); + } + } + + void get_input_data_centercrop(cv::Mat mat, std::vector& image, int model_h, int model_w, bool bgr2rgb = false) + { + /* letterbox process to support different letterbox size */ + + /* C2C BGR */ + if (mat.channels() == 4) + { + cv::cvtColor(mat, mat, cv::COLOR_BGRA2BGR); + } + + if (mat.channels() == 1) + { + cv::cvtColor(mat, mat, cv::COLOR_GRAY2BGR); + } + + /* Center */ + int h0; + int w0; + if (mat.rows < mat.cols) + { + h0 = 256; + w0 = int(mat.cols * (256.0 / mat.rows)); + } + else + { + h0 = int(mat.rows * (256.0 / mat.cols)); + w0 = 256; + } + int center_h = int(h0 / 2); + int center_w = int(w0 / 2); + + cv::resize(mat, mat, cv::Size(w0, h0)); + + // cv::imwrite("center.jpg", mat); + + /* Crop */ + cv::Rect crop_box(center_w - int(model_w / 2), center_h - int(model_h / 2), model_w, model_h); + cv::Mat img_new(model_h, model_w, CV_8UC3, image.data()); + + cv::Mat mat_crop = mat(crop_box).clone(); + + // cv::imwrite("mat_crop.jpg", mat_crop); + mat_crop.copyTo(img_new); + + // cv::imwrite("img_new.jpg", img_new); + + /* SwapRB*/ + if (bgr2rgb) + { + cv::cvtColor(img_new, img_new, cv::COLOR_BGR2RGB); + } + } +} // namespace preprocess \ No newline at end of file diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/include/detection.hpp b/msp/sample/vin_ivps_engine_venc_rtsp/include/detection.hpp new file mode 100644 index 0000000..675db8e --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/include/detection.hpp @@ -0,0 +1,760 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +namespace detection +{ + typedef struct + { + int grid0; + int grid1; + int stride; + } GridAndStride; + + typedef struct + { + cv::Rect_ rect; + int label; + float prob; + cv::Point2f landmark[5]; + } Object; + + static inline float sigmoid(float x) + { + return static_cast(1.f / (1.f + std::exp(-x))); + } + + static inline float intersection_area(const Object &a, const Object &b) + { + cv::Rect_ inter = a.rect & b.rect; + return inter.area(); + } + + static void qsort_descent_inplace(std::vector &faceobjects, int left, int right) + { + int i = left; + int j = right; + float p = faceobjects[(left + right) / 2].prob; + + while (i <= j) + { + while (faceobjects[i].prob > p) + i++; + + while (faceobjects[j].prob < p) + j--; + + if (i <= j) + { + // swap + std::swap(faceobjects[i], faceobjects[j]); + + i++; + j--; + } + } +// #pragma omp parallel sections + { +// #pragma omp section + { + if (left < j) + qsort_descent_inplace(faceobjects, left, j); + } +// #pragma omp section + { + if (i < right) + qsort_descent_inplace(faceobjects, i, right); + } + } + } + + static void qsort_descent_inplace(std::vector &faceobjects) + { + if (faceobjects.empty()) + return; + + qsort_descent_inplace(faceobjects, 0, faceobjects.size() - 1); + } + + static void nms_sorted_bboxes(const std::vector &faceobjects, std::vector &picked, float nms_threshold) + { + picked.clear(); + + const int n = faceobjects.size(); + + std::vector areas(n); + for (int i = 0; i < n; i++) + { + areas[i] = faceobjects[i].rect.area(); + } + + for (int i = 0; i < n; i++) + { + const Object &a = faceobjects[i]; + + int keep = 1; + for (int j = 0; j < (int)picked.size(); j++) + { + const Object &b = faceobjects[picked[j]]; + + // intersection over union + float inter_area = intersection_area(a, b); + float union_area = areas[i] + areas[picked[j]] - inter_area; + // float IoU = inter_area / union_area + if (inter_area / union_area > nms_threshold) + keep = 0; + } + + if (keep) + picked.push_back(i); + } + } + + // static void generate_grids_and_stride(const int target_w, const int target_h, std::vector& strides, std::vector& grid_strides) + // { + // for (auto stride : strides) + // { + // int num_grid_w = target_w / stride; + // int num_grid_h = target_h / stride; + // for (int g1 = 0; g1 < num_grid_h; g1++) + // { + // for (int g0 = 0; g0 < num_grid_w; g0++) + // { + // GridAndStride gs; + // gs.grid0 = g0; + // gs.grid1 = g1; + // gs.stride = stride; + // grid_strides.push_back(gs); + // } + // } + // } + // } + + // static void generate_proposals_scrfd(int feat_stride, const float* score_blob, + // const float* bbox_blob, const float* kps_blob, + // float prob_threshold, std::vector& faceobjects, int letterbox_cols, int letterbox_rows) + // { + // static float anchors[] = {-8.f, -8.f, 8.f, 8.f, -16.f, -16.f, 16.f, 16.f, -32.f, -32.f, 32.f, 32.f, -64.f, -64.f, 64.f, 64.f, -128.f, -128.f, 128.f, 128.f, -256.f, -256.f, 256.f, 256.f}; + // int feat_w = letterbox_cols / feat_stride; + // int feat_h = letterbox_rows / feat_stride; + // int feat_size = feat_w * feat_h; + // int anchor_group = 1; + // if (feat_stride == 8) + // anchor_group = 1; + // if (feat_stride == 16) + // anchor_group = 2; + // if (feat_stride == 32) + // anchor_group = 3; + + // // generate face proposal from bbox deltas and shifted anchors + // const int num_anchors = 2; + + // for (int q = 0; q < num_anchors; q++) + // { + // // shifted anchor + // float anchor_y = anchors[(anchor_group - 1) * 8 + q * 4 + 1]; + + // float anchor_w = anchors[(anchor_group - 1) * 8 + q * 4 + 2] - anchors[(anchor_group - 1) * 8 + q * 4 + 0]; + // float anchor_h = anchors[(anchor_group - 1) * 8 + q * 4 + 3] - anchors[(anchor_group - 1) * 8 + q * 4 + 1]; + + // for (int i = 0; i < feat_h; i++) + // { + // float anchor_x = anchors[(anchor_group - 1) * 8 + q * 4 + 0]; + + // for (int j = 0; j < feat_w; j++) + // { + // int index = i * feat_w + j; + + // float prob = sigmoid(score_blob[q * feat_size + index]); + + // if (prob >= prob_threshold) + // { + // // insightface/detection/scrfd/mmdet/models/dense_heads/scrfd_head.py _get_bboxes_single() + // float dx = bbox_blob[(q * 4 + 0) * feat_size + index] * feat_stride; + // float dy = bbox_blob[(q * 4 + 1) * feat_size + index] * feat_stride; + // float dw = bbox_blob[(q * 4 + 2) * feat_size + index] * feat_stride; + // float dh = bbox_blob[(q * 4 + 3) * feat_size + index] * feat_stride; + // // insightface/detection/scrfd/mmdet/core/bbox/transforms.py distance2bbox() + // float cx = anchor_x + anchor_w * 0.5f; + // float cy = anchor_y + anchor_h * 0.5f; + + // float x0 = cx - dx; + // float y0 = cy - dy; + // float x1 = cx + dw; + // float y1 = cy + dh; + + // Object obj; + // obj.label = 0; + // obj.rect.x = x0; + // obj.rect.y = y0; + // obj.rect.width = x1 - x0 + 1; + // obj.rect.height = y1 - y0 + 1; + // obj.prob = prob; + + // if (kps_blob != 0) + // { + // obj.landmark[0].x = cx + kps_blob[index] * feat_stride; + // obj.landmark[0].y = cy + kps_blob[1 * feat_h * feat_w + index] * feat_stride; + // obj.landmark[1].x = cx + kps_blob[2 * feat_h * feat_w + index] * feat_stride; + // obj.landmark[1].y = cy + kps_blob[3 * feat_h * feat_w + index] * feat_stride; + // obj.landmark[2].x = cx + kps_blob[4 * feat_h * feat_w + index] * feat_stride; + // obj.landmark[2].y = cy + kps_blob[5 * feat_h * feat_w + index] * feat_stride; + // obj.landmark[3].x = cx + kps_blob[6 * feat_h * feat_w + index] * feat_stride; + // obj.landmark[3].y = cy + kps_blob[7 * feat_h * feat_w + index] * feat_stride; + // obj.landmark[4].x = cx + kps_blob[8 * feat_h * feat_w + index] * feat_stride; + // obj.landmark[4].y = cy + kps_blob[9 * feat_h * feat_w + index] * feat_stride; + // } + + // faceobjects.push_back(obj); + // } + + // anchor_x += feat_stride; + // } + + // anchor_y += feat_stride; + // } + // } + // } + + // static void generate_proposals_mobilenet_ssd(const float* score, const float* boxes, const int head_count, const int* feature_map_size, const int* anchor_size, const int cls_num, + // float prob_threshold, const float* strides, const float center_val, const float scale_val, const float* anchor_info, std::vector& objects) + // { + // auto ptr_score = score; + // auto ptr_boxes = boxes; + // auto ptr_anchor_info = anchor_info; + // for (int head = 0; head < head_count; ++head) + // { + // for (int fea_h = 0; fea_h < feature_map_size[head]; ++fea_h) + // { + // for (int fea_w = 0; fea_w < feature_map_size[head]; ++fea_w) + // { + // for (int anchor_i = 0; anchor_i < anchor_size[head]; ++anchor_i) + // { + // float softmax_sum = 0; + // float class_score = -FLT_MAX; + // int class_index = 0; + // for (int s = 0; s < cls_num + 1; s++) + // { + // softmax_sum += std::exp(ptr_score[s]); + // } + // for (int i = 0; i < cls_num + 1; ++i) + // { + // float temp = std::exp(ptr_score[i]) / softmax_sum; + // // if (temp > class_score) + // // { + // // class_index = i; + // // class_score = temp; + // // } + + // class_index = i; + // class_score = temp; + + // if (temp >= prob_threshold and class_index != 0) + // { + // // fprintf(stderr, "class_score: %f %d \n", class_score, i); + + // float pred_x = (((float)fea_w + 0.5f) / (300.0f / strides[head]) + ptr_boxes[0] * center_val * ptr_anchor_info[anchor_i * 2] / 300.0f); + // float pred_y = (((float)fea_h + 0.5f) / (300.0f / strides[head]) + ptr_boxes[1] * center_val * ptr_anchor_info[anchor_i * 2 + 1] / 300.0f); + // float pred_w = std::exp(ptr_boxes[2] * scale_val) * ptr_anchor_info[anchor_i * 2] / 300.0f; + // float pred_h = std::exp(ptr_boxes[3] * scale_val) * ptr_anchor_info[anchor_i * 2 + 1] / 300.0f; + + // float x0 = (pred_x - pred_w * 0.5f) * 300.0f; + // float y0 = (pred_y - pred_h * 0.5f) * 300.0f; + // float x1 = (pred_x + pred_w * 0.5f) * 300.0f; + // float y1 = (pred_y + pred_h * 0.5f) * 300.0f; + + // Object obj; + // obj.rect.x = x0; + // obj.rect.y = y0; + // obj.rect.width = x1 - x0; + // obj.rect.height = y1 - y0; + // obj.label = class_index; + // obj.prob = class_score; + + // objects.push_back(obj); + // } + // } + + // ptr_score += cls_num + 1; + // ptr_boxes += 4; + // } + // } + // } + // ptr_anchor_info += anchor_size[head] * 2; + // } + // } + + // static void generate_proposals_yolox(int stride, const float* feat, float prob_threshold, std::vector& objects, + // int letterbox_cols, int letterbox_rows) + // { + // int feat_w = letterbox_cols / stride; + // int feat_h = letterbox_rows / stride; + // int cls_num = 80; + + // auto feat_ptr = feat; + + // for (int h = 0; h <= feat_h - 1; h++) + // { + // for (int w = 0; w <= feat_w - 1; w++) + // { + // float box_objectness = feat_ptr[4]; + // if (box_objectness < prob_threshold) + // { + // feat_ptr += 85; + // continue; + // } + + // //process cls score + // int class_index = 0; + // float class_score = -FLT_MAX; + // for (int s = 0; s <= cls_num - 1; s++) + // { + // float score = feat_ptr[s + 5]; + // if (score > class_score) + // { + // class_index = s; + // class_score = score; + // } + // } + + // float box_prob = box_objectness * class_score; + + // if (box_prob > prob_threshold) + // { + // float x_center = (feat_ptr[0] + w) * stride; + // float y_center = (feat_ptr[1] + h) * stride; + // float w = exp(feat_ptr[2]) * stride; + // float h = exp(feat_ptr[3]) * stride; + // float x0 = x_center - w * 0.5f; + // float y0 = y_center - h * 0.5f; + + // Object obj; + // obj.rect.x = x0; + // obj.rect.y = y0; + // obj.rect.width = w; + // obj.rect.height = h; + // obj.label = class_index; + // obj.prob = box_prob; + + // objects.push_back(obj); + // } + + // feat_ptr += 85; + // } + // } + // } + + // static void generate_proposals_yolov7(int stride, const float* feat, float prob_threshold, std::vector& objects, + // int letterbox_cols, int letterbox_rows, const float* anchors) + // { + // int feat_w = letterbox_cols / stride; + // int feat_h = letterbox_rows / stride; + // int cls_num = 80; + + // auto feat_ptr = feat; + + // for (int h = 0; h <= feat_h - 1; h++) + // { + // for (int w = 0; w <= feat_w - 1; w++) + // { + // for (int a_index = 0; a_index < 3; ++a_index) + // { + // float box_objectness = feat_ptr[4]; + // if (box_objectness < prob_threshold) + // { + // feat_ptr += 85; + // continue; + // } + + // //process cls score + // int class_index = 0; + // float class_score = -FLT_MAX; + // for (int s = 0; s <= cls_num - 1; s++) + // { + // float score = feat_ptr[s + 5]; + // if (score > class_score) + // { + // class_index = s; + // class_score = score; + // } + // } + + // float box_prob = box_objectness * class_score; + + // if (box_prob > prob_threshold) + // { + // float x_center = (feat_ptr[0] * 2 - 0.5f + (float)w) * (float)stride; + // float y_center = (feat_ptr[1] * 2 - 0.5f + (float)h) * (float)stride; + // float box_w = (feat_ptr[2] * 2) * (feat_ptr[2] * 2) * anchors[a_index * 2]; + // float box_h = (feat_ptr[3] * 2) * (feat_ptr[3] * 2) * anchors[a_index * 2 + 1]; + // float x0 = x_center - box_w * 0.5f; + // float y0 = y_center - box_h * 0.5f; + + // Object obj; + // obj.rect.x = x0; + // obj.rect.y = y0; + // obj.rect.width = box_w; + // obj.rect.height = box_h; + // obj.label = class_index; + // obj.prob = box_prob; + + // objects.push_back(obj); + // } + + // feat_ptr += 85; + // } + // } + // } + // } + + static void generate_proposals_255(int stride, const float *feat, float prob_threshold, std::vector &objects, + int letterbox_cols, int letterbox_rows, const float *anchors, float prob_threshold_unsigmoid) + { + int anchor_num = 3; + int feat_w = letterbox_cols / stride; + int feat_h = letterbox_rows / stride; + int cls_num = 80; + int anchor_group; + if (stride == 8) + anchor_group = 1; + if (stride == 16) + anchor_group = 2; + if (stride == 32) + anchor_group = 3; + + auto feature_ptr = feat; + + for (int h = 0; h <= feat_h - 1; h++) + { + for (int w = 0; w <= feat_w - 1; w++) + { + for (int a = 0; a <= anchor_num - 1; a++) + { + if (feature_ptr[4] < prob_threshold_unsigmoid) + { + feature_ptr += (cls_num + 5); + continue; + } + + // process cls score + int class_index = 0; + float class_score = -FLT_MAX; + for (int s = 0; s <= cls_num - 1; s++) + { + float score = feature_ptr[s + 5]; + if (score > class_score) + { + class_index = s; + class_score = score; + } + } + // process box score + float box_score = feature_ptr[4]; + float final_score = sigmoid(box_score) * sigmoid(class_score); + + if (final_score >= prob_threshold) + { + float dx = sigmoid(feature_ptr[0]); + float dy = sigmoid(feature_ptr[1]); + float dw = sigmoid(feature_ptr[2]); + float dh = sigmoid(feature_ptr[3]); + float pred_cx = (dx * 2.0f - 0.5f + w) * stride; + float pred_cy = (dy * 2.0f - 0.5f + h) * stride; + float anchor_w = anchors[(anchor_group - 1) * 6 + a * 2 + 0]; + float anchor_h = anchors[(anchor_group - 1) * 6 + a * 2 + 1]; + float pred_w = dw * dw * 4.0f * anchor_w; + float pred_h = dh * dh * 4.0f * anchor_h; + float x0 = pred_cx - pred_w * 0.5f; + float y0 = pred_cy - pred_h * 0.5f; + float x1 = pred_cx + pred_w * 0.5f; + float y1 = pred_cy + pred_h * 0.5f; + + Object obj; + obj.rect.x = x0; + obj.rect.y = y0; + obj.rect.width = x1 - x0; + obj.rect.height = y1 - y0; + obj.label = class_index; + obj.prob = final_score; + objects.push_back(obj); + } + + feature_ptr += (cls_num + 5); + } + } + } + } + + // static void generate_proposals(int stride, const float* feat, float prob_threshold, std::vector& objects, + // int letterbox_cols, int letterbox_rows, const float* anchors) + // { + // int anchor_num = 3; + // int feat_w = letterbox_cols / stride; + // int feat_h = letterbox_rows / stride; + // int cls_num = 80; + // int anchor_group; + // if (stride == 8) + // anchor_group = 1; + // if (stride == 16) + // anchor_group = 2; + // if (stride == 32) + // anchor_group = 3; + + // int w_stride = (cls_num + 5); + // int h_stride = feat_w * w_stride; + // int a_stride = feat_h * h_stride; + + // for (int h = 0; h <= feat_h - 1; h++) + // { + // for (int w = 0; w <= feat_w - 1; w++) + // { + // for (int a = 0; a <= anchor_num - 1; a++) + // { + // //process cls score + // int class_index = 0; + // float class_score = -FLT_MAX; + // int offset = a * a_stride + h * h_stride + w * w_stride; + // for (int s = 0; s <= cls_num - 1; s++) + // { + // float score = feat[offset + s + 5]; + // if (score > class_score) + // { + // class_index = s; + // class_score = score; + // } + // } + // //process box score + // float box_score = feat[offset + 4]; + // float final_score = sigmoid(box_score) * sigmoid(class_score); + + // if (final_score >= prob_threshold) + // { + // int loc_idx = offset; + // float dx = sigmoid(feat[loc_idx + 0]); + // float dy = sigmoid(feat[loc_idx + 1]); + // float dw = sigmoid(feat[loc_idx + 2]); + // float dh = sigmoid(feat[loc_idx + 3]); + // float pred_cx = (dx * 2.0f - 0.5f + w) * stride; + // float pred_cy = (dy * 2.0f - 0.5f + h) * stride; + // float anchor_w = anchors[(anchor_group - 1) * 6 + a * 2 + 0]; + // float anchor_h = anchors[(anchor_group - 1) * 6 + a * 2 + 1]; + // float pred_w = dw * dw * 4.0f * anchor_w; + // float pred_h = dh * dh * 4.0f * anchor_h; + // float x0 = pred_cx - pred_w * 0.5f; + // float y0 = pred_cy - pred_h * 0.5f; + // float x1 = pred_cx + pred_w * 0.5f; + // float y1 = pred_cy + pred_h * 0.5f; + + // Object obj; + // obj.rect.x = x0; + // obj.rect.y = y0; + // obj.rect.width = x1 - x0; + // obj.rect.height = y1 - y0; + // obj.label = class_index; + // obj.prob = final_score; + // objects.push_back(obj); + // } + // } + // } + // } + // } + + // static void draw_objects(const cv::Mat &bgr, const std::vector &objects, const char **class_names, const char *output_name) + // { + // cv::Mat image = bgr.clone(); + + // for (size_t i = 0; i < objects.size(); i++) + // { + // const Object &obj = objects[i]; + + // fprintf(stdout, "%2d: %3.0f%%, [%4.0f, %4.0f, %4.0f, %4.0f], %s\n", obj.label, obj.prob * 100, obj.rect.x, + // obj.rect.y, obj.rect.x + obj.rect.width, obj.rect.y + obj.rect.height, class_names[obj.label]); + + // cv::rectangle(image, obj.rect, cv::Scalar(255, 0, 0)); + + // char text[256]; + // sprintf(text, "%s %.1f%%", class_names[obj.label], obj.prob * 100); + + // int baseLine = 0; + // cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, &baseLine); + + // int x = obj.rect.x; + // int y = obj.rect.y - label_size.height - baseLine; + // if (y < 0) + // y = 0; + // if (x + label_size.width > image.cols) + // x = image.cols - label_size.width; + + // cv::rectangle(image, cv::Rect(cv::Point(x, y), cv::Size(label_size.width, label_size.height + baseLine)), + // cv::Scalar(255, 255, 255), -1); + + // cv::putText(image, text, cv::Point(x, y + label_size.height), cv::FONT_HERSHEY_SIMPLEX, 0.5, + // cv::Scalar(0, 0, 0)); + // } + + // cv::imwrite(std::string(output_name) + ".jpg", image); + // } + + void reverse_letterbox(std::vector &proposal, std::vector &objects, int letterbox_rows, int letterbox_cols, int src_rows, int src_cols) + { + float scale_letterbox; + int resize_rows; + int resize_cols; + if ((letterbox_rows * 1.0 / src_rows) < (letterbox_cols * 1.0 / src_cols)) + { + scale_letterbox = letterbox_rows * 1.0 / src_rows; + } + else + { + scale_letterbox = letterbox_cols * 1.0 / src_cols; + } + resize_cols = int(scale_letterbox * src_cols); + resize_rows = int(scale_letterbox * src_rows); + + int tmp_h = (letterbox_rows - resize_rows) / 2; + int tmp_w = (letterbox_cols - resize_cols) / 2; + + float ratio_x = (float)src_rows / resize_rows; + float ratio_y = (float)src_cols / resize_cols; + + int count = proposal.size(); + + objects.resize(count); + for (int i = 0; i < count; i++) + { + objects[i] = proposal[i]; + float x0 = (objects[i].rect.x); + float y0 = (objects[i].rect.y); + float x1 = (objects[i].rect.x + objects[i].rect.width); + float y1 = (objects[i].rect.y + objects[i].rect.height); + + x0 = (x0 - tmp_w) * ratio_x; + y0 = (y0 - tmp_h) * ratio_y; + x1 = (x1 - tmp_w) * ratio_x; + y1 = (y1 - tmp_h) * ratio_y; + + x0 = std::max(std::min(x0, (float)(src_cols - 1)), 0.f); + y0 = std::max(std::min(y0, (float)(src_rows - 1)), 0.f); + x1 = std::max(std::min(x1, (float)(src_cols - 1)), 0.f); + y1 = std::max(std::min(y1, (float)(src_rows - 1)), 0.f); + + objects[i].rect.x = x0; + objects[i].rect.y = y0; + objects[i].rect.width = x1 - x0; + objects[i].rect.height = y1 - y0; + } + } + + void get_out_bbox_no_letterbox(std::vector &proposals, std::vector &objects, const float nms_threshold, int model_h, int model_w, int src_rows, int src_cols) + { + qsort_descent_inplace(proposals); + std::vector picked; + nms_sorted_bboxes(proposals, picked, nms_threshold); + + /* yolov5 draw the result */ + float ratio_x = (float)src_cols / (float)model_w; + float ratio_y = (float)src_rows / (float)model_h; + + int count = picked.size(); + + objects.resize(count); + for (int i = 0; i < count; i++) + { + objects[i] = proposals[picked[i]]; + float x0 = (objects[i].rect.x); + float y0 = (objects[i].rect.y); + float x1 = (objects[i].rect.x + objects[i].rect.width); + float y1 = (objects[i].rect.y + objects[i].rect.height); + + x0 = (x0)*ratio_x; + y0 = (y0)*ratio_y; + x1 = (x1)*ratio_x; + y1 = (y1)*ratio_y; + + x0 = std::max(std::min(x0, (float)(src_cols - 1)), 0.f); + y0 = std::max(std::min(y0, (float)(src_rows - 1)), 0.f); + x1 = std::max(std::min(x1, (float)(src_cols - 1)), 0.f); + y1 = std::max(std::min(y1, (float)(src_rows - 1)), 0.f); + + objects[i].rect.x = x0; + objects[i].rect.y = y0; + objects[i].rect.width = x1 - x0; + objects[i].rect.height = y1 - y0; + } + } + + void get_out_bbox(std::vector &proposals, std::vector &objects, const float nms_threshold, int letterbox_rows, int letterbox_cols, int src_rows, int src_cols) + { + qsort_descent_inplace(proposals); + std::vector picked; + nms_sorted_bboxes(proposals, picked, nms_threshold); + + /* yolov5 draw the result */ + float scale_letterbox; + int resize_rows; + int resize_cols; + if ((letterbox_rows * 1.0 / src_rows) < (letterbox_cols * 1.0 / src_cols)) + { + scale_letterbox = letterbox_rows * 1.0 / src_rows; + } + else + { + scale_letterbox = letterbox_cols * 1.0 / src_cols; + } + resize_cols = int(scale_letterbox * src_cols); + resize_rows = int(scale_letterbox * src_rows); + + int tmp_h = (letterbox_rows - resize_rows) / 2; + int tmp_w = (letterbox_cols - resize_cols) / 2; + + float ratio_x = (float)src_rows / resize_rows; + float ratio_y = (float)src_cols / resize_cols; + + int count = picked.size(); + + for (int i = 0; i < count; i++) + { + Object obj = proposals[picked[i]]; + + float x0 = (obj.rect.x); + float y0 = (obj.rect.y); + float x1 = (obj.rect.x + obj.rect.width); + float y1 = (obj.rect.y + obj.rect.height); + + x0 = (x0 - tmp_w) * ratio_x; + y0 = (y0 - tmp_h) * ratio_y; + x1 = (x1 - tmp_w) * ratio_x; + y1 = (y1 - tmp_h) * ratio_y; + + x0 = std::max(std::min(x0, (float)(src_cols - 1)), 0.f); + y0 = std::max(std::min(y0, (float)(src_rows - 1)), 0.f); + x1 = std::max(std::min(x1, (float)(src_cols - 1)), 0.f); + y1 = std::max(std::min(y1, (float)(src_rows - 1)), 0.f); + + obj.rect.x = x0; + obj.rect.y = y0; + obj.rect.width = x1 - x0; + obj.rect.height = y1 - y0; + if (obj.rect.width < 1.0 || obj.rect.height < 1.0) + continue; + objects.push_back(obj); + } + } + +} // namespace detection diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/include/file.hpp b/msp/sample/vin_ivps_engine_venc_rtsp/include/file.hpp new file mode 100644 index 0000000..bda952c --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/include/file.hpp @@ -0,0 +1,105 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include +#include +#include +#include + +namespace utilities +{ + bool file_exist(const std::string& path) + { + auto flag = false; + + std::fstream fs(path, std::ios::in | std::ios::binary); + flag = fs.is_open(); + fs.close(); + + return flag; + } + + bool read_file(const std::string& path, std::vector& data) + { + std::fstream fs(path, std::ios::in | std::ios::binary); + + if (!fs.is_open()) + { + return false; + } + + fs.seekg(std::ios::end); + auto fs_end = fs.tellg(); + fs.seekg(std::ios::beg); + auto fs_beg = fs.tellg(); + + auto file_size = static_cast(fs_end - fs_beg); + auto vector_size = data.size(); + + data.reserve(vector_size + file_size); + data.insert(data.end(), std::istreambuf_iterator(fs), std::istreambuf_iterator()); + + fs.close(); + + return true; + } + + bool dump_file(const std::string& path, std::vector data) + { + std::fstream fs(path, std::ios::out | std::ios::binary); + + if (!fs.is_open() || fs.fail()) + { + fprintf(stderr, "[ERR] cannot open file %s \n", path.c_str()); + } + + fs.write((char*)data.data(), data.size()); + + return true; + } + + bool dump_file(const std::string& path, char* data, int size) + { + std::fstream fs(path, std::ios::out | std::ios::binary); + + if (!fs.is_open() || fs.fail()) + { + fprintf(stderr, "[ERR] cannot open file %s \n", path.c_str()); + } + + fs.write(data, size); + + return true; + } + + bool read_file(const char* fn, std::vector& data) + { + FILE* fp = fopen(fn, "r"); + if (fp != nullptr) + { + fseek(fp, 0L, SEEK_END); + auto len = ftell(fp); + fseek(fp, 0, SEEK_SET); + data.clear(); + size_t read_size = 0; + if (len > 0) + { + data.resize(len); + read_size = fread(data.data(), 1, len, fp); + } + fclose(fp); + return read_size == (size_t)len; + } + return false; + } + +} // namespace utilities diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/include/io.hpp b/msp/sample/vin_ivps_engine_venc_rtsp/include/io.hpp new file mode 100644 index 0000000..710fa5d --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/include/io.hpp @@ -0,0 +1,150 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include +#include +#include +#include + +#include +#include + +#define AX_CMM_ALIGN_SIZE 128 + +const char* AX_CMM_SESSION_NAME = "npu"; + +typedef enum +{ + AX_ENGINE_ABST_DEFAULT = 0, + AX_ENGINE_ABST_CACHED = 1, +} AX_ENGINE_ALLOC_BUFFER_STRATEGY_T; + + +typedef std::pair INPUT_OUTPUT_ALLOC_STRATEGY; + +#define SAMPLE_AX_ENGINE_DEAL_HANDLE \ + if (0 != ret) \ + { \ + return AX_ENGINE_DestroyHandle(handle); \ + } + +#define SAMPLE_AX_ENGINE_DEAL_HANDLE_IO \ + if (0 != ret) \ + { \ + middleware::free_io(&io_data); \ + return AX_ENGINE_DestroyHandle(handle); \ + } + +namespace middleware +{ + + void free_io_index(AX_ENGINE_IO_BUFFER_T* io_buf, size_t index) + { + for (size_t i = 0; i < index; ++i) + { + AX_ENGINE_IO_BUFFER_T* pBuf = io_buf + i; + AX_SYS_MemFree(pBuf->phyAddr, pBuf->pVirAddr); + } + } + + void free_io(AX_ENGINE_IO_T* io) + { + for (size_t j = 0; j < io->nInputSize; ++j) + { + AX_ENGINE_IO_BUFFER_T* pBuf = io->pInputs + j; + AX_SYS_MemFree(pBuf->phyAddr, pBuf->pVirAddr); + } + for (size_t j = 0; j < io->nOutputSize; ++j) + { + AX_ENGINE_IO_BUFFER_T* pBuf = io->pOutputs + j; + AX_SYS_MemFree(pBuf->phyAddr, pBuf->pVirAddr); + } + delete[] io->pInputs; + delete[] io->pOutputs; + } + + static inline int prepare_io(AX_ENGINE_IO_INFO_T* info, AX_ENGINE_IO_T* io_data, INPUT_OUTPUT_ALLOC_STRATEGY strategy) + { + memset(io_data, 0, sizeof(*io_data)); + io_data->pInputs = new AX_ENGINE_IO_BUFFER_T[info->nInputSize]; + io_data->nInputSize = info->nInputSize; + + auto ret = 0; + for (AX_U32 i = 0; i < info->nInputSize; ++i) + { + auto meta = info->pInputs[i]; + auto buffer = &io_data->pInputs[i]; + if (strategy.first == AX_ENGINE_ABST_CACHED) + { + ret = AX_SYS_MemAllocCached((AX_U64*)(&buffer->phyAddr), &buffer->pVirAddr, meta.nSize, AX_CMM_ALIGN_SIZE, (const AX_S8*)(AX_CMM_SESSION_NAME)); + } + else + { + ret = AX_SYS_MemAlloc((AX_U64*)(&buffer->phyAddr), &buffer->pVirAddr, meta.nSize, AX_CMM_ALIGN_SIZE, (const AX_S8*)(AX_CMM_SESSION_NAME)); + } + + if (ret != 0) + { + free_io_index(io_data->pInputs, i); + fprintf(stderr, "Allocate input{%d} { phy: %p, vir: %p, size: %lu Bytes }. fail \n", i, (void*)buffer->phyAddr, buffer->pVirAddr, (long)meta.nSize); + return ret; + } + // fprintf(stderr, "Allocate input{%d} { phy: %p, vir: %p, size: %lu Bytes }. \n", i, (void*)buffer->phyAddr, buffer->pVirAddr, (long)meta.nSize); + } + + io_data->pOutputs = new AX_ENGINE_IO_BUFFER_T[info->nOutputSize]; + io_data->nOutputSize = info->nOutputSize; + for (AX_U32 i = 0; i < info->nOutputSize; ++i) + { + auto meta = info->pOutputs[i]; + auto buffer = &io_data->pOutputs[i]; + buffer->nSize = meta.nSize; + if (strategy.second == AX_ENGINE_ABST_CACHED) + { + ret = AX_SYS_MemAllocCached((AX_U64*)(&buffer->phyAddr), &buffer->pVirAddr, meta.nSize, AX_CMM_ALIGN_SIZE, (const AX_S8*)(AX_CMM_SESSION_NAME)); + } + else + { + ret = AX_SYS_MemAlloc((AX_U64*)(&buffer->phyAddr), &buffer->pVirAddr, meta.nSize, AX_CMM_ALIGN_SIZE, (const AX_S8*)(AX_CMM_SESSION_NAME)); + } + if (ret != 0) + { + fprintf(stderr, "Allocate output{%d} { phy: %p, vir: %p, size: %lu Bytes }. fail \n", i, (void*)buffer->phyAddr, buffer->pVirAddr, (long)meta.nSize); + free_io_index(io_data->pInputs, io_data->nInputSize); + free_io_index(io_data->pOutputs, i); + return ret; + } + // fprintf(stderr, "Allocate output{%d} { phy: %p, vir: %p, size: %lu Bytes }.\n", i, (void*)buffer->phyAddr, buffer->pVirAddr, (long)meta.nSize); + } + + return 0; + } + + static int push_input(const std::vector& data, AX_ENGINE_IO_T* io_t, AX_ENGINE_IO_INFO_T* info_t) + { + if (info_t->nInputSize != 1) + { + fprintf(stderr, "Only support Input size == 1 current now"); + return -1; + } + + if (data.size() != info_t->pInputs[0].nSize) + { + fprintf(stderr, "The input data size is not matched with tensor {name: %s, size: %d}.\n", info_t->pInputs[0].pName, info_t->pInputs[0].nSize); + return -1; + } + + memcpy(io_t->pInputs[0].pVirAddr, data.data(), data.size()); + + return 0; + } +} // namespace middleware diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/include/pose.hpp b/msp/sample/vin_ivps_engine_venc_rtsp/include/pose.hpp new file mode 100644 index 0000000..c80870d --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/include/pose.hpp @@ -0,0 +1,154 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +namespace pose +{ + typedef struct + { + float x; + float y; + float score; + } ai_point_t; + + struct skeleton + { + int connection[2]; + int left_right_neutral; + }; + + std::vector pairs = {{15, 13, 0}, + {13, 11, 0}, + {16, 14, 0}, + {14, 12, 0}, + {11, 12, 0}, + {5, 11, 0}, + {6, 12, 0}, + {5, 6, 0}, + {5, 7, 0}, + {6, 8, 0}, + {7, 9, 0}, + {8, 10, 0}, + {1, 2, 0}, + {0, 1, 0}, + {0, 2, 0}, + {1, 3, 0}, + {2, 4, 0}, + {0, 5, 0}, + {0, 6, 0}}; + + typedef struct ai_body_parts_s + { + std::vector keypoints; + int32_t img_width = 0; + int32_t img_heigh = 0; + uint64_t timestamp = 0; + } ai_body_parts_s; + + static inline void find_max_2d(float* buf, int width, int height, int* max_idx_width, int* max_idx_height, float* max_value, int c) + { + float* ptr = buf; + *max_value = -10.f; + *max_idx_width = 0; + *max_idx_height = 0; + for (int h = 0; h < height; h++) + { + for (int w = 0; w < width; w++) + { + float score = ptr[c * height * width + h * width + w]; + if (score > *max_value) + { + *max_value = score; + *max_idx_height = h; + *max_idx_width = w; + } + } + } + } + + static inline void draw_result(cv::Mat img, ai_body_parts_s& pose, int joints_num, int model_w, int model_h) + { + for (int i = 0; i < joints_num; i++) + { + int x = (int)(pose.keypoints[i].x * img.cols); + int y = (int)(pose.keypoints[i].y * img.rows); + + x = std::max(std::min(x, (img.cols - 1)), 0); + y = std::max(std::min(y, (img.rows - 1)), 0); + + cv::circle(img, cv::Point(x, y), 4, cv::Scalar(0, 255, 0), cv::FILLED); + } + + cv::Scalar color; + cv::Point pt1; + cv::Point pt2; + for (auto& element : pairs) + { + switch (element.left_right_neutral) + { + case 0: + color = cv::Scalar(255, 0, 0); + break; + case 1: + color = cv::Scalar(0, 0, 255); + break; + default: + color = cv::Scalar(0, 255, 0); + } + + int x1 = (int)(pose.keypoints[element.connection[0]].x * img.cols); + int y1 = (int)(pose.keypoints[element.connection[0]].y * img.rows); + int x2 = (int)(pose.keypoints[element.connection[1]].x * img.cols); + int y2 = (int)(pose.keypoints[element.connection[1]].y * img.rows); + + x1 = std::max(std::min(x1, (img.cols - 1)), 0); + y1 = std::max(std::min(y1, (img.rows - 1)), 0); + x2 = std::max(std::min(x2, (img.cols - 1)), 0); + y2 = std::max(std::min(y2, (img.rows - 1)), 0); + + pt1 = cv::Point(x1, y1); + pt2 = cv::Point(x2, y2); + cv::line(img, pt1, pt2, color, 2); + } + + cv::imwrite("./pose_out.png", img); + } + + static inline void post_process(float* data, ai_body_parts_s& pose, int joint_num, int img_h, int img_w) + { + int heatmap_width = img_w / 4; + int heatmap_height = img_h / 4; + int max_idx_width, max_idx_height; + float max_score; + + ai_point_t kp; + for (int c = 0; c < joint_num; ++c) + { + find_max_2d(data, heatmap_width, heatmap_height, &max_idx_width, &max_idx_height, &max_score, c); + kp.x = (float)max_idx_width / (float)heatmap_width; + kp.y = (float)max_idx_height / (float)heatmap_height; + kp.score = max_score; + pose.keypoints.push_back(kp); + +// std::cout << "x: " << pose.keypoints[c].x << ", y: " << pose.keypoints[c].y << ", score: " +// << pose.keypoints[c].score << std::endl; + } + } + +} // namespace pose \ No newline at end of file diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/include/score.hpp b/msp/sample/vin_ivps_engine_venc_rtsp/include/score.hpp new file mode 100644 index 0000000..494b705 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/include/score.hpp @@ -0,0 +1,23 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include + + +namespace classification +{ + typedef struct + { + uint32_t id; + float score; + } score; +} diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/include/split.hpp b/msp/sample/vin_ivps_engine_venc_rtsp/include/split.hpp new file mode 100644 index 0000000..afe8a77 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/include/split.hpp @@ -0,0 +1,41 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include +#include + + +namespace utilities +{ + std::vector split_string(const std::string& content, const std::string& delimiter) + { + std::vector result; + + std::string::size_type pos1 = 0; + std::string::size_type pos2 = content.find(delimiter); + + while (std::string::npos != pos2) + { + result.push_back(content.substr(pos1, pos2 - pos1)); + + pos1 = pos2 + delimiter.size(); + pos2 = content.find(delimiter, pos1); + } + + if (pos1 != content.length()) + { + result.push_back(content.substr(pos1)); + } + + return result; + } +} diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/include/timer.hpp b/msp/sample/vin_ivps_engine_venc_rtsp/include/timer.hpp new file mode 100644 index 0000000..cab11fb --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/include/timer.hpp @@ -0,0 +1,51 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include + +class timer +{ +private: + std::chrono::system_clock::time_point start_time, end_time; + +public: + timer() + { + start(); + } + + void start() + { + stop(); + this->start_time = this->end_time; + } + + void stop() + { +#ifdef _MSC_VER + this->end_time = std::chrono::system_clock::now(); +#else + this->end_time = std::chrono::high_resolution_clock::now(); +#endif + } + + float cost() + { + if (this->end_time <= this->start_time) + { + this->stop(); + } + + auto ms = std::chrono::duration_cast(this->end_time - this->start_time).count(); + return static_cast(ms) / 1000.f; + } +}; diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/include/topk.hpp b/msp/sample/vin_ivps_engine_venc_rtsp/include/topk.hpp new file mode 100644 index 0000000..bfb04fe --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/include/topk.hpp @@ -0,0 +1,42 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include +#include +#include + +#include "score.hpp" + + +namespace classification +{ + void sort_score(std::vector& array, bool reverse = false) + { + auto compare_func = [](const score& a, const score& b) -> bool + { + return a.score > b.score; + }; + + std::sort(array.begin(), array.end(), compare_func); + + if (reverse) std::reverse(array.begin(), array.end()); + } + + + void print_score(const std::vector& array, const size_t& n) + { + for (size_t i = 0; i < n; i++) + { + fprintf(stdout, "%.4f, %d\n", array[i].score, array[i].id); + } + } +} diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/include/yolo.hpp b/msp/sample/vin_ivps_engine_venc_rtsp/include/yolo.hpp new file mode 100644 index 0000000..eaaeaa8 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/include/yolo.hpp @@ -0,0 +1,568 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#pragma once + +#include +#include +#include +#include +#include + +namespace yolo +{ + enum + { + YOLOV3 = 0, + YOLOV3_TINY = 1, + YOLOV4 = 2, + YOLOV4_TINY = 3, + YOLO_FASTEST = 4, + YOLO_FASTEST_XL = 5, + YOLO_FASTEST_BODY = 6, + YOLOV4_TINY_3L = 7 + }; + + struct BBoxRect + { + float score; + float xmin; + float ymin; + float xmax; + float ymax; + float area; + int label; + }; + + static inline float sigmoid(float x) + { + return (float)(1.f / (1.f + std::exp(-x))); + } + static inline float intersection_area(const BBoxRect& a, const BBoxRect& b) + { + if (a.xmin > b.xmax || a.xmax < b.xmin || a.ymin > b.ymax || a.ymax < b.ymin) + { + // no intersection + return 0.f; + } + + float inter_width = std::min(a.xmax, b.xmax) - std::max(a.xmin, b.xmin); + float inter_height = std::min(a.ymax, b.ymax) - std::max(a.ymin, b.ymin); + + return inter_width * inter_height; + } + static void qsort_descent_inplace(std::vector& datas, int left, int right) + { + int i = left; + int j = right; + float p = datas[(left + right) / 2].score; + + while (i <= j) + { + while (datas[i].score > p) + i++; + + while (datas[j].score < p) + j--; + + if (i <= j) + { + // swap + std::swap(datas[i], datas[j]); + + i++; + j--; + } + } + + if (left < j) + qsort_descent_inplace(datas, left, j); + + if (i < right) + qsort_descent_inplace(datas, i, right); + } + + static void qsort_descent_inplace(std::vector& datas) + { + if (datas.empty()) + return; + + qsort_descent_inplace(datas, 0, (int)(datas.size() - 1)); + } + + static void nms_sorted_bboxes(std::vector& bboxes, std::vector& picked, float nms_threshold) + { + picked.clear(); + + const size_t n = bboxes.size(); + + for (size_t i = 0; i < n; i++) + { + const BBoxRect& a = bboxes[i]; + + int keep = 1; + for (unsigned int j : picked) + { + const BBoxRect& b = bboxes[j]; + + // intersection over union + float inter_area = intersection_area(a, b); + float union_area = a.area + b.area - inter_area; + // float IoU = inter_area / union_area + if (inter_area > nms_threshold * union_area) + { + keep = 0; + break; + } + } + + if (keep) + picked.push_back(i); + } + } + + struct TMat + { + operator const float*() const + { + return (const float*)data; + } + + float* row(int row) const + { + return (float*)data + w * row; + } + + TMat channel_range(int start, int chn_num) const + { + TMat mat = {0}; + + mat.batch = 1; + mat.c = chn_num; + mat.h = h; + mat.w = w; + mat.data = (float*)data + start * h * w; + + return mat; + } + + TMat channel(int channel) const + { + return channel_range(channel, 1); + } + + int batch, c, h, w; + void* data; + }; + + class YoloDetectionOutput + { + public: + int init(int version, float nms_threshold = 0.45f, float confidence_threshold = 0.48f, int class_num = 80); + int forward(const std::vector& bottom_blobs, std::vector& top_blobs); + int forward_nhwc(const std::vector& bottom_blobs, std::vector& top_blobs); + + private: + int m_num_box; + int m_num_class; + int m_anchors_scale[32]; + float m_biases[32]; + int m_mask[32]; + float m_confidence_threshold; + float m_confidence_threshold_unsigmoid; + float m_nms_threshold; + }; + + int YoloDetectionOutput::init(int version, float nms_threshold, float confidence_threshold, int class_num) + { + memset(this, 0, sizeof(*this)); + m_num_box = 3; + m_num_class = class_num; + fprintf(stderr, "YoloDetectionOutput init param[%d]\n", version); + + if (version == YOLOV3) + { + m_anchors_scale[0] = 32; + m_anchors_scale[1] = 16; + m_anchors_scale[2] = 8; + + float bias[] = {10, 13, 16, 30, 33, 23, 30, 61, 62, 45, 59, 119, 116, 90, 156, 198, 373, 326}; + memcpy(m_biases, bias, sizeof(bias)); + + m_mask[0] = 6; + m_mask[1] = 7; + m_mask[2] = 8; + + m_mask[3] = 3; + m_mask[4] = 4; + m_mask[5] = 5; + + m_mask[6] = 0; + m_mask[7] = 1; + m_mask[8] = 2; + } + else if (version == YOLOV3_TINY || version == YOLOV4_TINY) + { + m_anchors_scale[0] = 32; + m_anchors_scale[1] = 16; + + float bias[] = {10, 14, 23, 27, 37, 58, 81, 82, 135, 169, 344, 319}; + memcpy(m_biases, bias, sizeof(bias)); + + m_mask[0] = 3; + m_mask[1] = 4; + m_mask[2] = 5; + + m_mask[3] = 0; + m_mask[4] = 1; + m_mask[5] = 2; + } + else if (version == YOLOV4) + { + m_anchors_scale[0] = 32; + m_anchors_scale[1] = 16; + m_anchors_scale[2] = 8; + + float bias[] = {12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401}; + memcpy(m_biases, bias, sizeof(bias)); + + m_mask[0] = 6; + m_mask[1] = 7; + m_mask[2] = 8; + + m_mask[3] = 3; + m_mask[4] = 4; + m_mask[5] = 5; + + m_mask[6] = 0; + m_mask[7] = 1; + m_mask[8] = 2; + } + else if (version == YOLO_FASTEST || version == YOLO_FASTEST_XL) + { + m_anchors_scale[0] = 32; + m_anchors_scale[1] = 16; + + float bias[] = {12, 18, 37, 49, 52, 132, 115, 73, 119, 199, 242, 238}; + memcpy(m_biases, bias, sizeof(bias)); + + m_mask[0] = 3; + m_mask[1] = 4; + m_mask[2] = 5; + + m_mask[3] = 0; + m_mask[4] = 1; + m_mask[5] = 2; + } + else if (version == YOLO_FASTEST_BODY) + { + m_anchors_scale[0] = 32; + m_anchors_scale[1] = 16; + + float bias[] = {7, 17, 20, 50, 45, 99, 64, 187, 123, 211, 227, 264}; + memcpy(m_biases, bias, sizeof(bias)); + + m_mask[0] = 3; + m_mask[1] = 4; + m_mask[2] = 5; + + m_mask[3] = 0; + m_mask[4] = 1; + m_mask[5] = 2; + } + else if (version == YOLOV4_TINY_3L) + { + m_anchors_scale[0] = 32; + m_anchors_scale[1] = 16; + m_anchors_scale[2] = 8; + + //float bias_official[] = {12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401}; + float bias[] = {10, 14, 23, 27, 37, 58, 36, 75, 76, 55, 72, 146, 81, 82, 135, 169, 344, 319}; + + memcpy(m_biases, bias, sizeof(bias)); + + m_mask[0] = 6; + m_mask[1] = 7; + m_mask[2] = 8; + + m_mask[3] = 3; + m_mask[4] = 4; + m_mask[5] = 5; + + m_mask[6] = 0; + m_mask[7] = 1; + m_mask[8] = 2; + } + + m_confidence_threshold = confidence_threshold; + m_nms_threshold = nms_threshold; + m_confidence_threshold_unsigmoid = -1.0f * (float)std::log((1.0f / m_confidence_threshold) - 1.0f); + + return 0; + } + + int YoloDetectionOutput::forward_nhwc(const std::vector& bottom_blobs, std::vector& top_blobs) + { + // gather all box + std::vector all_bbox_rects; + for (size_t b = 0; b < bottom_blobs.size(); b++) + { + const TMat& bottom_top_blobs = bottom_blobs[b]; + + int w = bottom_top_blobs.w; + int h = bottom_top_blobs.h; + size_t mask_offset = b * m_num_box; + int net_w = (int)(m_anchors_scale[b] * w); + int net_h = (int)(m_anchors_scale[b] * h); + + auto feature_ptr = (float*)bottom_top_blobs.data; + for (int i = 0; i < h; i++) + { + for (int j = 0; j < w; j++) + { + for (int box = 0; box < m_num_box; ++box) + { + if (feature_ptr[4] < m_confidence_threshold_unsigmoid) + { + feature_ptr += (m_num_class + 5); + continue; + } + + int class_index = 0; + float class_score = -FLT_MAX; + for (int k = 5; k < m_num_class + 5; ++k) + { + if (class_score < feature_ptr[k]) + { + class_score = feature_ptr[k]; + class_index = k - 5; + } + } + + //sigmoid(box_score) * sigmoid(class_score) + float confidence_1 = 1.0f / ((1.f + std::exp(-feature_ptr[4])) * (1.f + std::exp(-class_score))); + if (confidence_1 >= m_confidence_threshold) + { + int biases_index = (int)(m_mask[box + mask_offset]); + const float bias_w = m_biases[biases_index * 2]; + const float bias_h = m_biases[biases_index * 2 + 1]; + + // region box + // fprintf(stderr, "%f %f %d \n", class_score, feature_ptr[4], class_index); + float bbox_cx = ((float)j + sigmoid(feature_ptr[0])) / (float)w; + float bbox_cy = ((float)i + sigmoid(feature_ptr[1])) / (float)h; + auto bbox_w = (float)(std::exp(feature_ptr[2]) * bias_w / (float)net_w); + auto bbox_h = (float)(std::exp(feature_ptr[3]) * bias_h / (float)net_h); + + float bbox_xmin = bbox_cx - bbox_w * 0.5f; + float bbox_ymin = bbox_cy - bbox_h * 0.5f; + float bbox_xmax = bbox_cx + bbox_w * 0.5f; + float bbox_ymax = bbox_cy + bbox_h * 0.5f; + + float area = bbox_w * bbox_h; + + BBoxRect c = {confidence_1, bbox_xmin, bbox_ymin, bbox_xmax, bbox_ymax, area, class_index}; + all_bbox_rects.push_back(c); + } + + feature_ptr += (m_num_class + 5); + } + } + } + } + + // global sort inplace + qsort_descent_inplace(all_bbox_rects); + + // apply nms + std::vector picked; + nms_sorted_bboxes(all_bbox_rects, picked, m_nms_threshold); + + // select + std::vector bbox_rects; + + for (unsigned int z : picked) + { + bbox_rects.push_back(all_bbox_rects[z]); + } + + // fill result + int num_detected = (int)(bbox_rects.size()); + if (num_detected == 0) + { + top_blobs[0].h = 0; + return 0; + } + + TMat& top_blob = top_blobs[0]; + + for (int i = 0; i < num_detected; i++) + { + const BBoxRect& r = bbox_rects[i]; + float score = r.score; + float* outptr = top_blob.row(i); + + outptr[0] = (float)r.label; // +1 for prepend background class + outptr[1] = score; + outptr[2] = r.xmin; + outptr[3] = r.ymin; + outptr[4] = r.xmax; + outptr[5] = r.ymax; + } + top_blob.h = num_detected; + return 0; + } + + int YoloDetectionOutput::forward(const std::vector& bottom_blobs, std::vector& top_blobs) + { + // gather all box + std::vector all_bbox_rects; + + for (size_t b = 0; b < bottom_blobs.size(); b++) + { + std::vector > all_box_bbox_rects; + all_box_bbox_rects.resize(m_num_box); + const TMat& bottom_top_blobs = bottom_blobs[b]; + + int w = bottom_top_blobs.w; + int h = bottom_top_blobs.h; + int channels = bottom_top_blobs.c; + //printf("%d %d %d\n", w, h, channels); + const int channels_per_box = channels / m_num_box; + + // anchor coord + box score + num_class + if (channels_per_box != 4 + 1 + m_num_class) + return -1; + size_t mask_offset = b * m_num_box; + int net_w = (int)(m_anchors_scale[b] * w); + int net_h = (int)(m_anchors_scale[b] * h); + //printf("%d %d\n", net_w, net_h); + + //printf("%d %d %d\n", w, h, channels); + for (int pp = 0; pp < m_num_box; pp++) + { + int p = pp * channels_per_box; + int biases_index = (int)(m_mask[pp + mask_offset]); + //printf("%d\n", biases_index); + const float bias_w = m_biases[biases_index * 2]; + const float bias_h = m_biases[biases_index * 2 + 1]; + //printf("%f %f\n", bias_w, bias_h); + const float* xptr = bottom_top_blobs.channel(p); + const float* yptr = bottom_top_blobs.channel(p + 1); + const float* wptr = bottom_top_blobs.channel(p + 2); + const float* hptr = bottom_top_blobs.channel(p + 3); + + const float* box_score_ptr = bottom_top_blobs.channel(p + 4); + + // softmax class scores + TMat scores = bottom_top_blobs.channel_range(p + 5, m_num_class); + //softmax->forward_inplace(scores, opt); + + for (int i = 0; i < h; i++) + { + for (int j = 0; j < w; j++) + { + // find class index with max class score + int class_index = 0; + float class_score = -FLT_MAX; + for (int q = 0; q < m_num_class; q++) + { + float score = scores.channel(q).row(i)[j]; + if (score > class_score) + { + class_index = q; + class_score = score; + } + } + + //sigmoid(box_score) * sigmoid(class_score) + float confidence = (float)1.f / ((1.f + std::exp(-box_score_ptr[0]) * (1.f + std::exp(-class_score)))); + if (confidence >= m_confidence_threshold) + { + // fprintf(stderr, "%f %d \n", class_score, class_index); + // region box + float bbox_cx = ((float)j + sigmoid(xptr[0])) / (float)w; + float bbox_cy = ((float)i + sigmoid(yptr[0])) / (float)h; + auto bbox_w = (float)(std::exp(wptr[0]) * bias_w / (float)net_w); + auto bbox_h = (float)(std::exp(hptr[0]) * bias_h / (float)net_h); + + float bbox_xmin = bbox_cx - bbox_w * 0.5f; + float bbox_ymin = bbox_cy - bbox_h * 0.5f; + float bbox_xmax = bbox_cx + bbox_w * 0.5f; + float bbox_ymax = bbox_cy + bbox_h * 0.5f; + + float area = bbox_w * bbox_h; + + BBoxRect c = {confidence, bbox_xmin, bbox_ymin, bbox_xmax, bbox_ymax, area, class_index}; + all_box_bbox_rects[pp].push_back(c); + } + + xptr++; + yptr++; + wptr++; + hptr++; + + box_score_ptr++; + } + } + } + + for (int i = 0; i < m_num_box; i++) + { + const std::vector& box_bbox_rects = all_box_bbox_rects[i]; + + all_bbox_rects.insert(all_bbox_rects.end(), box_bbox_rects.begin(), box_bbox_rects.end()); + } + } + + // global sort inplace + qsort_descent_inplace(all_bbox_rects); + + // apply nms + std::vector picked; + nms_sorted_bboxes(all_bbox_rects, picked, m_nms_threshold); + + // select + std::vector bbox_rects; + + for (unsigned int z : picked) + { + bbox_rects.push_back(all_bbox_rects[z]); + } + + // fill result + int num_detected = (int)(bbox_rects.size()); + if (num_detected == 0) + { + top_blobs[0].h = 0; + return 0; + } + + TMat& top_blob = top_blobs[0]; + + for (int i = 0; i < num_detected; i++) + { + const BBoxRect& r = bbox_rects[i]; + float score = r.score; + float* outptr = top_blob.row(i); + + outptr[0] = (float)r.label; // +1 for prepend background class + outptr[1] = score; + outptr[2] = r.xmin; + outptr[3] = r.ymin; + outptr[4] = r.xmax; + outptr[5] = r.ymax; + } + top_blob.h = num_detected; + + return 0; + } + +} // namespace yolo diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/sample_engine.cpp b/msp/sample/vin_ivps_engine_venc_rtsp/sample_engine.cpp new file mode 100644 index 0000000..31f5d2d --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/sample_engine.cpp @@ -0,0 +1,367 @@ +#include "sample_engine.h" + +#include "detection.hpp" + +#include "string.h" +#include "stdio.h" +#include "vector" +#include "fstream" + +#include "ax_engine_api.h" + +union ax_abgr_t +{ + unsigned char abgr[4]; + int iargb; + + ax_abgr_t() + { + iargb = 0; + } + + ax_abgr_t(unsigned char a, unsigned char b, unsigned char g, unsigned char r) + { + abgr[0] = 0; + abgr[1] = b; + abgr[2] = g; + abgr[3] = r; + } +}; + +static const std::vector COCO_COLORS_ARGB = { + {0, 255, 0, 255}, {128, 226, 255, 0}, {128, 0, 94, 255}, {128, 0, 37, 255}, {128, 0, 255, 94}, {128, 255, 226, 0}, {128, 0, 18, 255}, {128, 255, 151, 0}, {128, 170, 0, 255}, {128, 0, 255, 56}, {128, 255, 0, 75}, {128, 0, 75, 255}, {128, 0, 255, 169}, {128, 255, 0, 207}, {128, 75, 255, 0}, {128, 207, 0, 255}, {128, 37, 0, 255}, {128, 0, 207, 255}, {128, 94, 0, 255}, {128, 0, 255, 113}, {128, 255, 18, 0}, {128, 255, 0, 56}, {128, 18, 0, 255}, {128, 0, 255, 226}, {128, 170, 255, 0}, {128, 255, 0, 245}, {128, 151, 255, 0}, {128, 132, 255, 0}, {128, 75, 0, 255}, {128, 151, 0, 255}, {128, 0, 151, 255}, {128, 132, 0, 255}, {128, 0, 255, 245}, {128, 255, 132, 0}, {128, 226, 0, 255}, {128, 255, 37, 0}, {128, 207, 255, 0}, {128, 0, 255, 207}, {128, 94, 255, 0}, {128, 0, 226, 255}, {128, 56, 255, 0}, {128, 255, 94, 0}, {128, 255, 113, 0}, {128, 0, 132, 255}, {128, 255, 0, 132}, {128, 255, 170, 0}, {128, 255, 0, 188}, {128, 113, 255, 0}, {128, 245, 0, 255}, {128, 113, 0, 255}, {128, 255, 188, 0}, {128, 0, 113, 255}, {128, 255, 0, 0}, {128, 0, 56, 255}, {128, 255, 0, 113}, {128, 0, 255, 188}, {128, 255, 0, 94}, {128, 255, 0, 18}, {128, 18, 255, 0}, {128, 0, 255, 132}, {128, 0, 188, 255}, {128, 0, 245, 255}, {128, 0, 169, 255}, {128, 37, 255, 0}, {128, 255, 0, 151}, {128, 188, 0, 255}, {128, 0, 255, 37}, {128, 0, 255, 0}, {128, 255, 0, 170}, {128, 255, 0, 37}, {128, 255, 75, 0}, {128, 0, 0, 255}, {128, 255, 207, 0}, {128, 255, 0, 226}, {128, 255, 245, 0}, {128, 188, 255, 0}, {128, 0, 255, 18}, {128, 0, 255, 75}, {128, 0, 255, 151}, {128, 255, 56, 0}, {128, 245, 255, 0}}; + +static const char *CLASS_NAMES[] = { + "person", "bicycle", "car", "motorcycle", "airplane", "bus", "train", "truck", "boat", "traffic light", + "fire hydrant", "stop sign", "parking meter", "bench", "bird", "cat", "dog", "horse", "sheep", "cow", + "elephant", "bear", "zebra", "giraffe", "backpack", "umbrella", "handbag", "tie", "suitcase", "frisbee", + "skis", "snowboard", "sports ball", "kite", "baseball bat", "baseball glove", "skateboard", "surfboard", + "tennis racket", "bottle", "wine glass", "cup", "fork", "knife", "spoon", "bowl", "banana", "apple", + "sandwich", "orange", "broccoli", "carrot", "hot dog", "pizza", "donut", "cake", "chair", "couch", + "potted plant", "bed", "dining table", "toilet", "tv", "laptop", "mouse", "remote", "keyboard", "cell phone", + "microwave", "oven", "toaster", "sink", "refrigerator", "book", "clock", "vase", "scissors", "teddy bear", + "hair drier", "toothbrush"}; + +const float ANCHORS[18] = {10, 13, 16, 30, 33, 23, 30, 61, 62, 45, 59, 119, 116, 90, 156, 198, 373, 326}; + +const float PROB_THRESHOLD = 0.3f; +const float NMS_THRESHOLD = 0.45f; + +#define AX_CMM_ALIGN_SIZE 128 + +const char *AX_CMM_SESSION_NAME = "npu"; + +const std::vector WANT_CLASSES = {"person"}; + +typedef enum +{ + AX_ENGINE_ABST_DEFAULT = 0, + AX_ENGINE_ABST_CACHED = 1, +} AX_ENGINE_ALLOC_BUFFER_STRATEGY_T; + +typedef std::pair INPUT_OUTPUT_ALLOC_STRATEGY; + +static bool read_file(const std::string &path, std::vector &data) +{ + std::fstream fs(path, std::ios::in | std::ios::binary); + + if (!fs.is_open()) + { + return false; + } + + fs.seekg(std::ios::end); + auto fs_end = fs.tellg(); + fs.seekg(std::ios::beg); + auto fs_beg = fs.tellg(); + + auto file_size = static_cast(fs_end - fs_beg); + auto vector_size = data.size(); + + data.reserve(vector_size + file_size); + data.insert(data.end(), std::istreambuf_iterator(fs), std::istreambuf_iterator()); + + fs.close(); + + return true; +} + +static void free_io_index(AX_ENGINE_IO_BUFFER_T *io_buf, int index) +{ + for (int i = 0; i < index; ++i) + { + AX_ENGINE_IO_BUFFER_T *pBuf = io_buf + i; + AX_SYS_MemFree(pBuf->phyAddr, pBuf->pVirAddr); + } +} + +static void free_io(AX_ENGINE_IO_T *io) +{ + for (size_t j = 0; j < io->nInputSize; ++j) + { + AX_ENGINE_IO_BUFFER_T *pBuf = io->pInputs + j; + AX_SYS_MemFree(pBuf->phyAddr, pBuf->pVirAddr); + } + for (size_t j = 0; j < io->nOutputSize; ++j) + { + AX_ENGINE_IO_BUFFER_T *pBuf = io->pOutputs + j; + AX_SYS_MemFree(pBuf->phyAddr, pBuf->pVirAddr); + } + delete[] io->pInputs; + delete[] io->pOutputs; +} + +static inline int prepare_io(AX_ENGINE_IO_INFO_T *info, AX_ENGINE_IO_T *io_data, INPUT_OUTPUT_ALLOC_STRATEGY strategy) +{ + memset(io_data, 0, sizeof(*io_data)); + io_data->pInputs = new AX_ENGINE_IO_BUFFER_T[info->nInputSize]; + io_data->nInputSize = info->nInputSize; + + auto ret = 0; + for (AX_U32 i = 0; i < info->nInputSize; ++i) + { + auto meta = info->pInputs[i]; + auto buffer = &io_data->pInputs[i]; + if (strategy.first == AX_ENGINE_ABST_CACHED) + { + ret = AX_SYS_MemAllocCached((AX_U64 *)(&buffer->phyAddr), &buffer->pVirAddr, meta.nSize, AX_CMM_ALIGN_SIZE, (const AX_S8 *)(AX_CMM_SESSION_NAME)); + } + else + { + ret = AX_SYS_MemAlloc((AX_U64 *)(&buffer->phyAddr), &buffer->pVirAddr, meta.nSize, AX_CMM_ALIGN_SIZE, (const AX_S8 *)(AX_CMM_SESSION_NAME)); + } + + if (ret != 0) + { + free_io_index(io_data->pInputs, i); + fprintf(stderr, "Allocate input{%d} { phy: %p, vir: %p, size: %lu Bytes }. fail \n", i, (void *)buffer->phyAddr, buffer->pVirAddr, (long)meta.nSize); + return ret; + } + // fprintf(stderr, "Allocate input{%d} { phy: %p, vir: %p, size: %lu Bytes }. \n", i, (void*)buffer->phyAddr, buffer->pVirAddr, (long)meta.nSize); + } + + io_data->pOutputs = new AX_ENGINE_IO_BUFFER_T[info->nOutputSize]; + io_data->nOutputSize = info->nOutputSize; + for (AX_U32 i = 0; i < info->nOutputSize; ++i) + { + auto meta = info->pOutputs[i]; + auto buffer = &io_data->pOutputs[i]; + buffer->nSize = meta.nSize; + if (strategy.second == AX_ENGINE_ABST_CACHED) + { + ret = AX_SYS_MemAllocCached((AX_U64 *)(&buffer->phyAddr), &buffer->pVirAddr, meta.nSize, AX_CMM_ALIGN_SIZE, (const AX_S8 *)(AX_CMM_SESSION_NAME)); + } + else + { + ret = AX_SYS_MemAlloc((AX_U64 *)(&buffer->phyAddr), &buffer->pVirAddr, meta.nSize, AX_CMM_ALIGN_SIZE, (const AX_S8 *)(AX_CMM_SESSION_NAME)); + } + if (ret != 0) + { + fprintf(stderr, "Allocate output{%d} { phy: %p, vir: %p, size: %lu Bytes }. fail \n", i, (void *)buffer->phyAddr, buffer->pVirAddr, (long)meta.nSize); + free_io_index(io_data->pInputs, io_data->nInputSize); + free_io_index(io_data->pOutputs, i); + return ret; + } + // fprintf(stderr, "Allocate output{%d} { phy: %p, vir: %p, size: %lu Bytes }.\n", i, (void*)buffer->phyAddr, buffer->pVirAddr, (long)meta.nSize); + } + + return 0; +} + +static inline AX_S32 cache_io_flush(const AX_ENGINE_IO_BUFFER_T *io_buf) { + if (io_buf->phyAddr != 0) { + AX_SYS_MflushCache(io_buf->phyAddr, io_buf->pVirAddr, io_buf->nSize); + } + + return 0; +} + +static void post_process(AX_ENGINE_IO_INFO_T *io_info, AX_ENGINE_IO_T *io_data, std::vector &objects, const std::vector &want_classes) +{ + std::vector proposals; + float prob_threshold_u_sigmoid = -1.0f * (float)std::log((1.0f / PROB_THRESHOLD) - 1.0f); + for (uint32_t i = 0; i < io_info->nOutputSize; ++i) + { + auto &output = io_data->pOutputs[i]; + cache_io_flush(&output); + auto ptr = (float *)output.pVirAddr; + int32_t stride = (1 << i) * 8; + detection::generate_proposals_255(stride, ptr, PROB_THRESHOLD, proposals, INFER_WIDTH, INFER_HEIGHT, ANCHORS, prob_threshold_u_sigmoid); + } + + if (!want_classes.empty()) + { + for (auto iter = proposals.begin(); iter != proposals.end();) + { + bool found = false; + for (const auto &cls : want_classes) + { + if (CLASS_NAMES[iter->label] == cls) + { + found = true; + break; + } + } + if (!found) + iter = proposals.erase(iter); + else + iter++; + } + } + + detection::get_out_bbox(proposals, objects, NMS_THRESHOLD, INFER_HEIGHT, INFER_WIDTH, INFER_HEIGHT, INFER_WIDTH); +} + +struct ax_runner_ax650_handle_t +{ + AX_ENGINE_HANDLE handle; + AX_ENGINE_IO_INFO_T *io_info; + AX_ENGINE_IO_T io_data; + + int algo_width, algo_height; + int algo_colorformat; +}; + +static struct ax_runner_ax650_handle_t *m_handle = nullptr; + +AX_S32 SAMPLE_ENGINE_Load(AX_CHAR *model_file) +{ + if (m_handle) + { + return 0; + } + m_handle = new ax_runner_ax650_handle_t; + + // 1. init engine(vin has init) + // AX_ENGINE_NPU_ATTR_T npu_attr; + // memset(&npu_attr, 0, sizeof(npu_attr)); + // npu_attr.eHardMode = AX_ENGINE_VIRTUAL_NPU_DISABLE; + // auto ret = AX_ENGINE_Init(&npu_attr); + // if (0 != ret) + // { + // return ret; + // } + + // 2. load model + std::vector model_buffer; + if (!read_file(model_file, model_buffer)) + { + fprintf(stderr, "Read Run-Joint model(%s) file failed.\n", model_file); + return -1; + } + + // 3. create handle + + auto ret = AX_ENGINE_CreateHandle(&m_handle->handle, model_buffer.data(), model_buffer.size()); + if (0 != ret) + { + return ret; + } + // fprintf(stdout, "Engine creating handle is done.\n"); + + // 4. create context + ret = AX_ENGINE_CreateContext(m_handle->handle); + if (0 != ret) + { + return ret; + } + // fprintf(stdout, "Engine creating context is done.\n"); + + // 5. set io + + ret = AX_ENGINE_GetIOInfo(m_handle->handle, &m_handle->io_info); + if (0 != ret) + { + return ret; + } + // fprintf(stdout, "Engine get io info is done. \n"); + + // 6. alloc io + + ret = prepare_io(m_handle->io_info, &m_handle->io_data, std::make_pair(AX_ENGINE_ABST_DEFAULT, AX_ENGINE_ABST_CACHED)); + if (0 != ret) + { + return ret; + } + // fprintf(stdout, "Engine alloc io is done. \n"); + + m_handle->algo_width = m_handle->io_info->pInputs[0].pShape[2]; + + switch (m_handle->io_info->pInputs[0].pExtraMeta->eColorSpace) + { + case AX_ENGINE_CS_NV12: + m_handle->algo_colorformat = (int)AX_FORMAT_YUV420_SEMIPLANAR; + m_handle->algo_height = m_handle->io_info->pInputs[0].pShape[1] / 1.5; + // printf("NV12 MODEL\n"); + break; + case AX_ENGINE_CS_RGB: + m_handle->algo_colorformat = (int)AX_FORMAT_RGB888; + m_handle->algo_height = m_handle->io_info->pInputs[0].pShape[1]; + // printf("RGB MODEL\n"); + break; + case AX_ENGINE_CS_BGR: + m_handle->algo_colorformat = (int)AX_FORMAT_BGR888; + m_handle->algo_height = m_handle->io_info->pInputs[0].pShape[1]; + // printf("BGR MODEL\n"); + break; + default: + printf("now just only support NV12/RGB/BGR input format,you can modify by yourself"); + return -1; + } + + return ret; +} +AX_S32 SAMPLE_ENGINE_Release() +{ + if (m_handle && m_handle->handle) + { + free_io(&m_handle->io_data); + AX_ENGINE_DestroyHandle(m_handle->handle); + } + delete m_handle; + m_handle = nullptr; + return 0; +} + +AX_S32 SAMPLE_ENGINE_Inference(AX_VIDEO_FRAME_T *pFrame, SAMPLE_ENGINE_Results *pResults) +{ + unsigned char *dst = (unsigned char *)m_handle->io_data.pInputs[0].pVirAddr; + unsigned char *src = (unsigned char *)pFrame->u64VirAddr[0]; + + AX_U32 stride = (0 == pFrame->u32PicStride[0]) ? pFrame->u32Width : pFrame->u32PicStride[0]; + + if (stride == pFrame->u32Width) { + memcpy(dst, src, pFrame->u32Width * pFrame->u32Height * 3); + } + else { + for (size_t i = 0; i < pFrame->u32Height; i++) + { + memcpy(dst + i * pFrame->u32Width * 3, src + i * stride * 3, pFrame->u32Width * 3); + } + } + + AX_S32 ret = AX_ENGINE_RunSync(m_handle->handle, &m_handle->io_data); + if (ret) + { + fprintf(stderr, "AX_ENGINE_RunSync 0x%x\n", ret); + return -1; + } + std::vector objects; + post_process(m_handle->io_info, &m_handle->io_data, objects, WANT_CLASSES); + + pResults->obj_count = MIN(objects.size(), SAMPLE_ENGINE_OBJ_MAX_COUNT); + + for (AX_S32 i = 0; i < pResults->obj_count; i++) + { + pResults->objs[i].x = objects[i].rect.x; + pResults->objs[i].y = objects[i].rect.y; + pResults->objs[i].width = objects[i].rect.width; + pResults->objs[i].height = objects[i].rect.height; + pResults->objs[i].class_label = objects[i].label; + pResults->objs[i].prob = objects[i].prob; + pResults->objs[i].color = COCO_COLORS_ARGB[objects[i].label].iargb; + strcpy(pResults->objs->class_name, CLASS_NAMES[objects[i].label]); + } + + return 0; +} diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/sample_engine.h b/msp/sample/vin_ivps_engine_venc_rtsp/sample_engine.h new file mode 100644 index 0000000..a50188e --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/sample_engine.h @@ -0,0 +1,39 @@ +#ifndef _SAMPLE_ENGINE_H_ +#define _SAMPLE_ENGINE_H_ +#include "ax_sys_api.h" +#include "ax_ivps_api.h" + +#define SAMPLE_ENGINE_MODEL_FILE "/opt/data/npu/models/yolov5s.axmodel" +#define SAMPLE_ENGINE_OBJ_MAX_COUNT 32 +#define INFER_WIDTH 640 +#define INFER_HEIGHT 640 +#define INFER_FORMAT AX_FORMAT_RGB888 +#define INFER_CHN 3 + +#ifdef __cplusplus +extern "C" +{ +#endif + + typedef struct + { + struct + { + AX_S32 x, y, width, height; + AX_S32 class_label; + AX_F32 prob; + + AX_S32 color; + AX_CHAR class_name[32]; + } objs[SAMPLE_ENGINE_OBJ_MAX_COUNT]; + AX_S32 obj_count; + } SAMPLE_ENGINE_Results; + + AX_S32 SAMPLE_ENGINE_Load(AX_CHAR *model_file); + AX_S32 SAMPLE_ENGINE_Release(); + AX_S32 SAMPLE_ENGINE_Inference(AX_VIDEO_FRAME_T *pFrame, SAMPLE_ENGINE_Results *pResults); +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/sample_ivps_hal.c b/msp/sample/vin_ivps_engine_venc_rtsp/sample_ivps_hal.c new file mode 100644 index 0000000..700add8 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/sample_ivps_hal.c @@ -0,0 +1,403 @@ +/********************************************************************************** + * + * Copyright (c) 2019-2020 Beijing AXera Technology Co., Ltd. All Rights Reserved. + * + * This source file is the property of Beijing AXera Technology Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Beijing AXera Technology Co., Ltd. + * + **********************************************************************************/ +#include "sample_utils.h" + +AX_IVPS_TDP_CFG_T gSampleTdpCfg = { + .bMirror = AX_FALSE, + .bFlip = AX_FALSE, + .eRotation = AX_IVPS_ROTATION_0, +}; + +AX_IVPS_GDC_CFG_T gSampleGdcCfg = { + .eRotation = AX_IVPS_ROTATION_0, +}; + +SAMPLE_GRP_T gSampleGrp = { + .nIvpsGrp = 1, + .pFilePath = ".", + .tGrpAttr = { + .ePipeline = AX_IVPS_PIPELINE_DEFAULT, + }, + .tPipelineAttr = { + + .nOutChnNum = 4, + .nOutFifoDepth = {2, 2, 2, 2, 1}, + .tFilter = { + {}, + { + /* channel 0 filter0 */ + { + .bEngage = AX_TRUE, + .eEngine = AX_IVPS_ENGINE_TDP, + .bCrop = AX_FALSE, + .tCompressInfo = { + .enCompressMode = AX_COMPRESS_MODE_NONE, + .u32CompressLevel = 4, + }, + .tCropRect = { + .nX = 0, + .nY = 0, + .nW = 0, + .nH = 0, + }, + .nDstPicWidth = 2688, + .nDstPicHeight = 1520, + .nDstPicStride = 2688, + .eDstPicFormat = AX_FORMAT_YUV420_SEMIPLANAR, + /*.tAspectRatio = {.eMode = IVPS_ASPECT_RATIO_MANUAL, .tRect = {64, 20, 500, 500}},*/ + .tAspectRatio = {.eMode = AX_IVPS_ASPECT_RATIO_STRETCH, .eAligns = {AX_IVPS_ASPECT_RATIO_HORIZONTAL_CENTER, AX_IVPS_ASPECT_RATIO_VERTICAL_CENTER}}, + }, + }, + { + /* channel 1 filter0 */ + { + .bEngage = AX_TRUE, + .eEngine = AX_IVPS_ENGINE_TDP, + .bCrop = AX_FALSE, + .tCompressInfo = { + .enCompressMode = AX_COMPRESS_MODE_NONE, + .u32CompressLevel = 4, + }, + .tCropRect = { + .nX = 0, + .nY = 0, + .nW = 0, + .nH = 0, + }, + .nDstPicWidth = 1920, + .nDstPicHeight = 1080, + .nDstPicStride = 1920, + .eDstPicFormat = AX_FORMAT_YUV420_SEMIPLANAR, + }, + }, + { + /* channel 2 filter0 */ + { + .bEngage = AX_TRUE, + .eEngine = AX_IVPS_ENGINE_TDP, + .bCrop = AX_FALSE, + .tCompressInfo = { + .enCompressMode = AX_COMPRESS_MODE_NONE, + .u32CompressLevel = 4, + }, + .tCropRect = { + .nX = 0, + .nY = 0, + .nW = 0, + .nH = 0, + }, + .nDstPicWidth = 720, + .nDstPicHeight = 576, + .nDstPicStride = 720, + .eDstPicFormat = AX_FORMAT_YUV420_SEMIPLANAR, + }, + }, + { + /* channel 3 filter0 */ + { + .bEngage = AX_TRUE, + .eEngine = AX_IVPS_ENGINE_TDP, + .bCrop = AX_FALSE, + .tCompressInfo = { + .enCompressMode = AX_COMPRESS_MODE_NONE, + .u32CompressLevel = 4, + }, + .tCropRect = { + .nX = 0, + .nY = 0, + .nW = 0, + .nH = 0, + }, + .nDstPicWidth = INFER_WIDTH, + .nDstPicHeight = INFER_HEIGHT, + .nDstPicStride = INFER_WIDTH, + .eDstPicFormat = INFER_FORMAT, + }, + }, + }, + }, +}; + +static AX_VOID *IVPS_SendFrameThread(AX_VOID *pArg) +{ + AX_S32 ret = 0, i = 0; + AX_S32 nStreamIdx = 0; + + SAMPLE_GRP_T *pThis = (SAMPLE_GRP_T *)pArg; + + ALOGI("+++ IVPS Grp: %d", pThis->nIvpsGrp); + + while (!ThreadLoopStateGet()) + { + pThis->tFrameInput.u64SeqNum++; + pThis->tFrameInput.u64PTS = GetTickCount(); + printf("AX_IVPS_SendFrame(nChnNum: %d) seq num:%lld PTS:%lld userdata: %llx +++\n", + pThis->tPipelineAttr.nOutChnNum, pThis->tFrameInput.u64SeqNum, + pThis->tFrameInput.u64PTS, pThis->tFrameInput.u64UserData); + + ret = AX_IVPS_SendFrame(pThis->nIvpsGrp, &pThis->tFrameInput, -1); + + usleep(40000); + ALOGI("AX_IVPS_SendFrame(Chn: %d) ---, ret: 0x%x", pThis->arrOutChns[i].nIvpsChn, ret); + if (IVPS_SUCC != ret) + { + ALOGE("AX_IVPS_SendFrame(Chn %d) failed, ret=0x%x.", pThis->arrOutChns[i].nIvpsChn, ret); + continue; + } + } + return (AX_VOID *)0; +} + +void visualize_infer_result(IVPS_RGN_HANDLE handle, SAMPLE_ENGINE_Results *objects, float aspect_w, float aspect_h) +{ + int obj_num = objects->obj_count; + + AX_IVPS_RGN_DISP_GROUP_T *rgn_grp = (AX_IVPS_RGN_DISP_GROUP_T *)malloc(sizeof(AX_IVPS_RGN_DISP_GROUP_T)); + memset(rgn_grp, 0, sizeof(AX_IVPS_RGN_DISP_GROUP_T)); + + rgn_grp->nNum = obj_num; + rgn_grp->tChnAttr.nZindex = 0; + rgn_grp->tChnAttr.bSingleCanvas = AX_TRUE; + rgn_grp->tChnAttr.nAlpha = 255; + rgn_grp->tChnAttr.eFormat = AX_FORMAT_RGBA8888; + AX_IVPS_RGN_DISP_T *disp = rgn_grp->arrDisp; + + for (int i = 0; i < (obj_num < AX_IVPS_REGION_MAX_DISP_NUM ? obj_num : AX_IVPS_REGION_MAX_DISP_NUM); i++) + { + disp[i].bShow = AX_TRUE; + disp[i].eType = AX_IVPS_RGN_TYPE_RECT; + disp[i].uDisp.tPolygon.tRect.nX = (int)(objects->objs[i].x * aspect_w); + disp[i].uDisp.tPolygon.tRect.nY = (int)(objects->objs[i].y * aspect_h); + disp[i].uDisp.tPolygon.tRect.nW = (int)(objects->objs[i].width * aspect_w); + disp[i].uDisp.tPolygon.tRect.nH = (int)(objects->objs[i].height * aspect_h); + if (disp[i].uDisp.tPolygon.tRect.nW == 0 || disp[i].uDisp.tPolygon.tRect.nH == 0) + { + disp[i].bShow = AX_FALSE; + } + // printf("x y w h: %d %d %d %d\n", disp[i].uDisp.tPolygon.tRect.nX, disp[i].uDisp.tPolygon.tRect.nY, disp[i].uDisp.tPolygon.tRect.nW, disp[i].uDisp.tPolygon.tRect.nH); + disp[i].uDisp.tPolygon.nLineWidth = 3; + disp[i].uDisp.tPolygon.bSolid = AX_FALSE; + // disp[i].uDisp.tPolygon.bCornerRect = AX_FALSE; + disp[i].uDisp.tPolygon.nAlpha = 255; + disp[i].uDisp.tPolygon.nColor = objects->objs[i].color; + } + + int ret = AX_IVPS_RGN_Update(handle, rgn_grp); + if (ret != 0) + { + printf("AX_IVPS_RGN_Update failed. ret=0x%x\n", ret); + } + + free(rgn_grp); +} + +static AX_VOID *IVPS_GetFrameThread(AX_VOID *pArg) +{ + AX_S32 ret = 0; + SAMPLE_GRP_T *pThis = (SAMPLE_GRP_T *)pArg; + AX_VIDEO_FRAME_T engine_input_frame; + IVPS_GRP nGrp = pThis->nIvpsGrp; + AX_IVPS_PIPELINE_ATTR_T stPipelineAttr; + ret = AX_IVPS_GetPipelineAttr(nGrp, &stPipelineAttr); + if (ret != 0) + { + printf("AX_IVPS_GetPipelineAttr failed. ret=0x%x\n", ret); + return (AX_VOID *)0; + } + + int chn_num = stPipelineAttr.nOutChnNum - 1; + const int infer_chn = INFER_CHN; + + IVPS_RGN_HANDLE *rgn_handles = (IVPS_RGN_HANDLE *)malloc(sizeof(IVPS_RGN_HANDLE) * chn_num); + float *aspect_w = (float *)malloc(sizeof(float) * chn_num); + float *aspect_h = (float *)malloc(sizeof(float) * chn_num); + for (int i = 0; i < chn_num; i++) + { + rgn_handles[i] = AX_IVPS_RGN_Create(); + ret = AX_IVPS_RGN_AttachToFilter(rgn_handles[i], nGrp, ((i + 1) << 4)); + if (ret != 0) + { + printf("AX_IVPS_RGN_AttachToFilter filter=%d failed. ret=%d\n", i + 1, ret); + AX_IVPS_RGN_Destroy(rgn_handles[i]); + free(rgn_handles); + free(aspect_w); + free(aspect_h); + return (AX_VOID *)0; + } + + aspect_w[i] = stPipelineAttr.tFilter[i + 1][0].nDstPicWidth * 1.0f / INFER_WIDTH; + aspect_h[i] = stPipelineAttr.tFilter[i + 1][0].nDstPicHeight * 1.0f / INFER_HEIGHT; + + // printf("aspect ratio[%d]: %f %f\n", i, aspect_w[i], aspect_h[i]); + } + + while (!ThreadLoopStateGet()) + { + // Get infer_chn frame + memset(&engine_input_frame, 0, sizeof(AX_VIDEO_FRAME_T)); + ret = AX_IVPS_GetChnFrame(nGrp, infer_chn, &engine_input_frame, 200); + if (ret != 0) + { + printf("AX_IVPS_GetChnFrame(Grp:%d Chn:%d) failed, ret=0x%x.\n", nGrp, infer_chn, ret); + continue; + } + + // inference + engine_input_frame.u64VirAddr[0] = (AX_U64)AX_POOL_GetBlockVirAddr(engine_input_frame.u32BlkId[0]); + engine_input_frame.u64PhyAddr[0] = AX_POOL_Handle2PhysAddr(engine_input_frame.u32BlkId[0]); + + SAMPLE_ENGINE_Results stResults; + stResults.obj_count = 0; + ret = SAMPLE_ENGINE_Inference(&engine_input_frame, &stResults); + if (ret != 0) + { + printf("inference failed, ret=%d.\n", ret); + } + // if (stResults.obj_count > 0) + // printf("Detected %d object(s)\n", stResults.obj_count); + + // draw frame + for (int i = 0; i < chn_num; i++) + visualize_infer_result(rgn_handles[i], &stResults, aspect_w[i], aspect_h[i]); + + ret = AX_IVPS_ReleaseChnFrame(nGrp, infer_chn, &engine_input_frame); + if (ret != 0) + { + printf("AX_IVPS_ReleaseChnFrame(Grp:%d Chn:%d) failed, ret=0x%x.\n", nGrp, infer_chn, ret); + } + } + + for (int i = 0; i < chn_num; i++) + { + ret = AX_IVPS_RGN_DetachFromFilter(rgn_handles[i], nGrp, ((i + 1) << 4)); + if (ret != 0) + { + printf("AX_IVPS_RGN_DetachFromFilter failed, ret=0x%x.\n", ret); + } + + ret = AX_IVPS_RGN_Destroy(rgn_handles[i]); + if (ret != 0) + { + printf("AX_IVPS_RGN_Destroy chn:%d failed, ret=0x%x.\n", i, ret); + } + } + + free(rgn_handles); + free(aspect_w); + free(aspect_h); + + return (AX_VOID *)0; +} + +/* + * SAMPLE_IVPS_ThreadStart() + * IVPS frame send and get can be done separately in different threads. + */ +AX_S32 SAMPLE_IVPS_ThreadStart(SAMPLE_GRP_T *src) +{ + pthread_t tid = 0; + if (src) + { + if (0 != pthread_create(&tid, NULL, IVPS_GetFrameThread, (AX_VOID*)src)) + { + return -1; + } + pthread_detach(tid); + } + return 0; +} + +AX_S32 SAMPLE_IVPS_StartGrp(SAMPLE_GRP_T *p) +{ + int ret = 0; + + if (p->tPipelineAttr.tFilter[1][0].eEngine == AX_IVPS_ENGINE_TDP) + memcpy(&p->tPipelineAttr.tFilter[1][0].tTdpCfg, &gSampleTdpCfg, sizeof(AX_IVPS_TDP_CFG_T)); + else + memcpy(&p->tPipelineAttr.tFilter[1][0].tGdcCfg, &gSampleGdcCfg, sizeof(AX_IVPS_GDC_CFG_T)); + + if (p->tPipelineAttr.tFilter[2][0].eEngine == AX_IVPS_ENGINE_TDP) + memcpy(&p->tPipelineAttr.tFilter[2][0].tTdpCfg, &gSampleTdpCfg, sizeof(AX_IVPS_TDP_CFG_T)); + else + memcpy(&p->tPipelineAttr.tFilter[2][0].tGdcCfg, &gSampleGdcCfg, sizeof(AX_IVPS_GDC_CFG_T)); + + if (p->tPipelineAttr.tFilter[3][0].eEngine == AX_IVPS_ENGINE_TDP) + memcpy(&p->tPipelineAttr.tFilter[3][0].tTdpCfg, &gSampleTdpCfg, sizeof(AX_IVPS_TDP_CFG_T)); + else + memcpy(&p->tPipelineAttr.tFilter[3][0].tGdcCfg, &gSampleGdcCfg, sizeof(AX_IVPS_GDC_CFG_T)); + + if (p->tPipelineAttr.tFilter[4][0].eEngine == AX_IVPS_ENGINE_TDP) + memcpy(&p->tPipelineAttr.tFilter[4][0].tTdpCfg, &gSampleTdpCfg, sizeof(AX_IVPS_TDP_CFG_T)); + else + memcpy(&p->tPipelineAttr.tFilter[4][0].tGdcCfg, &gSampleGdcCfg, sizeof(AX_IVPS_GDC_CFG_T)); + + ret = AX_IVPS_CreateGrp(p->nIvpsGrp, &p->tGrpAttr); + if (IVPS_SUCC != ret) + { + ALOGE("AX_IVPS_CreateGrp(Grp: %d) failed, ret=0x%x.", p->nIvpsGrp, ret); + return -1; + } + ret = AX_IVPS_SetPipelineAttr(p->nIvpsGrp, &p->tPipelineAttr); + if (IVPS_SUCC != ret) + { + ALOGE("AX_IVPS_SetPipelineAttr(Grp: %d) failed, ret=0x%x.", p->nIvpsGrp, ret); + return -1; + } + + printf("nOutChnNum :%d\n", p->tPipelineAttr.nOutChnNum); + for (IVPS_CHN chn = 0; chn < p->tPipelineAttr.nOutChnNum; chn++) + { + ret = AX_IVPS_EnableChn(p->nIvpsGrp, chn); + if (IVPS_SUCC != ret) + { + ALOGE("AX_IVPS_EnableChn(Chn: %d) failed, ret=0x%x.", chn, ret); + return -1; + } + } + + ret = AX_IVPS_StartGrp(p->nIvpsGrp); + if (IVPS_SUCC != ret) + { + ALOGE("AX_IVPS_StartGrp(Grp: %d) failed, ret=0x%x.", p->nIvpsGrp, ret); + return -1; + } + + return 0; +} + +AX_S32 SAMPLE_IVPS_StopGrp(const SAMPLE_GRP_T *p) +{ + AX_S32 ret = IVPS_SUCC; + + ret = AX_IVPS_StopGrp(p->nIvpsGrp); + if (IVPS_SUCC != ret) + { + ALOGE("AX_IVPS_StopGrp(Grp: %d) failed(this grp is not started) ret=0x%x.", p->nIvpsGrp, ret); + return -1; + } + + for (IVPS_CHN chn = 0; chn < p->tPipelineAttr.nOutChnNum; ++chn) + { + ret = AX_IVPS_DisableChn(p->nIvpsGrp, chn); + if (IVPS_SUCC != ret) + { + ALOGE("AX_IVPS_DestoryChn(Chn: %d) failed, ret=0x%x.", chn, ret); + return -1; + } + } + ret = AX_IVPS_DestoryGrp(p->nIvpsGrp); + if (IVPS_SUCC != ret) + { + ALOGE("AX_IVPS_DestoryGrp(Grp: %d) failed, ret=0x%x.", p->nIvpsGrp, ret); + return -1; + } + + return 0; +} \ No newline at end of file diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/sample_ivps_hal.h b/msp/sample/vin_ivps_engine_venc_rtsp/sample_ivps_hal.h new file mode 100644 index 0000000..8193368 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/sample_ivps_hal.h @@ -0,0 +1,47 @@ +/********************************************************************************** + * + * Copyright (c) 2019-2020 Beijing AXera Technology Co., Ltd. All Rights Reserved. + * + * This source file is the property of Beijing AXera Technology Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Beijing AXera Technology Co., Ltd. + * + **********************************************************************************/ +#ifndef _SAMPLE_IVPS_HAL_H_ +#define _SAMPLE_IVPS_HAL_H_ +#include "ax_sys_api.h" +#include "ax_ivps_api.h" +#include "AXRtspWrapper.h" + +typedef struct +{ + AX_S32 nEfd; + IVPS_GRP nIvpsGrp; + AX_VIDEO_FRAME_T tFrameInput; + AX_IVPS_GRP_ATTR_T tGrpAttr; + AX_S32 nIvpsRepeatNum; + AX_S32 nIvpsStreamNum; + AX_U64 nPhyAddr[2]; + AX_U8 *pVirAddr[2]; + AX_BLK BlkId0; + AX_BLK BlkId1; + char *pFilePath; + char *pFileName; + AX_IVPS_PIPELINE_ATTR_T tPipelineAttr; + + struct + { + AX_S32 nFd; + AX_BOOL bEmpty; + IVPS_CHN nIvpsChn; + } arrOutChns[5]; + AX_RTSP_HANDLE pRtspObj; + AX_U8 nFrameDump; /* 1: venc dump */ +} SAMPLE_GRP_T; +extern SAMPLE_GRP_T gSampleGrp; + +AX_S32 SAMPLE_IVPS_StartGrp(SAMPLE_GRP_T *p); +AX_S32 SAMPLE_IVPS_StopGrp(const SAMPLE_GRP_T *p); +AX_S32 SAMPLE_IVPS_ThreadStart(SAMPLE_GRP_T *src); + +#endif /* _SAMPLE_IVPS_HAL_H_ */ diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/sample_utils.c b/msp/sample/vin_ivps_engine_venc_rtsp/sample_utils.c new file mode 100644 index 0000000..84f0949 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/sample_utils.c @@ -0,0 +1,822 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include "sample_utils.h" + +#define IVPS_BUF_POOL_MEM_SIZE (0x100000 * 40) // 40M + +/***********************************************************************************/ +/* SYSTEM */ +/***********************************************************************************/ + +AX_U64 GetTickCount(AX_VOID) +{ + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (ts.tv_sec * 1000000 + ts.tv_nsec / 1000); +} + +/***********************************************************************************/ +/* EPOLL */ +/***********************************************************************************/ + +AX_S32 DevEfdCreate(AX_U32 nNum) +{ + int efd = epoll_create(nNum); + if (efd < 0) + { + ALOGE("failed to create epoll"); + return -1; + } + + ALOGI("+++ efd:%d\n", efd); + return efd; +} +AX_S32 DevEfdRelease(AX_U32 nEfd) +{ + ALOGI("--- efd:%d\n", nEfd); + + close(nEfd); + return 0; +} + +AX_S32 DevFdRelease(AX_U32 nFd) +{ + ALOGI("--- fd:%d\n", nFd); + + close(nFd); + return 0; +} + +AX_S32 DevFdListen(AX_S32 nEfd, AX_S32 nFd) +{ + struct epoll_event event; + + event.data.fd = nFd; + event.events = EPOLLET | EPOLLIN; + epoll_ctl(nEfd, EPOLL_CTL_ADD, nFd, &event); + + ALOGI("+++ efd:%d fd :%d\n", nEfd, nFd); + return 0; +} + +AX_S32 DevPolWait(AX_S32 nEfd, AX_U32 nNum, AX_S32 nMs) +{ + int i, events_num = 0; + struct epoll_event events[nNum]; + + events_num = epoll_wait(nEfd, events, nNum, nMs); //-1: block + ALOGI("poll events_num %d num:%d\n", events_num, nNum); + + for (i = 0; i < events_num; i++) + { + if (events[i].data.fd < 0) + { + ALOGE("fd invalid errno:%d\n", errno); + continue; + } + else if ((events[i].events & EPOLLERR) || + (events[i].events & EPOLLHUP) || (!(events[i].events & EPOLLIN))) + { + ALOGE("epoll error\n"); + epoll_ctl(nEfd, EPOLL_CTL_DEL, events[i].data.fd, NULL); + continue; + } + } + return events_num; +} + +/***********************************************************************************/ +/* Buffer Pool */ +/***********************************************************************************/ +typedef struct +{ + AX_BOOL bActive; + AX_POOL PoolId; +} SAMPLE_POOL_T; + +static SAMPLE_POOL_T tBufPool[100]; +static AX_U32 BufPoolCnt = 0; + +AX_S32 SAMPLE_PoolFloorInit(SAMPLE_BLK_T *pBlkInfo, AX_U32 nNum) +{ + AX_S32 ret, i; + AX_POOL_FLOORPLAN_T PoolFloorPlan; + + if (nNum > 16) + { + ALOGE("VB num should be smaller than 16"); + return -1; + } + ret = AX_SYS_Init(); + if (0 != ret) + { + ALOGE("AX_SYS_Init FAILED! ret:0x%x", ret); + return ret; + } + ret = AX_POOL_Exit(); + if (ret) + { + ALOGE("fail!!Error Code:0x%X\n", ret); + return ret; + } + memset(&PoolFloorPlan, 0, sizeof(AX_POOL_FLOORPLAN_T)); + + for (i = 0; i < nNum; i++) + { + PoolFloorPlan.CommPool[i].MetaSize = 512; + PoolFloorPlan.CommPool[i].BlkSize = pBlkInfo->nSize; + PoolFloorPlan.CommPool[i].BlkCnt = pBlkInfo->nCnt; + PoolFloorPlan.CommPool[i].CacheMode = POOL_CACHE_MODE_NONCACHE; + + memset(PoolFloorPlan.CommPool[i].PartitionName, 0, sizeof(PoolFloorPlan.CommPool[i].PartitionName)); + strcpy((char *)PoolFloorPlan.CommPool[i].PartitionName, "anonymous"); + pBlkInfo++; + } + + ret = AX_POOL_SetConfig(&PoolFloorPlan); + if (ret) + { + ALOGE("fail!Error Code:0x%X", ret); + return ret; + } + + ret = AX_POOL_Init(); + if (ret) + { + ALOGE("fail!!Error Code:0x%X", ret); + return ret; + } + + ALOGI("success!"); + return 0; +} + +static AX_POOL BufPoolCreate(AX_U32 nBlkSize, AX_U32 nBlkCnt) +{ + AX_POOL PoolId; + AX_POOL_CONFIG_T PoolConfig; + + /* create user_pool_0 :blocksize=1000,metasize=512,block count =2 ,noncache type */ + memset(&PoolConfig, 0, sizeof(AX_POOL_CONFIG_T)); + PoolConfig.MetaSize = 512; + PoolConfig.BlkSize = nBlkSize; + PoolConfig.BlkCnt = nBlkCnt; + PoolConfig.CacheMode = POOL_CACHE_MODE_NONCACHE; + memset(PoolConfig.PartitionName, 0, sizeof(PoolConfig.PartitionName)); + strcpy((char *)PoolConfig.PartitionName, "anonymous"); + + PoolId = AX_POOL_CreatePool(&PoolConfig); + + if (AX_INVALID_POOLID == PoolId) + { + ALOGE("error!!!"); + return AX_INVALID_POOLID; + } + + ALOGI("success PoolId:%d", PoolId); + return PoolId; +} + +AX_S32 BufCreate(AX_POOL *PoolId, AX_U32 nBlkSize, AX_U32 nBlkCnt) +{ + int ret; + + if ((*PoolId = BufPoolCreate(nBlkSize, nBlkCnt)) == AX_INVALID_POOLID) + { + goto ERROR; + } + ALOGI("PoolId:%x", *PoolId); + tBufPool[BufPoolCnt].PoolId = *PoolId; + tBufPool[BufPoolCnt].bActive = AX_TRUE; + BufPoolCnt++; + + return 0; + +ERROR: + ALOGE("sample_pool test fail!"); + ret = AX_POOL_Exit(); + if (ret) + { + ALOGE("fail!!Error Code:0x%X", ret); + return -1; + } + ALOGI("success!\n"); + return -1; +} + +AX_S32 BufDestroy(AX_POOL PoolId) +{ + int ret; + + ret = AX_POOL_DestroyPool(PoolId); + if (ret) + { + ALOGE("fail!!Error Code:0x%X", ret); + return -1; + } + ALOGI("success pool id:%d!", PoolId); + + return 0; +} + +AX_S32 BufDestroyAll(AX_VOID) +{ + int i, ret; + for (i = BufPoolCnt - 1; i >= 0; i--) + { + + ret = AX_POOL_DestroyPool(tBufPool[i].PoolId); + if (ret) + { + ALOGE("fail!!Error Code:0x%X", ret); + return -1; + } + tBufPool[BufPoolCnt].bActive = AX_FALSE; + ALOGI("success pool id:%d!", tBufPool[i].PoolId); + } + return 0; +} + +AX_S32 BufPoolBlockAddrGet(AX_POOL PoolId, AX_U32 BlkSize, AX_U64 *nPhyAddr, AX_VOID **pVirAddr, AX_BLK *BlkId) +{ + + *BlkId = AX_POOL_GetBlock(PoolId, BlkSize, NULL); + + *nPhyAddr = AX_POOL_Handle2PhysAddr(*BlkId); + + if (!(*nPhyAddr)) + { + ALOGE("fail!"); + return -1; + } + + ALOGI("success (Blockid:0x%X --> PhyAddr=0x%llx)", *BlkId, *nPhyAddr); + + *pVirAddr = AX_POOL_GetBlockVirAddr(*BlkId); + + if (!(*pVirAddr)) + { + ALOGE("fail!"); + return -1; + } + + ALOGI("success blockVirAddr=0x%p", *pVirAddr); + return 0; +} + +/***********************************************************************************/ +/* Image File */ +/***********************************************************************************/ + +static AX_BOOL Split(char *pSrc, const char *pDelim, char **ppDst, AX_S32 nDstCnt, AX_S32 *pNum) +{ + + if (!pSrc || 0 == strlen(pSrc) || 0 == nDstCnt || !pDelim || 0 == strlen(pDelim)) + { + ALOGE("Invalid para"); + return AX_FALSE; + } + + AX_S32 nCount = 0; + char *pToken = strtok(pSrc, pDelim); + while (NULL != pToken) + { + if (++nCount > nDstCnt) + { + ALOGE("nCount overflow"); + return AX_FALSE; + } + + *ppDst++ = pToken; + pToken = strtok(NULL, pDelim); + } + if (pNum) + { + *pNum = nCount; + } + + return AX_TRUE; +} + +char *FilePathExtract(char *pFile) +{ + int len, i; + len = strlen(pFile); + for (i = len - 1; i >= 0; i--) + { + if (pFile[i] == '/') + { + pFile[i] = '\0'; + break; + } + } + ALOGI("Path= %s", pFile); + return pFile; +} + +AX_U32 CalcImgSize(AX_U32 nStride, AX_U32 nW, AX_U32 nH, AX_IMG_FORMAT_E eType, AX_U32 nAlign) +{ + AX_U32 nBpp = 0; + if (nW == 0 || nH == 0) + { + ALOGE("Invalid width %d or height %d!", nW, nH); + return 0; + } + + if (0 == nStride) + { + nStride = (0 == nAlign) ? nW : ALIGN_UP(nW, nAlign); + } + else + { + if (nAlign > 0) + { + if (nStride % nAlign) + { + ALOGE("stride: %u not %u aligned.!", nStride, nAlign); + return 0; + } + } + } + + switch (eType) + { + case AX_FORMAT_YUV400: + nBpp = 8; + break; + case AX_FORMAT_YUV420_PLANAR: + case AX_FORMAT_YUV420_SEMIPLANAR: + case AX_FORMAT_YUV420_SEMIPLANAR_VU: + nBpp = 12; + break; + case AX_FORMAT_YUV422_INTERLEAVED_YUYV: + case AX_FORMAT_YUV422_INTERLEAVED_UYVY: + case AX_FORMAT_RGB565: + case AX_FORMAT_BGR565: + nBpp = 16; + break; + case AX_FORMAT_YUV444_PACKED: + case AX_FORMAT_RGB888: + case AX_FORMAT_BGR888: + nBpp = 24; + break; + case AX_FORMAT_RGBA8888: + case AX_FORMAT_ARGB8888: + nBpp = 32; + break; + default: + nBpp = 0; + break; + } + + return nStride * nH * nBpp / 8; +} + +/* Load image file and alloc memory */ +AX_BOOL LoadImage(const char *pszImge, AX_U32 pImgSize, AX_U64 *pPhyAddr, AX_VOID **ppVirAddr) +{ + AX_S32 ret; + FILE *fp = fopen(pszImge, "rb"); + if (fp) + { + fseek(fp, 0, SEEK_END); + AX_U32 nFileSize = ftell(fp); + if (pImgSize > 0 && pImgSize != nFileSize) + { + ALOGE("file size not right, %d != %d", pImgSize, nFileSize); + fclose(fp); + return AX_FALSE; + } + fseek(fp, 0, SEEK_SET); + if (!nFileSize) + { + ALOGE("%s nFileSize is 0 !!", pszImge); + return AX_FALSE; + } + ret = AX_SYS_MemAlloc((AX_U64 *)pPhyAddr, ppVirAddr, nFileSize, SAMPLE_PHY_MEM_ALIGN_SIZE, NULL); + if (0 != ret) + { + ALOGE("AX_SYS_MemAlloc fail, ret=0x%x", ret); + fclose(fp); + return AX_FALSE; + } + if (fread(*ppVirAddr, 1, nFileSize, fp) != nFileSize) + { + ALOGE("fread fail, %s", strerror(errno)); + fclose(fp); + return AX_FALSE; + } + fclose(fp); + + return AX_TRUE; + } + else + { + ALOGE("fopen %s fail, %s", pszImge, strerror(errno)); + return AX_FALSE; + } +} + +static AX_BOOL LoadImageExt(AX_POOL PoolId, const char *pszImge, AX_U32 nOffset, AX_S32 nImgSize, + AX_BLK *BlkId, AX_BOOL isYUVSplit, AX_U64 *nPhyAddr, AX_VOID **pVirAddr) +{ + AX_S32 ret; + AX_BLK *BlkIdTmp; + FILE *fp = fopen(pszImge, "rb"); + if (!fp) + { + ALOGE("fopen %s fail, %s", pszImge, strerror(errno)); + return AX_FALSE; + } + if (nImgSize <= 0) + { + fseek(fp, 0, SEEK_END); + nImgSize = ftell(fp); + if (nImgSize <= 0) + { + ALOGE("file size not right, %d", nImgSize); + fclose(fp); + return AX_FALSE; + } + } + fseek(fp, nOffset, SEEK_SET); + + if (isYUVSplit) + { + nImgSize = nImgSize / 3; + ret = BufPoolBlockAddrGet(PoolId, nImgSize * 2, nPhyAddr, pVirAddr, BlkId); + if (0 != ret) + { + ALOGE("BufPoolBlockAddrGet fail, ret=0x%x", ret); + fclose(fp); + return AX_FALSE; + } + if (fread(*pVirAddr, nImgSize, 2, fp) != 2) + { + ALOGE("fread fail, %s", strerror(errno)); + ret = AX_POOL_ReleaseBlock(*BlkId); + if (ret) + { + ALOGE("IVPS Release BlkId fail, ret=0x%x", ret); + } + fclose(fp); + return AX_FALSE; + } + + fseek(fp, nImgSize * 2, SEEK_SET); + nPhyAddr++; + pVirAddr += sizeof(pVirAddr) / 2; + BlkIdTmp = BlkId; + BlkId++; + ret = BufPoolBlockAddrGet(PoolId, nImgSize, nPhyAddr, pVirAddr, BlkId); + if (0 != ret) + { + ALOGE("BufPoolBlockAddrGet fail, ret=0x%x", ret); + ret = AX_POOL_ReleaseBlock(*BlkIdTmp); + if (ret) + { + ALOGE("IVPS Release BlkId fail, ret=0x%x", ret); + } + fclose(fp); + return AX_FALSE; + } + if (fread(*pVirAddr, nImgSize, 1, fp) != 1) + { + ALOGE("fread fail, %s", strerror(errno)); + ret = AX_POOL_ReleaseBlock(*BlkIdTmp); + if (ret) + { + ALOGE("IVPS Release BlkId fail, ret=0x%x", ret); + } + ret = AX_POOL_ReleaseBlock(*BlkId); + if (ret) + { + ALOGE("IVPS Release BlkId fail, ret=0x%x", ret); + } + fclose(fp); + return AX_FALSE; + } + fclose(fp); + return AX_TRUE; + } + + ret = BufPoolBlockAddrGet(PoolId, nImgSize, nPhyAddr, pVirAddr, BlkId); + if (0 != ret) + { + ALOGE("BufPoolBlockAddrGet UV fail, ret=0x%x", ret); + fclose(fp); + return AX_FALSE; + } + if (fread(*pVirAddr, nImgSize, 1, fp) != 1) + { + ALOGE("fread fail, %s", strerror(errno)); + ret = AX_POOL_ReleaseBlock(*BlkId); + if (ret) + { + ALOGE("IVPS Release BlkId fail, ret=0x%x", ret); + } + fclose(fp); + return AX_FALSE; + } + fclose(fp); + + return AX_TRUE; +} + +AX_VOID SaveFile(AX_VIDEO_FRAME_T *tDstFrame, AX_S32 nGrpIdx, AX_S32 nChnIdx, + char *pFilePath, char *pFileName) +{ + AX_U32 nPixelSize; + AX_S32 s32Ret1 = 0; + AX_S32 s32Ret2 = 0; + AX_S32 s32Ret3 = 0; + AX_U8 nStoragePlanarNum = 0; + char szOutImgFile[128] = {0}; + + nPixelSize = (AX_U32)tDstFrame->u32PicStride[0] * tDstFrame->u32Height; + + switch (tDstFrame->enImgFormat) + { + case AX_FORMAT_YUV420_PLANAR: + case AX_FORMAT_YUV420_SEMIPLANAR: + case AX_FORMAT_YUV420_SEMIPLANAR_VU: + nStoragePlanarNum = 2; + break; + case AX_FORMAT_YUV422_INTERLEAVED_YUYV: + case AX_FORMAT_YUV422_INTERLEAVED_UYVY: + nStoragePlanarNum = 3; + break; + case AX_FORMAT_YUV444_PACKED: + case AX_FORMAT_RGB888: + case AX_FORMAT_BGR888: + case AX_FORMAT_RGB565: + case AX_FORMAT_BGR565: + nStoragePlanarNum = 1; + break; + case AX_FORMAT_RGBA8888: + nStoragePlanarNum = 1; + break; + default: + ALOGE("not support fromat %d", tDstFrame->enImgFormat); + return; + break; + } + + printf("SaveFileExt nPixelSize: %d u32FrameSize: %d Height:%d Width:%d PhyAddrY:%llx PhyAddrUV:%llx Format:%d\n", + nPixelSize, tDstFrame->u32FrameSize, tDstFrame->u32Height, tDstFrame->u32Width, + tDstFrame->u64PhyAddr[0], tDstFrame->u64PhyAddr[1], tDstFrame->enImgFormat); + + sprintf(szOutImgFile, "%s/%s_grp%d_chn%d_%dx%d.fmt_%d", pFilePath, pFileName, + nGrpIdx, nChnIdx, tDstFrame->u32PicStride[0], tDstFrame->u32Height, tDstFrame->enImgFormat); + + FILE *fp = fopen(szOutImgFile, "wb"); + + if (!fp) + { + ALOGE("ERROR Fail to open file:%s!", szOutImgFile); + return; + } + + printf(" Saving file(%s)!\n", szOutImgFile); + if (tDstFrame->u32FrameSize) + { + tDstFrame->u64VirAddr[0] = (AX_ULONG)AX_SYS_Mmap(tDstFrame->u64PhyAddr[0], tDstFrame->u32FrameSize); + fwrite((AX_VOID *)((AX_ULONG)tDstFrame->u64VirAddr[0]), 1, tDstFrame->u32FrameSize, fp); + s32Ret1 = AX_SYS_Munmap((AX_VOID *)(AX_ULONG)tDstFrame->u64VirAddr[0], tDstFrame->u32FrameSize); + } + else + { + switch (nStoragePlanarNum) + { + case 2: + if (!tDstFrame->u64PhyAddr[1]) + { + tDstFrame->u64PhyAddr[1] = tDstFrame->u64PhyAddr[0] + tDstFrame->u32PicStride[0] * tDstFrame->u32Height; + } + tDstFrame->u64VirAddr[0] = (AX_ULONG)AX_SYS_Mmap(tDstFrame->u64PhyAddr[0], nPixelSize); + tDstFrame->u64VirAddr[1] = (AX_ULONG)AX_SYS_Mmap(tDstFrame->u64PhyAddr[1], nPixelSize / 2); + fwrite((AX_VOID *)((AX_ULONG)tDstFrame->u64VirAddr[0]), 1, nPixelSize, fp); + fwrite((AX_VOID *)((AX_ULONG)tDstFrame->u64VirAddr[1]), 1, nPixelSize / 2, fp); + s32Ret1 = AX_SYS_Munmap((AX_VOID *)(AX_ULONG)tDstFrame->u64VirAddr[0], nPixelSize); + s32Ret1 = AX_SYS_Munmap((AX_VOID *)(AX_ULONG)tDstFrame->u64VirAddr[1], nPixelSize / 2); + break; + case 3: + tDstFrame->u64VirAddr[0] = (AX_ULONG)AX_SYS_Mmap(tDstFrame->u64PhyAddr[0], nPixelSize); + tDstFrame->u64VirAddr[1] = (AX_ULONG)AX_SYS_Mmap(tDstFrame->u64PhyAddr[1], nPixelSize / 2); + tDstFrame->u64VirAddr[2] = (AX_ULONG)AX_SYS_Mmap(tDstFrame->u64PhyAddr[2], nPixelSize / 2); + fwrite((AX_VOID *)((AX_ULONG)tDstFrame->u64VirAddr[0]), 1, nPixelSize, fp); + fwrite((AX_VOID *)((AX_ULONG)tDstFrame->u64VirAddr[1]), 1, nPixelSize / 2, fp); + fwrite((AX_VOID *)((AX_ULONG)tDstFrame->u64VirAddr[2]), 1, nPixelSize / 2, fp); + s32Ret1 = AX_SYS_Munmap((AX_VOID *)(AX_ULONG)tDstFrame->u64VirAddr[0], nPixelSize); + s32Ret2 = AX_SYS_Munmap((AX_VOID *)(AX_ULONG)tDstFrame->u64VirAddr[1], nPixelSize / 2); + s32Ret3 = AX_SYS_Munmap((AX_VOID *)(AX_ULONG)tDstFrame->u64VirAddr[2], nPixelSize / 2); + break; + default: + tDstFrame->u64VirAddr[0] = (AX_ULONG)AX_SYS_Mmap(tDstFrame->u64PhyAddr[0], nPixelSize * 3); + fwrite((AX_VOID *)((AX_ULONG)tDstFrame->u64VirAddr[0]), 1, nPixelSize * 3, fp); + s32Ret1 = AX_SYS_Munmap((AX_VOID *)(AX_ULONG)tDstFrame->u64VirAddr[0], nPixelSize * 3); + break; + } + } + + fclose(fp); + printf("%s:%d File save success!!\n", __func__, __LINE__); + + if (s32Ret1 || s32Ret2 || s32Ret3) + { + printf("AX_SYS_Munmap s32Ret1=0x%x ,s32Ret2=0x%x ,s32Ret2=0x%x\n", s32Ret1, s32Ret2, s32Ret3); + } +} + +AX_VOID SaveFileExt(AX_VIDEO_FRAME_INFO_T *tDstFrame, AX_S32 nGrpIdx, AX_S32 nChnIdx, char *pFilePath) +{ + SaveFile(&tDstFrame->stVFrame, nGrpIdx, nChnIdx, pFilePath, "Ext"); +} + +/***********************************************************************************/ +/* Image File */ +/***********************************************************************************/ + +static int ImgInfoParse(SAMPLE_IMAGE_INFO_T *tImage, char *pArg) +{ + char *end, *p = NULL; + + if (pArg && strlen(pArg) > 0) + { + char *ppToken[4] = {NULL}; + AX_S32 nNum = 0; + if (!Split(pArg, "@", ppToken, 4, &nNum)) + { + ALOGE("error! para is not right!"); + return -1; + } + else + { + if (nNum == 1) + { + p = ppToken[0]; + } + else if (nNum == 4) + { + tImage->pImgFile = ppToken[0]; + tImage->tImage.eFormat = atoi(ppToken[1]); + p = ppToken[2]; + + tImage->tImage.nStride = strtoul(p, &end, 10); + if (*end != 'x') + return -1; + p = end + 1; + tImage->tImage.nH = strtoul(p, &end, 10); + p = ppToken[3]; + } + } + } + tImage->tRect.nW = strtoul(p, &end, 10); + if (*end != 'x') + return -1; + p = end + 1; + tImage->tRect.nH = strtoul(p, &end, 10); + + if (*end == '+' || *end == '-') + { + p = end + 1; + tImage->tRect.nX = strtol(p, &end, 10); + if (*end != '+' && *end != '-') + return -1; + p = end + 1; + tImage->tRect.nY = strtol(p, &end, 10); + } + else + { + tImage->tRect.nX = 0; + tImage->tRect.nY = 0; + } + + if (*end == '*') + { + p = end + 1; + tImage->nAlpha = strtoul(p, &end, 10); + } + else + { + tImage->nAlpha = 255; + } + + if (*end == '%') + { + p = end + 1; + tImage->eBlkSize = strtoul(p, &end, 10); + } + else + { + tImage->eBlkSize = 1; + } + + if (*end == ':') + { + p = end + 1; + tImage->nColor = strtoul(p, &end, 16); + } + else + { + tImage->nColor = 0x808080; + } + + if (*end == '-') + { + p = end + 1; + tImage->nLineW = strtoul(p, &end, 10); + } + else + { + tImage->nLineW = 1; + } + + if (*end == '#') + { + p = end + 1; + tImage->nChn = strtoul(p, &end, 10); + } + else + { + tImage->nChn = 0; + } + + ALOGI("path:%s,format:%d, stride:%d (w:%d, h:%d, x:%d, y:%d) alpha:%d\n", + tImage->pImgFile, tImage->tImage.eFormat, tImage->tImage.nStride, + tImage->tRect.nW, tImage->tRect.nH, tImage->tRect.nX, + tImage->tRect.nY, tImage->nAlpha); + + ALOGI("blksize:%d, color:%x, line:%d, chn:%d\n", + tImage->eBlkSize, tImage->nColor, tImage->nLineW, tImage->nChn); + + ALOGI("image parse end nPhyAddr:%x\n", tImage->tImage.nPhyAddr); + return 0; +} + +char *FrameInfoGet(char *optArg, AX_VIDEO_FRAME_T *ptFrame) +{ + SAMPLE_IMAGE_INFO_T tImage = {0}; + + ImgInfoParse(&tImage, optArg); + + ptFrame->s16CropX = tImage.tRect.nX; + ptFrame->s16CropY = tImage.tRect.nY; + ptFrame->s16CropWidth = tImage.tRect.nW; + ptFrame->s16CropHeight = tImage.tRect.nH; + ptFrame->enImgFormat = tImage.tImage.eFormat; + ptFrame->u32PicStride[0] = tImage.tImage.nStride; + ptFrame->u32Width = tImage.tImage.nStride; + ptFrame->u32Height = tImage.tImage.nH; + + ptFrame->u32FrameSize = CalcImgSize(ptFrame->u32PicStride[0], ptFrame->u32Width, + ptFrame->u32Height, ptFrame->enImgFormat, 0); + + ALOGI("ptFrame Width,:%d Height:%d", ptFrame->u32Width, ptFrame->u32Height); + ALOGI("CROP: X0:%d Y0:%d Width:%d Height:%d", ptFrame->s16CropX, ptFrame->s16CropY, + ptFrame->s16CropWidth, ptFrame->s16CropHeight); + + ptFrame->u64PTS = 0x2020; + ptFrame->u64SeqNum = 0; + + return tImage.pImgFile; +} + +AX_S32 FrameBufGet(AX_S32 nFrameIdx, AX_VIDEO_FRAME_T *ptImage, char *pImgFile) +{ + + if (!pImgFile) + { + ALOGE("pImgFile is NULL!"); + return -1; + } + + if (!LoadImageExt(-1, pImgFile, nFrameIdx * ptImage->u32FrameSize, ptImage->u32FrameSize, &ptImage->u32BlkId[0], + AX_FALSE, &ptImage->u64PhyAddr[0], (AX_VOID **)&ptImage->u64VirAddr[0])) + { + ALOGE("LoadImageExt error!"); + return -1; + } + ALOGI("VirAddr:0x%x VirAddr_UV:0x%x", (AX_U32)ptImage->u64VirAddr[0], (AX_U32)ptImage->u64VirAddr[1]); + + return 0; +} + +static volatile AX_BOOL bThreadLoopExit; + +AX_VOID ThreadLoopStateSet(AX_BOOL bValue) +{ + bThreadLoopExit = bValue; +} + +AX_BOOL ThreadLoopStateGet(AX_VOID) +{ + return bThreadLoopExit; +} \ No newline at end of file diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/sample_utils.h b/msp/sample/vin_ivps_engine_venc_rtsp/sample_utils.h new file mode 100644 index 0000000..fb046cc --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/sample_utils.h @@ -0,0 +1,120 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#ifndef _SAMPLE_UTILS_H_ +#define _SAMPLE_UTILS_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "AXRtspWrapper.h" +#include "ax_ivps_api.h" +#include "ax_sys_api.h" +#include "sample_ivps_hal.h" +#include "sample_venc_hal.h" +#include "sample_vin_hal.h" +#include "sample_engine.h" + +/* #define __SAMPLE_LOG_EN__ */ + +#ifdef __SAMPLE_LOG_EN__ +#define ALOGD(fmt, ...) \ + printf("\033[1;30;37mDEBUG :[%s:%d] " fmt "\033[0m\n", __func__, __LINE__, ##__VA_ARGS__) // white +#define ALOGI(fmt, ...) \ + printf("\033[1;30;32mINFO :[%s:%d] " fmt "\033[0m\n", __func__, __LINE__, ##__VA_ARGS__) // green +#else +#define ALOGD(fmt, ...) \ + do { \ + } while (0) +#define ALOGI(fmt, ...) \ + do { \ + } while (0) +#endif +#define ALOGW(fmt, ...) \ + printf("\033[1;30;33mWARN :[%s:%d] " fmt "\033[0m\n", __func__, __LINE__, ##__VA_ARGS__) // yellow +#define ALOGE(fmt, ...) \ + printf("\033[1;30;31mERROR :[%s:%d] " fmt "\033[0m\n", __func__, __LINE__, ##__VA_ARGS__) // red +#define ALOGN(fmt, ...) \ + printf("\033[1;30;37mINFO :[%s:%d] " fmt "\033[0m\n", __func__, __LINE__, ##__VA_ARGS__) // white + +#define SAMPLE_PHY_MEM_ALIGN_SIZE (16) + +#define ARRAY_SIZE(array) sizeof(array) / sizeof(array[0]) +#define ALIGN_UP(x, align) (((x) + ((align)-1)) & ~((align)-1)) +#define DIV_ROUND_UP(n, d) (((n) + (d)-1) / (d)) + +#define SAMPLE_MIN_DELTAPTS_NUM (30) + +typedef struct +{ + AX_U16 nW; + AX_U16 nH; + AX_U32 nStride; + AX_IMG_FORMAT_E eFormat; + AX_U32 nPhyAddr; + AX_VOID *pVirAddr; + AX_POOL PoolId; + AX_BLK BlkId; +} SAMPLE_IMAGE_T; + +typedef struct +{ + char *pImgFile; + SAMPLE_IMAGE_T tImage; + AX_IVPS_RECT_T tRect; + + AX_U32 nAlpha; + AX_U32 nChn; + AX_U32 nColor; /* for rectangle */ + AX_U32 nLineW; /* for rectangle */ + AX_IVPS_MOSAIC_BLK_SIZE_E eBlkSize; +} SAMPLE_IMAGE_INFO_T; + +typedef struct +{ + AX_U32 nSize; + AX_U32 nCnt; +} SAMPLE_BLK_T; + +typedef enum +{ + SAMPLE_CASE_NONE = -1, + SAMPLE_CASE_OS08A20_VIN_IVPS_ENGINE_VENC_RTSP_E = 0, + SAMPLE_CASE_BUTT +} SAMPLE_CASE_E; + +typedef struct +{ + SAMPLE_CASE_E eSampleCase; + COMMON_VIN_MODE_E eSysMode; + AX_SNS_HDR_MODE_E eHdrMode; + AX_BOOL bAiispEnable; + AX_S32 nVencDump; + AX_CHAR *pFrameInfo; + AX_U32 statDeltaPtsFrmNum; + AX_BOOL bVencSelect; +} SAMPLE_PARAM_T; + +AX_U64 GetTickCount(AX_VOID); +AX_S32 SAMPLE_PoolFloorInit(SAMPLE_BLK_T *pBlkInfo, AX_U32 nNum); +AX_VOID ThreadLoopStateSet(AX_BOOL bValue); +AX_BOOL ThreadLoopStateGet(AX_VOID); +AX_U32 CalcImgSize(AX_U32 nStride, AX_U32 nW, AX_U32 nH, AX_IMG_FORMAT_E eType, AX_U32 nAlign); +char *FrameInfoGet(char *optArg, AX_VIDEO_FRAME_T *ptFrame); +AX_S32 FrameBufGet(AX_S32 nFrameIdx, AX_VIDEO_FRAME_T *ptImage, char *pImgFile); +#endif diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/sample_venc_hal.c b/msp/sample/vin_ivps_engine_venc_rtsp/sample_venc_hal.c new file mode 100644 index 0000000..41f64e0 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/sample_venc_hal.c @@ -0,0 +1,357 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include "ax_sys_api.h" +#include "ax_venc_api.h" +#include "common_venc.h" +#include "sample_utils.h" + +AX_S32 gVencLoopExit; +extern AX_RTSP_HANDLE g_pRtspHandle; + +static SAMPLE_VENC_GETSTREAM_PARA_T gstStrmParam[MAX_VENC_CHN_NUM]; +AX_VENC_MOD_ATTR_T stModAttr = { + .enVencType = AX_VENC_MULTI_ENCODER, + .stModThdAttr.u32TotalThreadNum = 1, + .stModThdAttr.bExplicitSched = AX_FALSE, +}; + +SAMPLE_DELTA_PTS_INFO_T gSampleDeltaPts[64]; + +static AX_VOID SAMPLE_SetDefaultVencParams(SAMPLE_VENC_CMD_PARA_T *pstPara, AX_U16 width, AX_U16 height) +{ + pstPara->output = "stream.h264"; + + pstPara->picW = width; + pstPara->picH = height; + pstPara->maxPicW = width; + pstPara->maxPicH = height; + pstPara->rcMode = SAMPLE_RC_CBR; + pstPara->chnNum = 1; + pstPara->srcFrameRate = 30; + pstPara->dstFrameRate = 30; + + pstPara->gopLen = 30; + pstPara->virILen = pstPara->gopLen / 2; + pstPara->bitRate = 2000; + pstPara->qpMin = 22; + pstPara->qpMax = 51; + pstPara->qpMinI = 10; + pstPara->qpMaxI = 51; + pstPara->bLinkMode = AX_TRUE; + pstPara->maxIprop = 60; + pstPara->minIprop = 10; + pstPara->inFifoDep = 4; + pstPara->outFifoDep = 4; +} + +static AX_VOID SAMPLE_GetStreamInit(VENC_CHN VeChn, AX_PAYLOAD_TYPE_E enType, SAMPLE_VENC_GETSTREAM_PARA_T *pstArg) +{ + pstArg->bGetStrmStart = AX_TRUE; + pstArg->enType = enType; + pstArg->syncType = 100; /* 100ms */ + pstArg->VeChn = VeChn; +} + +static AX_S32 SAMPLE_VencStreamSave(SAMPLE_VENC_GETSTREAM_PARA_T *pstArg, AX_U64 totalStream, FILE *pFile, + AX_VENC_STREAM_T *pstStream) +{ + if ((NULL == pstArg) || (NULL == pstStream)) { + ALOGE("pstStream or pstArg is NULL!"); + return -1; + } + if (NULL == pFile) { + ALOGE("chn-%d: pFile is NULL!", pstArg->VeChn); + return -2; + } + printf("Venc Stream Save, SeqNum:%lld gopMode:%d temporalID:%d\n", pstStream->stPack.u64SeqNum, pstArg->gopMode, + pstArg->temporalID); + if (pstArg->gopMode != AX_VENC_GOPMODE_SVC_T) { + fwrite(pstStream->stPack.pu8Addr, 1, pstStream->stPack.u32Len, pFile); + } else { + if (((0 == pstArg->temporalID) && (0 == pstStream->stPack.u32TemporalID)) || + ((1 == pstArg->temporalID) && + ((0 == pstStream->stPack.u32TemporalID) || (1 == pstStream->stPack.u32TemporalID))) || + ((2 == pstArg->temporalID) && + ((0 == pstStream->stPack.u32TemporalID) || (1 == pstStream->stPack.u32TemporalID) || + (2 == pstStream->stPack.u32TemporalID)))) + fwrite(pstStream->stPack.pu8Addr, 1, pstStream->stPack.u32Len, pFile); + } + fflush(pFile); + return 0; +} + +extern void *AXRtspServerObj; +extern SAMPLE_PARAM_T gSampleParam; + +static AX_VOID SAMPLE_DeltaPtsStatistic(AX_S32 Chn, AX_VENC_STREAM_T *pstStream) +{ + if (gSampleParam.statDeltaPtsFrmNum < SAMPLE_MIN_DELTAPTS_NUM) + return; + + static bool bPrint = AX_TRUE; + + SAMPLE_DELTA_PTS_INFO_T *pstDeltaPts = &gSampleDeltaPts[Chn]; + AX_U64 currPts = 0, inPts = 0, deltaPts = 0, seqNum = 0, avgDeltaPts = 0; + AX_SYS_GetCurPTS(&currPts); + + inPts = pstStream->stPack.u64PTS; + seqNum = pstStream->stPack.u64SeqNum; + deltaPts = currPts - inPts; + + if (pstDeltaPts->totalGetStrmNum >= gSampleParam.statDeltaPtsFrmNum) { + if (!bPrint) + return; + + avgDeltaPts = pstDeltaPts->totalDeltaPts - pstDeltaPts->maxDeltaPts - pstDeltaPts->minDeltaPts; + ALOGW("chn-%d: totalNum=%llu, minDeltaPts=%llu, maxDeltaPts=%llu, avgDeltaPts=%llu(us).\n", Chn, + pstDeltaPts->totalGetStrmNum, pstDeltaPts->minDeltaPts, pstDeltaPts->maxDeltaPts, + avgDeltaPts / (pstDeltaPts->totalGetStrmNum - 2)); /* not include min,max delta pts */ + + bPrint = AX_FALSE; + + return; + } + + if (inPts > 0 && deltaPts > 0) { + if (deltaPts > pstDeltaPts->maxDeltaPts) + pstDeltaPts->maxDeltaPts = deltaPts; + + if (0 == pstDeltaPts->totalGetStrmNum) + pstDeltaPts->minDeltaPts = deltaPts; + + if (deltaPts < pstDeltaPts->minDeltaPts) + pstDeltaPts->minDeltaPts = deltaPts; + + pstDeltaPts->totalDeltaPts += deltaPts; + pstDeltaPts->totalGetStrmNum++; + + } else { + ALOGE("chn-%d: invalid inPts=%llu, seqNum=%llu, currPts=%llu.\n", Chn, inPts, seqNum, currPts); + return; + } + + return; +} + +static AX_VOID *SAMPLE_VencGetStreamProc(AX_VOID *arg) +{ + AX_S32 s32Ret = -1; + AX_VENC_STREAM_T stStream; + FILE *pStrm = NULL; + AX_U64 totalGetStream = 0; + SAMPLE_VENC_GETSTREAM_PARA_T *pstArg = (SAMPLE_VENC_GETSTREAM_PARA_T *)arg; + VENC_CHN VeChn = pstArg->VeChn; + AX_S32 testId = pstArg->testId; + AX_PAYLOAD_TYPE_E enType = pstArg->enType; + const char *pPath = gSampleGrp.pFilePath; + AX_CHAR esName[50]; + + memset(&stStream, 0, sizeof(stStream)); + memset(esName, 0, 50); + + if (gSampleGrp.nFrameDump == 1) { + if (pPath == NULL) { + ALOGE("File save path is NULL!"); + return NULL; + } + + if (PT_H264 == enType) + sprintf(esName, "%s/ivps_venc_chn%d_ut%d.264", pPath, VeChn, testId); + else if (PT_H265 == enType) + sprintf(esName, "%s/ivps_venc_chn%d_ut%d.265", pPath, VeChn, testId); + else if (PT_MJPEG == enType) + sprintf(esName, "%s/ivps_venc_chn%d_ut%d.mjpg", pPath, VeChn, testId); + else if (PT_JPEG == enType) + sprintf(esName, "%s/ivps_venc_chn%d_ut%d.jpg", pPath, VeChn, testId); + + pStrm = fopen(esName, "wb"); + if (NULL == pStrm) { + ALOGE("chn-%d: Open output file error!", VeChn); + return NULL; + } + } + while (pstArg->bGetStrmStart && !ThreadLoopStateGet()) { + s32Ret = AX_VENC_GetStream(VeChn, &stStream, -1); /* 100ms */ + if (0 != s32Ret) { + ALOGE("CHN[%d] AX_VENC_GetStream failed! continue GetStream", VeChn); + continue; + } + + SAMPLE_DeltaPtsStatistic(VeChn, &stStream); + + if (gSampleGrp.nFrameDump == 1) { + s32Ret = SAMPLE_VencStreamSave(pstArg, totalGetStream, pStrm, &stStream); + if (0 != s32Ret) + ALOGE("CHN[%d] SAMPLE_VencStreamSave error", VeChn); + } + totalGetStream++; + + /* Send to RTSP */ + AX_BOOL bIFrame = (AX_VENC_INTRA_FRAME == stStream.stPack.enCodingType) ? AX_TRUE : AX_FALSE; + AX_Rtsp_SendNalu(gSampleGrp.pRtspObj, VeChn, stStream.stPack.pu8Addr, stStream.stPack.u32Len, + stStream.stPack.u64PTS, bIFrame); + + ALOGI("CHN[%d] Get stream success, addr=%p, len=%u, codeType=%d. seqNum %lld pts %lld\n", VeChn, + stStream.stPack.pu8Addr, stStream.stPack.u32Len, stStream.stPack.enCodingType, stStream.stPack.u64SeqNum, + stStream.stPack.u64PTS); + + s32Ret = AX_VENC_ReleaseStream(VeChn, &stStream); + if (0 != s32Ret) { + ALOGE("CHN[%d] AX_VENC_ReleaseStream failed!", VeChn); + goto EXIT; + } + } +EXIT: + if (pStrm != NULL) { + fclose(pStrm); + pStrm = NULL; + } + + ALOGI("CHN[%d] Total get %llu encoded frames. getStream Exit!", VeChn, totalGetStream); + return (void *)(intptr_t)s32Ret; +} + +static AX_S32 SAMPLE_VencStartGetStream(SAMPLE_VENC_GETSTREAM_PARA_T *pstArg) +{ + AX_S32 s32Ret; + + s32Ret = pthread_create(&pstArg->getStrmPid, 0, SAMPLE_VencGetStreamProc, (AX_VOID *)pstArg); + + return s32Ret; +} + +static AX_S32 SAMPLE_VencInit(AX_S32 nChnIdx, AX_U16 width, AX_U16 height, AX_MOD_ID_E enModId) +{ + AX_S32 s32Ret = AX_SUCCESS; + AX_PAYLOAD_TYPE_E enType = (AX_ID_VENC == enModId ? PT_H264 : PT_JPEG); + SAMPLE_VENC_RC_E enRcMode = 0; + SAMPLE_VENC_CMD_PARA_T stCmdPara; + + memset(&stCmdPara, 0x0, sizeof(SAMPLE_VENC_CMD_PARA_T)); + SAMPLE_SetDefaultVencParams(&stCmdPara, width, height); + enRcMode = stCmdPara.rcMode; + + s32Ret = COMMON_VENC_Start(nChnIdx, enType, enRcMode, &stCmdPara); + if (AX_SUCCESS != s32Ret) { + ALOGE("chn-%d: COMMON_VENC_Start failed", nChnIdx); + s32Ret = -1; + goto FREE; + } + + SAMPLE_GetStreamInit(nChnIdx, enType, &gstStrmParam[nChnIdx]); + s32Ret = SAMPLE_VencStartGetStream(&gstStrmParam[nChnIdx]); + if (AX_SUCCESS != s32Ret) { + ALOGE("chn-%d: COMMON_VENC_StartGetStream err", nChnIdx); + s32Ret = -1; + goto FREE; + } + + return s32Ret; + +FREE: + COMMON_VENC_StopGetStream(&gstStrmParam[nChnIdx]); + COMMON_VENC_Stop(nChnIdx); + + return s32Ret; +} + +static AX_S32 SAMPLE_VencDeinit(AX_S32 nChnIdx) +{ + AX_S32 s32Ret = AX_SUCCESS; + + COMMON_VENC_StopGetStream(&gstStrmParam[nChnIdx]); + COMMON_VENC_Stop(nChnIdx); + + return s32Ret; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Sample for IVPS -> VENC. + @param pGrp IVPS group information. + @param bVencMode True: the output is video frame. false the output is JPEG. + @return 0 if Ok, anything else otherwise. + */ +/*--------------------------------------------------------------------------*/ +AX_S32 SAMPLE_Ivps2VencInit(SAMPLE_GRP_T *pGrp, AX_BOOL bVencMode) +{ + AX_S32 ret, chn_idx; + AX_U32 nWidth = 0, nHeight = 0; + AX_MOD_INFO_T tSrcMod = {0}, tDstMod = {0}; + AX_MOD_ID_E dstModId = AX_ID_BUTT; + + ret = AX_VENC_Init(&stModAttr); + if (AX_SUCCESS != ret) { + ALOGE("AX_VENC_Init error"); + } + + for (chn_idx = 0; chn_idx < pGrp->tPipelineAttr.nOutChnNum - 1; chn_idx++) { + if (pGrp->tPipelineAttr.tFilter[chn_idx + 1][1].bEngage) { + nWidth = pGrp->tPipelineAttr.tFilter[chn_idx + 1][1].nDstPicWidth; + nHeight = pGrp->tPipelineAttr.tFilter[chn_idx + 1][1].nDstPicHeight; + } else if (pGrp->tPipelineAttr.tFilter[chn_idx + 1][0].bEngage) { + nWidth = pGrp->tPipelineAttr.tFilter[chn_idx + 1][0].nDstPicWidth; + nHeight = pGrp->tPipelineAttr.tFilter[chn_idx + 1][0].nDstPicHeight; + } else { + ALOGE("IVPS module is Bypass!"); + return -1; + } + printf("VENC nWidth:%d nHeight:%d\n", nWidth, nHeight); + dstModId = bVencMode ? AX_ID_VENC : AX_ID_JENC; + tSrcMod.enModId = AX_ID_IVPS; + tSrcMod.s32GrpId = pGrp->nIvpsGrp; + tSrcMod.s32ChnId = chn_idx; + + tDstMod.enModId = dstModId; + tDstMod.s32GrpId = 0; + tDstMod.s32ChnId = chn_idx; /* the chn id of VENC is fix to 0 */ + ret = AX_SYS_Link(&tSrcMod, &tDstMod); + if (0 != ret) { + ALOGE("AX_SYS_Link err. ret:%d. src: modId %d grpId %d chnId %d. dst: modId %d grpId %d chnId %d", ret, + tSrcMod.enModId, tSrcMod.s32GrpId, tSrcMod.s32ChnId, tDstMod.enModId, tDstMod.s32GrpId, tDstMod.s32ChnId); + return ret; + } + + ret = SAMPLE_VencInit(tDstMod.s32ChnId, nWidth, nHeight, dstModId); + if (0 != ret) { + ALOGE("SAMPLE_VencInit failed, ret:0x%x", ret); + return ret; + } + } + return 0; +} + +AX_S32 SAMPLE_Ivps2VencDeinit(SAMPLE_GRP_T *pGrp, AX_BOOL bVencMode) +{ + AX_S32 chn_idx; + AX_MOD_INFO_T tSrcMod = {0}, tDstMod = {0}; + AX_MOD_ID_E dstModId = AX_ID_BUTT; + + for (chn_idx = 0; chn_idx < pGrp->tPipelineAttr.nOutChnNum - 1; chn_idx++) { + dstModId = bVencMode ? AX_ID_VENC : AX_ID_JENC; + tSrcMod.enModId = AX_ID_IVPS; + tSrcMod.s32GrpId = pGrp->nIvpsGrp; + tSrcMod.s32ChnId = chn_idx; + tDstMod.enModId = dstModId; + tDstMod.s32GrpId = 0; + tDstMod.s32ChnId = chn_idx; /* the chn id of VENC is fix to 0 */ + + SAMPLE_VencDeinit(tDstMod.s32ChnId); + AX_SYS_UnLink(&tSrcMod, &tDstMod); + } + + AX_S32 s32Ret = AX_VENC_Deinit(); + if (AX_SUCCESS != s32Ret) { + ALOGE("AX_VENC_Deinit failed! Error Code:0x%X", s32Ret); + return -1; + } + return 0; +} \ No newline at end of file diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/sample_venc_hal.h b/msp/sample/vin_ivps_engine_venc_rtsp/sample_venc_hal.h new file mode 100644 index 0000000..26d04d4 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/sample_venc_hal.h @@ -0,0 +1,25 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#ifndef _SAMPLE_VENC_HAL_H_ +#define _SAMPLE_VENC_HAL_H_ + +typedef struct +{ + AX_U64 totalGetStrmNum; + AX_U64 maxDeltaPts; + AX_U64 minDeltaPts; + AX_U64 totalDeltaPts; +} SAMPLE_DELTA_PTS_INFO_T; + +AX_S32 SAMPLE_Ivps2VencInit(SAMPLE_GRP_T *pGrp, AX_BOOL bVencMode); +AX_S32 SAMPLE_Ivps2VencDeinit(SAMPLE_GRP_T *pGrp, AX_BOOL bVencMode); + +#endif /* _SAMPLE_IVPS_HAL_H_ */ \ No newline at end of file diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/sample_vin_hal.c b/msp/sample/vin_ivps_engine_venc_rtsp/sample_vin_hal.c new file mode 100644 index 0000000..c9c411c --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/sample_vin_hal.c @@ -0,0 +1,248 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ + +#include +#include +#include +#include +#include +#include + +#include "ax_isp_api.h" +#include "ax_vin_error_code.h" +#include "sample_vin_hal.h" + +static AX_CAMERA_T gCams[MAX_CAMERAS] = {0}; +COMMON_SYS_ARGS_T gCommonArgs = {0}; + +static AX_VOID cal_dump_pool(COMMON_SYS_POOL_CFG_T pool[], AX_SNS_HDR_MODE_E eHdrMode, AX_S32 nFrameNum) +{ + if (NULL == pool) { + return; + } + if (nFrameNum > 0) { + switch (eHdrMode) { + case AX_SNS_LINEAR_MODE: + pool[0].nBlkCnt += nFrameNum; + break; + + case AX_SNS_HDR_2X_MODE: + pool[0].nBlkCnt += nFrameNum * 2; + break; + + case AX_SNS_HDR_3X_MODE: + pool[0].nBlkCnt += nFrameNum * 3; + break; + + case AX_SNS_HDR_4X_MODE: + pool[0].nBlkCnt += nFrameNum * 4; + break; + + default: + pool[0].nBlkCnt += nFrameNum; + break; + } + } +} + +static AX_VOID set_pipe_hdr_mode(AX_U32 *pHdrSel, AX_SNS_HDR_MODE_E eHdrMode) +{ + if (NULL == pHdrSel) { + return; + } + + switch (eHdrMode) { + case AX_SNS_LINEAR_MODE: + *pHdrSel = 0x1; + break; + + case AX_SNS_HDR_2X_MODE: + *pHdrSel = 0x1 | 0x2; + break; + + case AX_SNS_HDR_3X_MODE: + *pHdrSel = 0x1 | 0x2 | 0x4; + break; + + case AX_SNS_HDR_4X_MODE: + *pHdrSel = 0x1 | 0x2 | 0x4 | 0x8; + break; + + default: + *pHdrSel = 0x1; + break; + } +} + + +static AX_U32 __vin_cfg_cams_params(SAMPLE_VIN_HAL_CASE_E eVinCase, + COMMON_VIN_MODE_E eSysMode, + AX_SNS_HDR_MODE_E eHdrMode, + AX_BOOL bAiispEnable, + COMMON_SYS_ARGS_T *pCommonArgs) +{ + AX_S32 i = 0; + SAMPLE_SNS_TYPE_E eSnsType = OMNIVISION_OS08A20; + AX_CHAR board_id[BOARD_ID_LEN] = {0}; + + COMM_ISP_PRT("eVinCase %d, eSysMode %d, eHdrMode %d\n", eVinCase, eSysMode, eHdrMode); + + if (eVinCase == SAMPLE_VIN_HAL_CASE_SINGLE_DUMMY) { + pCommonArgs->nCamCnt = 1; + eSnsType = SAMPLE_SNS_DUMMY; + COMMON_VIN_GetSnsConfig(SAMPLE_SNS_DUMMY, + &gCams[0].tMipiRx, + &gCams[0].tSnsAttr, + &gCams[0].tSnsClkAttr, + &gCams[0].tDevAttr, + &gCams[0].tPipeAttr, gCams[0].tChnAttr); + } else if (eVinCase == SAMPLE_VIN_HAL_CASE_SINGLE_OS08A20) { + pCommonArgs->nCamCnt = 1; + eSnsType = OMNIVISION_OS08A20; + COMMON_VIN_GetSnsConfig(OMNIVISION_OS08A20, + &gCams[0].tMipiRx, + &gCams[0].tSnsAttr, + &gCams[0].tSnsClkAttr, + &gCams[0].tDevAttr, + &gCams[0].tPipeAttr, gCams[0].tChnAttr); + + gCams[0].nDevId = 0; + gCams[0].nRxDev = 0; + gCams[0].nPipeId = 0; + gCams[0].tSnsClkAttr.nSnsClkIdx = 0; + gCams[0].tDevBindPipe.nNum = 1; + gCams[0].tDevBindPipe.nPipeId[0] = gCams[0].nPipeId; + set_pipe_hdr_mode(&gCams[0].tDevBindPipe.nHDRSel[0], eHdrMode); + + } + + for (i = 0; i < pCommonArgs->nCamCnt; i++) { + gCams[i].eSnsType = eSnsType; + gCams[i].tSnsAttr.eSnsMode = eHdrMode; + gCams[i].tDevAttr.eSnsMode = eHdrMode; + gCams[i].tPipeAttr.eSnsMode = eHdrMode; + gCams[i].eHdrMode = eHdrMode; + gCams[i].eSysMode = eSysMode; + gCams[i].tPipeAttr.bAiIspEnable = bAiispEnable; + for (AX_S32 j = 0; j < AX_VIN_MAX_PIPE_NUM; j++) { + gCams[i].tPipeInfo[j].ePipeMode = SAMPLE_PIPE_MODE_VIDEO; + gCams[i].tPipeInfo[j].bAiispEnable = bAiispEnable; + strncpy(gCams[i].tPipeInfo[j].szBinPath, "null.bin", sizeof(gCams[i].tPipeInfo[j].szBinPath)); + } + + if (eHdrMode > AX_SNS_LINEAR_MODE) { + gCams[i].tDevAttr.eSnsOutputMode = AX_SNS_DOL_HDR; + } else { + gCams[i].tSnsAttr.eRawType = AX_RT_RAW12; + gCams[i].tDevAttr.ePixelFmt = AX_FORMAT_BAYER_RAW_12BPP; + gCams[i].tPipeAttr.ePixelFmt = AX_FORMAT_BAYER_RAW_12BPP; + } + gCams[i].bRegisterSns = AX_TRUE; + if (COMMON_VIN_LOADRAW == eSysMode) { + gCams[i].bEnableDev = AX_FALSE; + } else { + gCams[i].bEnableDev = AX_TRUE; + } + } + + return 0; +} + +AX_S32 SAMPLE_VIN_Init(SAMPLE_VIN_HAL_CASE_E eVinCase, COMMON_VIN_MODE_E eSysMode, AX_SNS_HDR_MODE_E eHdrMode, + AX_BOOL bAiispEnable, COMMON_SYS_ARGS_T *pPrivPool) +{ + AX_S32 nRet = 0; + + if (AX_TRUE == bAiispEnable) { + if (eVinCase != SAMPLE_VIN_HAL_CASE_SINGLE_OS08A20) { + COMM_ISP_PRT("when parameter -a 1,parameter -c: ISP Pipeline Case must be 1\n"); + exit(0); + } + } + if (eVinCase >= SAMPLE_VIN_HAL_CASE_BUTT || eVinCase <= SAMPLE_VIN_HAL_CASE_NONE) { + COMM_ISP_PRT("error sys case : %d\n", eVinCase); + exit(0); + } + if (eSysMode >= COMMON_VIN_BUTT || eSysMode <= COMMON_VIN_NONE) { + COMM_ISP_PRT("error sys mode : %d\n", eSysMode); + exit(0); + } + + __vin_cfg_cams_params(eVinCase, eSysMode, eHdrMode, + bAiispEnable, &gCommonArgs); + nRet = COMMON_NPU_Init(AX_ENGINE_VIRTUAL_NPU_BIG_LITTLE); + if (nRet) { + return nRet; + } + nRet = COMMON_CAM_Init(); + if (nRet) { + return nRet; + } + if (pPrivPool) { + nRet = COMMON_CAM_PrivPoolInit(pPrivPool); + if (nRet) { + return nRet; + } + } + + return AX_SUCCESS; +} + +AX_S32 SAMPLE_VIN_Open(AX_VOID) +{ + AX_CAMERA_T *pCam = &gCams[0]; + AX_U8 nCamCnt = gCommonArgs.nCamCnt; + AX_S32 nRet = 0; + + nRet = COMMON_CAM_Open(pCam, nCamCnt); +#ifdef DEBUG + /* Stream default port 6000, Ctrl default port 8082 */ + nRet = COMMON_NT_Init(6000, 8082); + if (nRet) { + return nRet; + } + /* update pipe attribute */ + for (i = 0; i < gCommonArgs.nCamCnt; i++) { + for (j = 0; j < gCams[i].tDevBindPipe.nNum; j++) { + COMMON_NT_UpdateSource(gCams[i].tDevBindPipe.nPipeId[j]); + } + } +#endif + return nRet; +} + +AX_S32 SAMPLE_VIN_Close(AX_VOID) +{ + AX_CAMERA_T *pCam = &gCams[0]; + AX_U8 nCamCnt = gCommonArgs.nCamCnt; + + return COMMON_CAM_Close(pCam, nCamCnt); +} + +AX_S32 SAMPLE_VIN_Start(AX_VOID) +{ + AX_CAMERA_T *pCam = &gCams[0]; + AX_U8 nCamCnt = gCommonArgs.nCamCnt; + + return COMMON_CAM_Run(pCam, nCamCnt); +} + +AX_S32 SAMPLE_VIN_Stop(AX_VOID) +{ + return COMMON_CAM_Stop(); +} + +AX_S32 SAMPLE_VIN_DeInit(AX_VOID) +{ + COMMON_NT_DeInit(); + COMMON_CAM_Deinit(); + + return AX_SUCCESS; +} diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/sample_vin_hal.h b/msp/sample/vin_ivps_engine_venc_rtsp/sample_vin_hal.h new file mode 100644 index 0000000..184927c --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/sample_vin_hal.h @@ -0,0 +1,35 @@ +/********************************************************************************** + * + * Copyright (c) 2019-2020 Beijing AXera Technology Co., Ltd. All Rights Reserved. + * + * This source file is the property of Beijing AXera Technology Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Beijing AXera Technology Co., Ltd. + * + **********************************************************************************/ +#ifndef _SAMPLE_VIN_HAL_H_ +#define _SAMPLE_VIN_HAL_H_ + +#include "common_sys.h" +#include "common_vin.h" +#include "common_nt.h" +#include "common_cam.h" + +typedef enum { + SAMPLE_VIN_HAL_CASE_NONE = -1, + SAMPLE_VIN_HAL_CASE_SINGLE_DUMMY = 0, + SAMPLE_VIN_HAL_CASE_SINGLE_OS08A20 = 1, + SAMPLE_VIN_HAL_CASE_BUTT +} SAMPLE_VIN_HAL_CASE_E; + +AX_S32 SAMPLE_VIN_Init(SAMPLE_VIN_HAL_CASE_E eVinCase, COMMON_VIN_MODE_E eSysMode, AX_SNS_HDR_MODE_E eHdrMode, + AX_BOOL bAiispEnable, COMMON_SYS_ARGS_T *pPrivPool); +AX_S32 SAMPLE_VIN_DeInit(AX_VOID); + +AX_S32 SAMPLE_VIN_Open(AX_VOID); +AX_S32 SAMPLE_VIN_Close(AX_VOID); + +AX_S32 SAMPLE_VIN_Start(AX_VOID); +AX_S32 SAMPLE_VIN_Stop(AX_VOID); + +#endif /* _SAMPLE_VIN_HAL_H_ */ diff --git a/msp/sample/vin_ivps_engine_venc_rtsp/sample_vin_ivps_engine_venc_rtsp.c b/msp/sample/vin_ivps_engine_venc_rtsp/sample_vin_ivps_engine_venc_rtsp.c new file mode 100644 index 0000000..1f84d68 --- /dev/null +++ b/msp/sample/vin_ivps_engine_venc_rtsp/sample_vin_ivps_engine_venc_rtsp.c @@ -0,0 +1,238 @@ +/************************************************************************************************** + * + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. + * + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and + * may not be copied or distributed in any isomorphic form without the prior + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. + * + **************************************************************************************************/ +#include + +#include "sample_utils.h" + +#undef AX_SAMPLE_LOG_TAG +#define AX_SAMPLE_LOG_TAG "sample_vin_ivps_engine_venc_rtsp" + +static AX_VOID SigInt(AX_S32 signo) +{ + ALOGW("SigInt Catch signal %d", signo); + ThreadLoopStateSet(AX_TRUE); +} + +static AX_VOID SigStop(AX_S32 signo) +{ + ALOGW("SigStop Catch signal %d", signo); + ThreadLoopStateSet(AX_TRUE); +} +enum LONG_OPTION +{ + LONG_OPTION_CONFIG_DUMP = 5000, + LONG_OPTION_CONFIG_HELP, + LONG_OPTION_CONFIG_BUTT +}; +static struct option long_options[] = { + {"dump", required_argument, NULL, LONG_OPTION_CONFIG_DUMP}, + {NULL, 0, NULL, 0}, +}; + +/* comm pool */ +COMMON_SYS_POOL_CFG_T gtSysCommPoolSingleOs08a20[] = { + {3840, 2160, 3840, AX_FORMAT_YUV420_SEMIPLANAR, 20}, /* vin nv21/nv21 use */ +}; + +/* priv pool */ +COMMON_SYS_POOL_CFG_T gtPrivPoolSingleOs08a20[] = { + {3840, 2160, 3840, AX_FORMAT_BAYER_RAW_16BPP, 25 * 2}, /* vin raw16 use */ +}; + +AX_S32 SAMPLE_CASE_OS08A20_VIN_IVPS_ENGINE_VENC_RTSP(SAMPLE_PARAM_T *pSampleParam) +{ + AX_S32 nRet = 0; + SAMPLE_GRP_T *pIVPSGrp = &gSampleGrp; + COMMON_SYS_ARGS_T tCommonArgs = {0}; + COMMON_SYS_ARGS_T tPrivArgs = {0}; + AX_MOD_INFO_T tSrcMod = {0}, tDstMod = {0}; + + /* step 1. SYS Init & Create memory pool */ + tCommonArgs.nPoolCfgCnt = sizeof(gtSysCommPoolSingleOs08a20) / sizeof(gtSysCommPoolSingleOs08a20[0]); + tCommonArgs.pPoolCfg = gtSysCommPoolSingleOs08a20; + + nRet = COMMON_SYS_Init(&tCommonArgs); + if (nRet) { + COMM_ISP_PRT("COMMON_SYS_Init fail, ret:0x%x", nRet); + goto EXIT_FAIL; + } + + /* step 2. VIN Init & Open */ + tPrivArgs.nPoolCfgCnt = sizeof(gtPrivPoolSingleOs08a20) / sizeof(gtPrivPoolSingleOs08a20[0]); + tPrivArgs.pPoolCfg = gtPrivPoolSingleOs08a20; + nRet = SAMPLE_VIN_Init(SAMPLE_VIN_HAL_CASE_SINGLE_OS08A20, pSampleParam->eSysMode, pSampleParam->eHdrMode, + pSampleParam->bAiispEnable, &tPrivArgs); + if (0 != nRet) { + ALOGE("SAMPLE_VIN_Init failed, ret:0x%x", nRet); + goto EXIT_FAIL1; + } + nRet = SAMPLE_VIN_Open(); + if (0 != nRet) { + ALOGE("SAMPLE_VIN_Open failed, ret:0x%x", nRet); + goto EXIT_FAIL3; + } + + /* step 3. Start a group of IVPS */ + nRet = SAMPLE_IVPS_StartGrp(pIVPSGrp); + if (0 != nRet) { + ALOGE("SAMPLE_IVPS_StartGrp error! ret:0x%x", nRet); + goto EXIT_FAIL3; + } + + /* step 4. VENC Init */ + + /* step 5. IVPS link to VENC */ + nRet = SAMPLE_Ivps2VencInit(pIVPSGrp, AX_TRUE); + if (0 != nRet) { + ALOGE("SAMPLE_Ivps2VencInit error, ret:0x%x", nRet); + goto EXIT_FAIL5; + } + + /* step 6. RTSP init and start */ + AX_RTSP_ATTR_T stAttr[MAX_RTSP_MAX_CHANNEL_NUM]; + memset(&stAttr[0], 0x00, sizeof(stAttr)); + + // channel 0 + for (int chn_idx = 0; chn_idx < pIVPSGrp->tPipelineAttr.nOutChnNum - 1; chn_idx++) { + stAttr[chn_idx].nChannel = chn_idx; + stAttr[chn_idx].stVideoAttr.bEnable = AX_TRUE; + stAttr[chn_idx].stVideoAttr.ePt = PT_H264; + } + AX_Rtsp_Init(&pIVPSGrp->pRtspObj, &stAttr[0], pIVPSGrp->tPipelineAttr.nOutChnNum - 1, 0); + AX_Rtsp_Start(pIVPSGrp->pRtspObj); + + /* step 7. VIN link to IVPS */ + tSrcMod.enModId = AX_ID_VIN; + tSrcMod.s32GrpId = 0; + tSrcMod.s32ChnId = 0; + tDstMod.enModId = AX_ID_IVPS; + tDstMod.s32GrpId = pIVPSGrp->nIvpsGrp; + tDstMod.s32ChnId = 0; /* the chn id of VENC is fix to 0 */ + nRet = AX_SYS_Link(&tSrcMod, &tDstMod); + if (0 != nRet) { + ALOGE("AX_SYS_Link error. ret:0x%x", nRet); + goto EXIT_FAIL6; + } + + nRet = SAMPLE_ENGINE_Load(SAMPLE_ENGINE_MODEL_FILE); + if (0 != nRet) { + ALOGE("SAMPLE_ENGINE_Load error. ret:0x%x", nRet); + goto EXIT_FAIL8; + } + + /* step 8. Start VIN */ + SAMPLE_VIN_Start(); + + SAMPLE_IVPS_ThreadStart(pIVPSGrp); + + while (!ThreadLoopStateGet()) { + sleep(1); + } + + /* step 8. Stop VIN */ + SAMPLE_VIN_Stop(); + + /* RTSP stop and delete */ + AX_Rtsp_Stop(pIVPSGrp->pRtspObj); + AX_Rtsp_Deinit(pIVPSGrp->pRtspObj); + +EXIT_FAIL8: + SAMPLE_ENGINE_Release(); +EXIT_FAIL7: + // AX_ENGINE_Deinit(); +EXIT_FAIL6: + SAMPLE_Ivps2VencDeinit(pIVPSGrp, AX_TRUE); +EXIT_FAIL5: + SAMPLE_IVPS_StopGrp(pIVPSGrp); +EXIT_FAIL4: + /* VENC */ +EXIT_FAIL3: + SAMPLE_VIN_Close(); +EXIT_FAIL2: + SAMPLE_VIN_DeInit(); +EXIT_FAIL1: + COMMON_SYS_DeInit(); +EXIT_FAIL: + return nRet; +} + +AX_VOID PrintHelp() +{ + printf("Command:\n"); + printf("\t-c: Sample Case:\n"); + printf("\t\t0: OS08A20->VIN->IVPS->VENC->RTSP\n"); + printf("\t-n: frames to calc delta pts.\n"); + printf("\t-s: whether enable select to get encode stream. 1: enable.\n"); + + printf("\nExample:\n\t/opt/bin/sample_vin_ivps_venc_rtsp -c 0\n"); +} + +SAMPLE_PARAM_T gSampleParam = { + SAMPLE_CASE_OS08A20_VIN_IVPS_ENGINE_VENC_RTSP_E, + COMMON_VIN_SENSOR, + AX_SNS_LINEAR_MODE, + AX_TRUE, + 0, + NULL, + .statDeltaPtsFrmNum = 0, + .bVencSelect = AX_FALSE, +}; + +int main(int argc, char *argv[]) +{ + int c = -1, option_index = 0; + AX_S32 nRet = -1; + + AX_BOOL isExit = AX_TRUE; + signal(SIGPIPE, SIG_IGN); + signal(SIGINT, SigInt); + signal(SIGTSTP, SigStop); + signal(SIGQUIT, SigStop); + signal(SIGTERM, SigStop); + + while ((c = getopt_long(argc, argv, "c:v:h:n:s:", long_options, &option_index)) != -1) { + isExit = AX_FALSE; + switch (c) { + case 'c': + gSampleParam.eSampleCase = (SAMPLE_CASE_E)atoi(optarg); + break; + case 'v': + gSampleParam.pFrameInfo = optarg; + break; + case 'h': + isExit = AX_TRUE; + break; + case 'n': + gSampleParam.statDeltaPtsFrmNum = atoi(optarg); + if (gSampleParam.statDeltaPtsFrmNum < SAMPLE_MIN_DELTAPTS_NUM) { + ALOGE("-n not less than %d!\n", SAMPLE_MIN_DELTAPTS_NUM); + isExit = AX_TRUE; + } + break; + case 's': + gSampleParam.bVencSelect = atoi(optarg); + break; + case LONG_OPTION_CONFIG_DUMP: + gSampleParam.nVencDump = atoi(optarg); + break; + default: + break; + } + } + + if (argc < 3 || isExit) { + PrintHelp(); + exit(0); + } + if (gSampleParam.eSampleCase == SAMPLE_CASE_OS08A20_VIN_IVPS_ENGINE_VENC_RTSP_E) { + SAMPLE_CASE_OS08A20_VIN_IVPS_ENGINE_VENC_RTSP(&gSampleParam); + } + exit(0); +} diff --git a/msp/sample/vin_ivps_venc_rtsp/sample_utils.c b/msp/sample/vin_ivps_venc_rtsp/sample_utils.c index 3e52361..84f0949 100644 --- a/msp/sample/vin_ivps_venc_rtsp/sample_utils.c +++ b/msp/sample/vin_ivps_venc_rtsp/sample_utils.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "sample_utils.h" diff --git a/msp/sample/vin_ivps_venc_rtsp/sample_utils.h b/msp/sample/vin_ivps_venc_rtsp/sample_utils.h index 1a262c6..dfcf9a4 100644 --- a/msp/sample/vin_ivps_venc_rtsp/sample_utils.h +++ b/msp/sample/vin_ivps_venc_rtsp/sample_utils.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vin_ivps_venc_rtsp/sample_venc_hal.c b/msp/sample/vin_ivps_venc_rtsp/sample_venc_hal.c index 158f0eb..6ba4262 100644 --- a/msp/sample/vin_ivps_venc_rtsp/sample_venc_hal.c +++ b/msp/sample/vin_ivps_venc_rtsp/sample_venc_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vin_ivps_venc_rtsp/sample_venc_hal.h b/msp/sample/vin_ivps_venc_rtsp/sample_venc_hal.h index dcb38f5..26d04d4 100644 --- a/msp/sample/vin_ivps_venc_rtsp/sample_venc_hal.h +++ b/msp/sample/vin_ivps_venc_rtsp/sample_venc_hal.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vin_ivps_venc_rtsp/sample_vin_hal.c b/msp/sample/vin_ivps_venc_rtsp/sample_vin_hal.c index 419d660..c9c411c 100644 --- a/msp/sample/vin_ivps_venc_rtsp/sample_vin_hal.c +++ b/msp/sample/vin_ivps_venc_rtsp/sample_vin_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vin_ivps_venc_rtsp/sample_vin_ivps_venc_rtsp.c b/msp/sample/vin_ivps_venc_rtsp/sample_vin_ivps_venc_rtsp.c index 721b3d0..4c11a59 100644 --- a/msp/sample/vin_ivps_venc_rtsp/sample_vin_ivps_venc_rtsp.c +++ b/msp/sample/vin_ivps_venc_rtsp/sample_vin_ivps_venc_rtsp.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include diff --git a/msp/sample/vin_ivps_vo_venc/sample_ivps_hal.c b/msp/sample/vin_ivps_vo_venc/sample_ivps_hal.c index 09593ce..db1feea 100644 --- a/msp/sample/vin_ivps_vo_venc/sample_ivps_hal.c +++ b/msp/sample/vin_ivps_vo_venc/sample_ivps_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "sample_utils.h" diff --git a/msp/sample/vin_ivps_vo_venc/sample_ivps_hal.h b/msp/sample/vin_ivps_vo_venc/sample_ivps_hal.h index 4a8142e..befe67a 100644 --- a/msp/sample/vin_ivps_vo_venc/sample_ivps_hal.h +++ b/msp/sample/vin_ivps_vo_venc/sample_ivps_hal.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #ifndef _SAMPLE_IVPS_HAL_H_ diff --git a/msp/sample/vin_ivps_vo_venc/sample_utils.c b/msp/sample/vin_ivps_vo_venc/sample_utils.c index 3e52361..84f0949 100644 --- a/msp/sample/vin_ivps_vo_venc/sample_utils.c +++ b/msp/sample/vin_ivps_vo_venc/sample_utils.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include "sample_utils.h" diff --git a/msp/sample/vin_ivps_vo_venc/sample_utils.h b/msp/sample/vin_ivps_vo_venc/sample_utils.h index 9728d23..d43cdc5 100644 --- a/msp/sample/vin_ivps_vo_venc/sample_utils.h +++ b/msp/sample/vin_ivps_vo_venc/sample_utils.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vin_ivps_vo_venc/sample_venc_hal.c b/msp/sample/vin_ivps_vo_venc/sample_venc_hal.c index eace5b2..c1ed941 100644 --- a/msp/sample/vin_ivps_vo_venc/sample_venc_hal.c +++ b/msp/sample/vin_ivps_vo_venc/sample_venc_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vin_ivps_vo_venc/sample_venc_hal.h b/msp/sample/vin_ivps_vo_venc/sample_venc_hal.h index 98f6f61..8c77455 100644 --- a/msp/sample/vin_ivps_vo_venc/sample_venc_hal.h +++ b/msp/sample/vin_ivps_vo_venc/sample_venc_hal.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vin_ivps_vo_venc/sample_vin_hal.c b/msp/sample/vin_ivps_vo_venc/sample_vin_hal.c index 419d660..c9c411c 100644 --- a/msp/sample/vin_ivps_vo_venc/sample_vin_hal.c +++ b/msp/sample/vin_ivps_vo_venc/sample_vin_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vin_ivps_vo_venc/sample_vin_hal.h b/msp/sample/vin_ivps_vo_venc/sample_vin_hal.h index 66055f7..fa53fb2 100644 --- a/msp/sample/vin_ivps_vo_venc/sample_vin_hal.h +++ b/msp/sample/vin_ivps_vo_venc/sample_vin_hal.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #ifndef _SAMPLE_VIN_HAL_H_ diff --git a/msp/sample/vin_ivps_vo_venc/sample_vin_ivps_vo_venc.c b/msp/sample/vin_ivps_vo_venc/sample_vin_ivps_vo_venc.c index 0d54fba..cbe22db 100644 --- a/msp/sample/vin_ivps_vo_venc/sample_vin_ivps_vo_venc.c +++ b/msp/sample/vin_ivps_vo_venc/sample_vin_ivps_vo_venc.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include diff --git a/msp/sample/vin_ivps_vo_venc/sample_vo_hal.c b/msp/sample/vin_ivps_vo_venc/sample_vo_hal.c index cac8e08..964f24b 100644 --- a/msp/sample/vin_ivps_vo_venc/sample_vo_hal.c +++ b/msp/sample/vin_ivps_vo_venc/sample_vo_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -60,6 +60,7 @@ static SAMPLE_VO_CONFIG_S stVoConf = { .u32DispatchMode = AX_VO_LAYER_OUT_TO_LINK, }, .enVoMode = VO_MODE_1MUX, + .u32FifoDepth = 3, .u64KeepChnPrevFrameBitmap0 = 0x1UL, .u64KeepChnPrevFrameBitmap1 = 0x0UL, }, @@ -80,12 +81,14 @@ static SAMPLE_VO_CONFIG_S stVoConf = { .u32DispatchMode = AX_VO_LAYER_OUT_TO_FIFO, }, .enVoMode = VO_MODE_1MUX, + .u32FifoDepth = 3, .u64KeepChnPrevFrameBitmap0 = ~0x0UL, .u64KeepChnPrevFrameBitmap1 = ~0x0UL, }, { // layer2 .bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX}, + .u32FifoDepth = 3, } }, }; diff --git a/msp/sample/vin_ivps_vo_venc/sample_vo_hal.h b/msp/sample/vin_ivps_vo_venc/sample_vo_hal.h index 98c561a..0ba52f9 100644 --- a/msp/sample/vin_ivps_vo_venc/sample_vo_hal.h +++ b/msp/sample/vin_ivps_vo_venc/sample_vo_hal.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #ifndef _SAMPLE_VO_HAL_H_ diff --git a/msp/sample/vin_vo/sample_vin_hal.c b/msp/sample/vin_vo/sample_vin_hal.c index ec9b28a..591d9d9 100644 --- a/msp/sample/vin_vo/sample_vin_hal.c +++ b/msp/sample/vin_vo/sample_vin_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ diff --git a/msp/sample/vin_vo/sample_vin_vo.c b/msp/sample/vin_vo/sample_vin_vo.c index e96ca9f..569b153 100644 --- a/msp/sample/vin_vo/sample_vin_vo.c +++ b/msp/sample/vin_vo/sample_vin_vo.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #include diff --git a/msp/sample/vin_vo/sample_vo_hal.c b/msp/sample/vin_vo/sample_vo_hal.c index 9a6d44b..1313c58 100644 --- a/msp/sample/vin_vo/sample_vo_hal.c +++ b/msp/sample/vin_vo/sample_vo_hal.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -61,6 +61,7 @@ static SAMPLE_VO_CONFIG_S stVoConf = { .u32DispatchMode = AX_VO_LAYER_OUT_TO_LINK, }, .enVoMode = VO_MODE_1MUX, + .u32FifoDepth = 3, .u64KeepChnPrevFrameBitmap0 = 0x1UL, .u64KeepChnPrevFrameBitmap1 = 0x0UL, }, @@ -81,12 +82,14 @@ static SAMPLE_VO_CONFIG_S stVoConf = { .u32DispatchMode = AX_VO_LAYER_OUT_TO_FIFO, }, .enVoMode = VO_MODE_1MUX, + .u32FifoDepth = 3, .u64KeepChnPrevFrameBitmap0 = ~0x0UL, .u64KeepChnPrevFrameBitmap1 = ~0x0UL, }, { // layer2 .bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX}, + .u32FifoDepth = 3, } }, }; diff --git a/msp/sample/vin_vo/sample_vo_hal.h b/msp/sample/vin_vo/sample_vo_hal.h index b2f4677..fefa8c8 100644 --- a/msp/sample/vin_vo/sample_vo_hal.h +++ b/msp/sample/vin_vo/sample_vo_hal.h @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ #ifndef _SAMPLE_VO_HAL_H_ diff --git a/msp/sample/vo/common/ax_vo_ini.c b/msp/sample/vo/common/ax_vo_ini.c index 29c31af..30e00bf 100644 --- a/msp/sample/vo/common/ax_vo_ini.c +++ b/msp/sample/vo/common/ax_vo_ini.c @@ -310,70 +310,90 @@ static AX_CHAR *key_str[AX_VO_INI_K_BUTT] = { "disp_cursor_fb_index", "disp_cursor_move", "disp_out_fmt", + "disp_bld_buf_mode", }; static AX_S32 VO_INI_FB_CONF_PARSE(AX_CHAR *pStr, SAMPLE_FB_CONFIG_S *pstFbConf) { - AX_U32 u32StrNr = 0; - AX_CHAR *pStrSplit[4] = {NULL, NULL, NULL, NULL}; + AX_S32 s32Ret = 0; + AX_U32 i, u32StrNr = 0; + AX_CHAR *pStrSplit[10] = {0}; AX_CHAR *pStrKey = ":@", *pStrTmp, *pSaveStr; memset(pstFbConf, 0, sizeof(*pstFbConf)); pStrTmp = strtok_r(pStr, pStrKey, &pSaveStr); - while (pStrTmp && u32StrNr < 4) { + while (pStrTmp && u32StrNr < 10) { SAMPLE_PRT("split:%s\n", pStrTmp); pStrSplit[u32StrNr++] = pStrTmp; pStrTmp = strtok_r(NULL, pStrKey, &pSaveStr); } - if (u32StrNr < 3) { - SAMPLE_PRT("fb config invalid, u32StrNr:%d\n", u32StrNr); - return -1; - } + for (i = 0; i < u32StrNr; i += 1) { + if (strstr(pStrSplit[i], "fb")) { + if (strlen(pStrSplit[i]) <= 2) { + goto err; + } + pstFbConf->u32Index = strtoul(&pStrSplit[i][2], NULL, 10); - if (strlen(pStrSplit[0]) > 2) { - pstFbConf->u32Index = strtoul(&pStrSplit[0][2], NULL, 10); - } else { - SAMPLE_PRT("fb index-str(%s) invalid\n", pStrSplit[0]); - return -1; - } + } else if (strstr(pStrSplit[i], "reso#")) { + if (strlen(pStrSplit[i]) <= 5) { + goto err; + } + pstFbConf->u32ResoW = strtoul(&pStrSplit[i][5], &pStrTmp, 10); + if (!pStrTmp || strlen(pStrTmp) < 2) { + goto err; + } + pStrTmp++; + pstFbConf->u32ResoH = strtoul(pStrTmp, NULL, 10); - pstFbConf->u32ResoW = strtoul(pStrSplit[1], &pStrTmp, 10); - if (!pStrTmp) { - SAMPLE_PRT("fb reso-str(%s) invalid\n", pStrSplit[1]); - return -1; - } - pStrTmp++; - pstFbConf->u32ResoH = strtoul(pStrTmp, NULL, 10); - - if (strstr(pStrSplit[2], "argb8888")) { - pstFbConf->u32Fmt = AX_FORMAT_ARGB8888; - } else if (strstr(pStrSplit[2], "argb1555")) { - pstFbConf->u32Fmt = AX_FORMAT_ARGB1555; - } else if (strstr(pStrSplit[2], "rgba8888")) { - pstFbConf->u32Fmt = AX_FORMAT_RGBA8888; - } else if (strstr(pStrSplit[2], "rgba5551")) { - pstFbConf->u32Fmt = AX_FORMAT_RGBA5551; - } else { - SAMPLE_PRT("fb fmt-str(%s) invalid\n", pStrSplit[2]); - return -1; - } + } else if (strstr(pStrSplit[i], "vrefresh#")) { + if (strlen(pStrSplit[i]) <= 9) { + goto err; + } + pstFbConf->u32Vrefresh= strtoul(&pStrSplit[i][9], NULL, 10); + + } else if (strstr(pStrSplit[i], "fmt#")) { + if (strstr(pStrSplit[i], "argb8888")) { + pstFbConf->u32Fmt = AX_FORMAT_ARGB8888; + } else if (strstr(pStrSplit[i], "argb1555")) { + pstFbConf->u32Fmt = AX_FORMAT_ARGB1555; + } else if (strstr(pStrSplit[i], "rgba8888")) { + pstFbConf->u32Fmt = AX_FORMAT_RGBA8888; + } else if (strstr(pStrSplit[i], "rgba5551")) { + pstFbConf->u32Fmt = AX_FORMAT_RGBA5551; + } else { + SAMPLE_PRT("unsupported str\n"); + goto err; + } + + } else if (strstr(pStrSplit[i], "ck#")) { + if (strlen(pStrSplit[i]) <= 3) { + goto err; + } + + pstFbConf->u32ColorKey = strtoul(&pStrSplit[i][3], &pStrTmp, 16); + if (pStrTmp) { + pStrTmp++; + pstFbConf->u32ColorKeyInv = strtoul(pStrTmp, NULL, 10) ? 1 : 0; + } + pstFbConf->u32ColorKeyEn = 1; - if (u32StrNr > 3 && strlen(pStrSplit[3]) > 2) { - pstFbConf->u32ColorKey = strtoul(&pStrSplit[3][2], &pStrTmp, 16); - if (pStrTmp) { - pStrTmp++; - pstFbConf->u32ColorKeyInv = strtoul(pStrTmp, NULL, 10) ? 1 : 0; } - pstFbConf->u32ColorKeyEn = 1; + + continue; + +err: + SAMPLE_PRT("str(%s) invalid\n", pStrSplit[i]); + s32Ret = -1; + break; } - SAMPLE_PRT("fb%d reso:%dx%d fmt:0x%x, ck:0x%x-%d-%d\n", pstFbConf->u32Index, - pstFbConf->u32ResoW, pstFbConf->u32ResoH, pstFbConf->u32Fmt, + SAMPLE_PRT("fb%d reso:%dx%d vrefresh:%d fmt:0x%x, ck:0x%x-%d-%d\n", pstFbConf->u32Index, + pstFbConf->u32ResoW, pstFbConf->u32ResoH, pstFbConf->u32Vrefresh, pstFbConf->u32Fmt, pstFbConf->u32ColorKey, pstFbConf->u32ColorKeyInv, pstFbConf->u32ColorKeyEn); - return 0; + return s32Ret; } static AX_VOID VO_INI_GRAPHIC_PARSE(AX_CHAR *pStr, SAMPLE_VO_GRAPHIC_CONFIG_S *pstGraphConf) @@ -1220,6 +1240,21 @@ static AX_S32 VO_INI_GET_KEY_VAL(AX_CHAR *pstr, AX_VOID *pConfig, } } } + break; + + case AX_VO_INI_K_D_BLD_BUF_MODE: + if (type == AX_VO_INI_S_LAYER_DISPLAY) { + pVoConfig = (SAMPLE_VO_CONFIG_S *)pConfig; + + for (i = 0; i < stSplitStr.u32StrNr; i++) { + if (!strcmp(stSplitStr.pStr[i], "VO_BLD_SINGLE_BUF")) { + pVoConfig->stVoDev[i].u32Flags |= AX_VO_FLAG_BLD_SINGLE_BUF; + } else { + pVoConfig->stVoDev[i].u32Flags &= ~(AX_VO_FLAG_BLD_SINGLE_BUF); + } + } + } + break; default: break; diff --git a/msp/sample/vo/common/ax_vo_ini.h b/msp/sample/vo/common/ax_vo_ini.h index 6d84757..f72be42 100644 --- a/msp/sample/vo/common/ax_vo_ini.h +++ b/msp/sample/vo/common/ax_vo_ini.h @@ -72,7 +72,7 @@ typedef enum { AX_VO_INI_K_D_CURSOR_FBID, AX_VO_INI_K_D_CURSOR_MOVE, AX_VO_INI_K_D_OUT_FMT, - + AX_VO_INI_K_D_BLD_BUF_MODE, AX_VO_INI_K_BUTT } AX_VO_INI_KEY_E; diff --git a/msp/sample/vo/common/sample_vo_common.c b/msp/sample/vo/common/sample_vo_common.c index 1d81df2..d933334 100644 --- a/msp/sample/vo/common/sample_vo_common.c +++ b/msp/sample/vo/common/sample_vo_common.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -884,7 +884,6 @@ static AX_VOID *SAMPLE_VO_PLAY_THREAD(AX_VOID *pData) } u32FrameRate = pstChnThreadParam->u32FrameRate ? pstChnThreadParam->u32FrameRate : 30; - AX_VO_SetChnFrameRate(u32LayerID, u32ChnID, u32FrameRate); SAMPLE_PRT("u32FrameRate = %d, u32FrameMax = %d\n", u32FrameRate, u32FrameMax); diff --git a/msp/sample/vo/config/vo.ini b/msp/sample/vo/config/vo.ini index 33a77a5..7328ea8 100644 --- a/msp/sample/vo/config/vo.ini +++ b/msp/sample/vo/config/vo.ini @@ -139,7 +139,7 @@ disp_wbc_type = VO_WBC_SOURCE_DEV disp_wbc_mode = VO_WBC_MODE_NORMAL disp_wbc_frame_rate = 30 disp_wbc_frame_nr = 50 -disp_graphic_fb_conf = fb0:1280x720@argb8888,fb1:1920x1080@argb8888 +disp_graphic_fb_conf = fb0:reso#1280x720@fmt#argb8888,fb1:reso#1920x1080@fmt#argb8888 layer_disp_X = 0 layer_disp_Y = 0 @@ -220,7 +220,7 @@ sectionType = layer_display VoDev = 0 disp_interface_type = VO_INTF_HDMI disp_sync_type = VO_OUTPUT_1080P60 -disp_graphic_fb_conf = fb0:1920x1080@argb8888 +disp_graphic_fb_conf = fb0:reso#1920x1080@fmt#argb8888 disp_cursor_enable = 1 disp_cursor_fb_index = 3 disp_cursor_x = 500 @@ -252,7 +252,8 @@ disp_wbc_type = VO_WBC_SOURCE_DEV,VO_WBC_SOURCE_DEV disp_wbc_mode = VO_WBC_MODE_NORMAL,VO_WBC_MODE_NORMAL disp_wbc_frame_rate = 30,30 disp_wbc_frame_nr = 50,50 -disp_graphic_fb_conf = fb0:1280x720@argb8888@ck10101#0-fb1:1280x720@argb8888@ck10101#0,fb2:1920x1080@argb1555@ck10101#0-fb4:1920x1080@argb8888@ck10101#0 +disp_graphic_fb_conf = fb0:reso#1280x720@vrefresh#30@fmt#argb8888@ck#10101$0-fb1:reso#1280x720@fmt#argb8888@ck#10101$0,fb2:reso#1920x1080@fmt#argb1555@ck#10101$0-fb4:reso#1920x1080@fmt#argb8888@ck#10101$0 +disp_bld_buf_mode = VO_BLD_SINGLE_BUF,VO_BLD_DUAL_BUF layer_disp_X = 0,0 layer_disp_Y = 0,0 @@ -319,7 +320,7 @@ disp_work_mode = VO_ONLINE disp_interface_type = VO_INTF_HDMI disp_sync_type = VO_OUTPUT_1080P60 disp_sync_user_index = 0 -disp_graphic_fb_conf = fb0:1920x1080@argb8888 +disp_graphic_fb_conf = fb0:reso#1920x1080@fmt#argb8888 disp_cursor_enable = 1 disp_cursor_fb_index = 3 disp_cursor_x = 500 @@ -366,7 +367,7 @@ VoDev = 0,1 disp_interface_type = VO_INTF_HDMI,VO_INTF_HDMI disp_sync_type = VO_OUTPUT_1080P60,VO_OUTPUT_3840x2160_30 disp_hdmi_mode = VO_HDMI_FORCE_HDMI,VO_HDMI_FORCE_HDMI -disp_graphic_fb_conf = fb0:1920x1080@argb8888 +disp_graphic_fb_conf = fb0:reso#1920x1080@fmt#argb8888 disp_cursor_enable = 1,1 disp_cursor_move = 1,1 disp_cursor_fb_index = 3,7 diff --git a/msp/sample/vo/sample_vo b/msp/sample/vo/sample_vo deleted file mode 100644 index 20bc1f5..0000000 Binary files a/msp/sample/vo/sample_vo and /dev/null differ diff --git a/msp/sample/vo/sample_vo.c b/msp/sample/vo/sample_vo.c index 9b641dd..a5cb6c3 100644 --- a/msp/sample/vo/sample_vo.c +++ b/msp/sample/vo/sample_vo.c @@ -1,10 +1,10 @@ /************************************************************************************************** * - * Copyright (c) 2019-2023 Axera Semiconductor (Ningbo) Co., Ltd. All Rights Reserved. + * Copyright (c) 2019-2023 Axera Semiconductor (Shanghai) Co., Ltd. All Rights Reserved. * - * This source file is the property of Axera Semiconductor (Ningbo) Co., Ltd. and + * This source file is the property of Axera Semiconductor (Shanghai) Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior - * written consent of Axera Semiconductor (Ningbo) Co., Ltd. + * written consent of Axera Semiconductor (Shanghai) Co., Ltd. * **************************************************************************************************/ @@ -47,15 +47,25 @@ static SAMPLE_VO_LAYER_CONFIG_S g_stLayerConf = { .enPartMode = AX_VO_PART_MODE_MULTI, }, .enVoMode = VO_MODE_1MUX, + .u32FifoDepth = 3, .u64KeepChnPrevFrameBitmap0 = ~0x0UL, .u64KeepChnPrevFrameBitmap1 = ~0x0UL, }; static SAMPLE_VO_CONFIG_S g_stVoConf = { .stVoLayer = { - {.bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX},}, - {.bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX},}, - {.bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX},}, + { + .bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX}, + .u32FifoDepth = 3, + }, + { + .bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX}, + .u32FifoDepth = 3, + }, + { + .bindVoDev = {SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX, SAMPLE_VO_DEV_MAX}, + .u32FifoDepth = 3, + }, }, };