/*
 * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 *
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/******************************************************************************************************************
 * Model: keyword_spotting_ds_cnn_large_clustered_int8
 * Source: https://github.com/ARM-software/ML-zoo/tree/22.02/models/keyword_spotting/ds_cnn_large/tflite_clustered_int8
 * Hexdump: python3 -c 'import numpy;i=numpy.load("input.npy");i.tofile("input.bin");' && xxd -i input.bin > input.h
 ******************************************************************************************************************/

unsigned char inputData[] __attribute__((aligned(16), section("input_data_sec"))) = {
    0xcf, 0x31, 0x83, 0xe4, 0x19, 0xe2, 0x7f, 0x71, 0xd8, 0xb0, 0x16, 0x43, 0x61, 0xe2, 0x6f, 0x6c, 0x54, 0x10, 0xc5,
    0xe4, 0xc2, 0xf1, 0xc6, 0x75, 0x7b, 0x97, 0x4f, 0x6a, 0x88, 0x00, 0x39, 0xae, 0x36, 0xd5, 0x80, 0x9d, 0xef, 0x78,
    0xb0, 0x07, 0x92, 0xc2, 0xea, 0x12, 0x3a, 0xe1, 0xfe, 0xf4, 0xab, 0xfe, 0x0d, 0x25, 0x15, 0xe0, 0x55, 0x15, 0xc2,
    0xbd, 0x4a, 0x20, 0xcd, 0xbe, 0xcf, 0xa7, 0xfa, 0x6f, 0x5f, 0xf3, 0xb4, 0xdf, 0x93, 0xcd, 0x25, 0x8c, 0xfd, 0x9d,
    0x71, 0x3a, 0x04, 0x82, 0x8f, 0x8f, 0x3b, 0xf5, 0x0c, 0xa9, 0x4a, 0x42, 0x2e, 0x06, 0xd8, 0x93, 0x75, 0x25, 0xbf,
    0x72, 0x7c, 0xe5, 0xdc, 0x94, 0x87, 0xf8, 0x3b, 0x3f, 0x02, 0x57, 0x83, 0x88, 0x2b, 0x9e, 0x4b, 0x77, 0xd3, 0xf8,
    0xee, 0xba, 0xda, 0x39, 0x68, 0xc4, 0x14, 0xd4, 0x8f, 0x6d, 0x7f, 0x7f, 0x0b, 0x9b, 0xc6, 0xe8, 0x02, 0xe1, 0xda,
    0x4a, 0x97, 0x9f, 0x54, 0xcb, 0x86, 0x20, 0xb2, 0x18, 0xfc, 0x8e, 0x12, 0x31, 0x6f, 0xfe, 0x02, 0xe2, 0x13, 0xc6,
    0x60, 0xc7, 0x12, 0xa1, 0xae, 0x0b, 0x3b, 0x8c, 0x2f, 0x39, 0x53, 0x87, 0xca, 0xce, 0x59, 0x69, 0x69, 0x1b, 0x3a,
    0x86, 0xf7, 0xf1, 0x2a, 0xac, 0x0f, 0xdf, 0x8a, 0x6b, 0xc6, 0xf3, 0x19, 0x9c, 0xb5, 0xe1, 0xe7, 0xf4, 0x8e, 0x41,
    0x4a, 0xba, 0x4b, 0x2e, 0xa8, 0x9d, 0xd8, 0x56, 0xaf, 0x69, 0xee, 0xbf, 0x6c, 0x50, 0x3a, 0x3e, 0xd7, 0x25, 0x42,
    0xaa, 0xcb, 0xdf, 0xd9, 0x4f, 0x0f, 0xc6, 0x5a, 0x8d, 0x91, 0xb3, 0x21, 0x58, 0x2c, 0x06, 0x3b, 0x8d, 0x4f, 0xea,
    0x70, 0x00, 0x00, 0x67, 0x9f, 0xbb, 0xa5, 0x6d, 0x58, 0x36, 0xe4, 0x5f, 0x13, 0x77, 0xf9, 0x48, 0xc0, 0x80, 0x2d,
    0x6e, 0x5b, 0x85, 0x64, 0xb9, 0x6e, 0x56, 0x94, 0x93, 0x9b, 0x6c, 0x17, 0x68, 0xfa, 0xf4, 0xe2, 0xce, 0x5f, 0x3a,
    0xe5, 0x8b, 0xfc, 0xa6, 0xfe, 0x68, 0x82, 0xfe, 0x98, 0xcb, 0xb0, 0x18, 0xd6, 0xc9, 0xbd, 0xf8, 0x86, 0x41, 0x89,
    0x8b, 0x24, 0xd8, 0xd8, 0xe0, 0x42, 0xfd, 0xf5, 0xdc, 0xd4, 0x7a, 0xa4, 0xd2, 0xfc, 0x69, 0xd3, 0x75, 0x82, 0x44,
    0xa9, 0xc4, 0xbb, 0x43, 0xc1, 0xde, 0xba, 0xc6, 0xa8, 0x0b, 0x1f, 0x19, 0x22, 0x0f, 0xa6, 0xa8, 0xc4, 0x45, 0x6b,
    0x37, 0xa7, 0xd4, 0x08, 0x58, 0x3e, 0x65, 0xea, 0x27, 0x05, 0x50, 0x61, 0xed, 0xc1, 0xdc, 0x4d, 0xb7, 0x7d, 0xd5,
    0xe0, 0xd7, 0xb6, 0xe0, 0x5e, 0x2b, 0x8e, 0x5a, 0xbc, 0x6b, 0xb4, 0xa5, 0x24, 0x9e, 0x29, 0x6c, 0xaf, 0x73, 0xb3,
    0x84, 0xfa, 0x87, 0xa7, 0xf2, 0x00, 0xf5, 0x49, 0xa4, 0xe0, 0x15, 0x1c, 0x7d, 0xdb, 0xc8, 0xbd, 0xb0, 0xfc, 0xfd,
    0xa8, 0xe3, 0x6e, 0x3f, 0xed, 0xa6, 0x15, 0xfa, 0xb1, 0xe2, 0xf0, 0x57, 0x60, 0x5b, 0xf3, 0xc1, 0xe7, 0x86, 0x65,
    0x19, 0x00, 0x0b, 0x52, 0x6f, 0x12, 0x74, 0x08, 0x52, 0x13, 0x18, 0x76, 0x59, 0x02, 0x25, 0x4e, 0x14, 0x71, 0xc9,
    0xe3, 0x42, 0x94, 0x7e, 0x6f, 0xf8, 0x8e, 0x1d, 0xcc, 0x4e, 0xf2, 0xce, 0xa5, 0x92, 0x54, 0xfe, 0xce, 0xf0, 0xf2,
    0xb1, 0x2c, 0xa8, 0x6e, 0x5a, 0x16, 0xf4, 0xa8, 0x4f, 0xdb, 0x1f, 0x86, 0xe0, 0x7b, 0x87, 0xd6, 0x95, 0x54, 0x35,
    0x56, 0x66, 0xb4, 0x15, 0x96, 0xca, 0xd3, 0xf0, 0x39, 0x18, 0xb6, 0x70, 0xde, 0x5e, 0xbd, 0x04, 0x0e, 0x12, 0xf8,
    0xd1, 0x2f, 0xbf, 0xb1, 0xfd, 0x10, 0x40, 0x50, 0x72, 0xc4, 0x83, 0x03, 0xca, 0x05, 0xcd};
