基于CH32F103的DAC播放WAV功能

news2024/11/24 3:34:11

一、理论

1.1 DAC理论

数字信号转化为电压信号,实现扬声器不同频率的发声。

12位DAC,表达范围0-4095

1.2音频wav理论

1.2.1 wav文件格式解析

wav 文件一般由3个区块组成:RIFF chunk、Format chunk 和 Data chunk。
RIFF chunk:主要说明本文件保存的是什么内容。
Formt chunk:主要说明音频文件的格式
Data chunk:主要记录音频的数据

(1)RIFF chunk

ID 固定死,填入 RIFF ,作为标识。
Size 为文件长度减去 ID 和 Size 的长度,即 fileSize - 8
Type 如果是 WAVE,表示后面有 Format chunk 和 Data chunk。

(2) Format chunk

ID 固定死为 "fmt "(最后有个空格)
Size 表示该区块,后面内容的长度 2+2+4+4+2+2 = 16
AudioFormat 表示音频格式,如果是 PCM,则填入 1
NumChannels 表示声道数
SampleRate 表示采样率
ByteRate 每秒数据字节数 SampleRateNumChannelsBitsPerSample/8
BlockAlign 每次采样产生的字节数 NumChannels*BitPerSample/8
BitsPerSample 一个声道一次采样的位数

(3) Data chunk

ID 固定死为 data
Size 表示数据的长度(字节),N = ByteRate*seconds
Data 音频数据

所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

大端符合人阅读常识。比如 1234,其中 1是数据的高位,4是数据的地位。如果用大端存储,则存在内存中为 1234;如果用小段存储,则存在内存中未 4321。

具体怎么解析看下面的内容

二、wav文件解析及数据的播放

2.1 wav头解析

typedef  struct{
    char                chunkID[4];//大端  “RIFF”    4952    4646 0x52494646
    uint32_t        size;//4144    0000 文件大小  +8 是总文件大小  从下个地址开始到文件末尾的总字节数
    char                type[4];//大端  'WAVE'    4157    4556   0x57415645
}HeaderChunk;
typedef struct {
    char                         id[4];//大端     'fmt  '   波形格式  6d66    2074          0x666d7420
    //Size 表示该区块,后面内容的长度 2+2+4+4+2+2 = 16
    uint32_t                size;//小端     格式大小:16     0010    0000  = 0000 0010  
    uint16_t                AudioFormat;//小端    0001    AudioFormat 表示音频格式,如果是 PCM,则填入 1
    uint16_t                NumChannels;//小端           单声道      0001
    uint32_t                SampleRate;//小端               采样率       1f40    0000 = 0x1f40 =8000
    // 3e80    0000 = 16000
    uint32_t                ByteRate;//小端   每秒数据字节数 SampleRateNumChannelsBitsPerSample/8
   
    uint16_t                BlockAlign;//小端     每次采样产生的字节数     0002 =2
    uint16_t                BitsPerSample;//小端  位深   一个声道一次采样的位数
} FormatChunk;

typedef struct {
    char     id[4];//数据标识符         ID 固定死为 data     494c    5453
    uint32_t size;//data总数据长度     0298    0000   这个结果也不对啊
} DataChunk;

后面跟的数据就是我的wav文件的实际数据。在linux系统下,可以用如下命令将wav文件导入到txt中查看:

hexdump -x my.wav >a.txt

截取部分展示如下:

0000000    4952    4646    4144    0000    4157    4556    6d66    2074
0000010    0010    0000    0001    0001    1f40    0000    3e80    0000
0000020    0002    0010    494c    5453    0298    0000    4e49    4f46
0000030    4149    5452    000a    0000    9ee6    e497    8abf    9de6
0000040    00b0    4349    544d    022f    0000    3631    2033    656b
0000050    2879    6f44    276e    2074    6f6d    6964    7966    3a29
0000060    364c    4634    3355    3457    7859    3358    465a    6d54
0000070    5a62    382b    5a2f    5536    6f44    3137    5167    4336
0000080    446c    4f46    536d    4636    566b    6768    5872    6666
0000090    7530    7562    7854    7870    7943    586b    6973    5463
00000a0    2f4a    4245    5573    4930    7875    594f    5a58    5167
00000b0    3365    326f    3542    2f37    3378    3454    5a4d    4744
00000c0    4b7a    5a47    6232    7a35    5558    6b41    784e    5941
00000d0    574d    4d5a    6d6a    4d70    4c51    326b    3753    6737
00000e0    534b    4145    766b    6531    6179    5047    6c4e    2b49
00000f0    5748    5233    4474    7038    4839    6175    2b79    3764
0000100    4d32    6874    317a    7a35    5433    3465    4e61    7935
0000110    7469    457a    3070    642f    3378    7342    6d45    3056
0000120    7166    5853    5343    3475    7737    505a    702f    7076
0000130    4165    7232    694f    792f    384e    6175    4952    7141
0000140    4950    364d    3162    726a    706f    3541    5277    366b

头的解析

FILE* fp = fopen("my.wav", "rb");
    if (!fp) {
        printf("Failed to open file!\n");
        return -1;
    }
    HeaderChunk header;
    fread(&header, sizeof(header), 1, fp);
    FormatChunk fmt;
    fread(&fmt, sizeof(fmt), 1, fp);
    DataChunk data;
    fread(&data, sizeof(data), 1, fp);
    printf("标识ID:%c%c%c%c\n",header.chunkID[0],header.chunkID[1],header.chunkID[2],header.chunkID[3]);
    printf("文件总长:%d\n",header.size + 8);//文件总长
    printf("Type :%c%c%c%c\n",header.type[0],header.type[1],header.type[2],header.type[3]);
    printf("ID :%c%c%c%c\n",fmt.id[0],fmt.id[1],fmt.id[2],fmt.id[3]);
    printf("Size:%d\n",fmt.size);//Size 表示该区块,后面内容的长度 2+2+4+4+2+2 = 16
    printf("音频格式:%d\n",fmt.AudioFormat);
    printf("声道:%d\n",fmt.NumChannels);
    printf("采样率:%d\n",fmt.SampleRate);
    printf("每秒数据字节数:%d\n",fmt.ByteRate);
    printf("每次采样产生的字节数:%d\n",fmt.BlockAlign);
    printf("一个声道一次采样的位数:%d\n",fmt.BitsPerSample);
    printf("%c%c%c%c\n",data.id[0],data.id[1],data.id[2],data.id[3]);
    printf("%d\n",data.size);

2.2 实际数据的解析并将数组写入文件中

     int32_t length =header.size + 8 - 44;
    //length = fmt.ByteRate;
    FILE* fp1 = fopen("data.txt", "w");
    int16_t* audioData = (int16_t*)malloc(length);
    fread(audioData, length, 1, fp);
    /* for (uint32_t i = 0; i < (header.size/2); ++i) {
       // fprintf(fp1, "0x%04x, ", audioData[i]);
       //printf("0x%02x", audioData[i]);
    }*/
    fprintf(fp1, "const int8_t AUDIO_DATA[] = {\n");
    for (uint32_t i = 0; i <length/2; ++i) {
        fprintf(fp1, "0x%04x, ", audioData[i]);
    }

    fprintf(fp1, "\n};\n\n");
    free(audioData);
    fclose(fp);
    return 0;

注意,这里的数据长度是header.size + 8 - 44;加8是:RIFF chunk块的 ID 和 Size 的长度,header.size + 8 = 文件总大小,44是wav头的大小:4+4+4+4+4+2+2+4+4+2+2+4+4

直接保存到16位数组中,结果如下:

 解析的程序:

//https://blog.csdn.net/qq_45893491/article/details/123459678
//WAV文件格式解析及生成
//https://blog.csdn.net/welbell_uplooking/article/details/82835390
// 查看Wav数据:      hexdump -x my.wav >a.txt
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <fcntl.h>
    
    //         
   //            
typedef  struct{
    char                chunkID[4];//大端  “RIFF”    4952    4646 0x52494646
    uint32_t        size;//4144    0000 文件大小  +8 是总文件大小  从下个地址开始到文件末尾的总字节数
    char                type[4];//大端  'WAVE'    4157    4556   0x57415645
}HeaderChunk;
typedef struct {
    char                         id[4];//大端     'fmt  '   波形格式  6d66    2074          0x666d7420
    //Size 表示该区块,后面内容的长度 2+2+4+4+2+2 = 16
    uint32_t                size;//小端     格式大小:16     0010    0000  = 0000 0010  
    uint16_t                AudioFormat;//小端    0001    AudioFormat 表示音频格式,如果是 PCM,则填入 1
    uint16_t                NumChannels;//小端           单声道      0001
    uint32_t                SampleRate;//小端               采样率       1f40    0000 = 0x1f40 =8000
    // 3e80    0000 = 16000
    uint32_t                ByteRate;//小端   每秒数据字节数 SampleRateNumChannelsBitsPerSample/8
   
    uint16_t                BlockAlign;//小端     每次采样产生的字节数     0002 =2
    uint16_t                BitsPerSample;//小端  位深   一个声道一次采样的位数
} FormatChunk;

typedef struct {
    char     id[4];//数据标识符         ID 固定死为 data     494c    5453
    uint32_t size;//data总数据长度     0298    0000   这个结果也不对啊
} DataChunk;

int main()
{
    FILE* fp = fopen("my.wav", "rb");
    if (!fp) {
        printf("Failed to open file!\n");
        return -1;
    }
    HeaderChunk header;
    fread(&header, sizeof(header), 1, fp);
    FormatChunk fmt;
    fread(&fmt, sizeof(fmt), 1, fp);
    DataChunk data;
    fread(&data, sizeof(data), 1, fp);
    printf("标识ID:%c%c%c%c\n",header.chunkID[0],header.chunkID[1],header.chunkID[2],header.chunkID[3]);
    printf("文件总长:%d\n",header.size + 8);//文件总长
    printf("Type :%c%c%c%c\n",header.type[0],header.type[1],header.type[2],header.type[3]);
    printf("ID :%c%c%c%c\n",fmt.id[0],fmt.id[1],fmt.id[2],fmt.id[3]);
    printf("Size:%d\n",fmt.size);//Size 表示该区块,后面内容的长度 2+2+4+4+2+2 = 16
    printf("音频格式:%d\n",fmt.AudioFormat);
    printf("声道:%d\n",fmt.NumChannels);
    printf("采样率:%d\n",fmt.SampleRate);
    printf("每秒数据字节数:%d\n",fmt.ByteRate);
    printf("每次采样产生的字节数:%d\n",fmt.BlockAlign);
    printf("一个声道一次采样的位数:%d\n",fmt.BitsPerSample);
    printf("%c%c%c%c\n",data.id[0],data.id[1],data.id[2],data.id[3]);
    printf("%d\n",data.size);
    int32_t length =header.size + 8 - 44;
    //length = fmt.ByteRate;
    FILE* fp1 = fopen("data.txt", "w");
    int16_t* audioData = (int16_t*)malloc(length);
    fread(audioData, length, 1, fp);
    /* for (uint32_t i = 0; i < (header.size/2); ++i) {
       // fprintf(fp1, "0x%04x, ", audioData[i]);
       //printf("0x%02x", audioData[i]);
    }*/
    fprintf(fp1, "const int8_t AUDIO_DATA[] = {\n");
    for (uint32_t i = 0; i <length/2; ++i) {
        fprintf(fp1, "0x%04x, ", audioData[i]);
    }

    fprintf(fp1, "\n};\n\n");
    free(audioData);
    fclose(fp);
    return 0;
}

2.3 播放

        这里要注意算时间,我的音频数据是8000采样率,单声道,有符号S16格式的,故而1s数据量有8000*1*2=16000个字节数据,所以播放也要1s播放16000个数据。因为是12位的DAC,所以我把16位数据进行缩放一下,把他缩放到12位以内,所以一秒播放8000个样本,每个样本还是2字节。DAC播放周期就是:1/8000

注意这一句的转换:

(audio_data[i]+0x8000)>>4&0xfff0

+0x8000是把有符号转化为无符号:-32768+0x8000 = 0,其他存储格式的根据这个转,>>4是把0 -65536缩放到0-4096 ,&0xfff0是高4位补0

/********************************** (C) COPYRIGHT *******************************
* File Name          : main.c
* Author             : WCH
* Version            : V1.0.0
* Date               : 2019/10/15
* Description        : Main program body.
*******************************************************************************/
#include "debug.h"


void Dac_Init(void);
void TIM2_Int_Init(u16 arr, u16 psc);

const u16 audio_data[] ={
0x4e49, 0x4f46, 0x4149, 0x5452, 0x000a, 0x0000, 0x9ee6, 0xe497, 0x8abf, 0x9de6, 0x00b0, 0x4349, 0x544d, 0x022f, 0x0000, 0x3631, 0x2033, 0x656b, 0x2879, 0x6f44, 0x276e, 0x2074, 0x6f6d, 0x6964, 0x7966, 0x3a29, 0x364c, 0x4634, 0x3355, 0x3457, 0x7859, 0x3358, 0x465a, 0x6d54, 0x5a62, 0x382b, 0x5a2f, 0x5536, 0x6f44, 0x3137, 0x5167, 0x4336, 0x446c, 0x4f46, 0x536d, 0x4636, 0x566b, 0x6768, 0x5872, 0x6666, 0x7530, 0x7562, 0x7854, 0x7870, 0x7943, 0x586b, 0x6973, 0x5463, 0x2f4a, 0x4245, 0x5573, 0x4930, 0x7875, 0x594f, 0x5a58, 0x5167, 0x3365, 0x326f, 0x3542, 0x2f37, 0x3378, 0x3454, 0x5a4d, 0x4744, 0x4b7a, 0x5a47, 0x6232, 0x7a35, 0x5558, 0x6b41, 0x784e, 0x5941, 0x574d, 0x4d5a, 0x6d6a, 0x4d70, 0x4c51, 0x326b, 0x3753, 0x6737, 0x534b, 0x4145, 0x766b, 0x6531, 0x6179, 0x5047, 0x6c4e, 0x2b49, 0x5748, 0x5233, 0x4474, 0x7038, 0x4839, 0x6175, 0x2b79, 0x3764, 0x4d32, 0x6874, 0x317a, 0x7a35, 0x5433, 0x3465, 0x4e61, 0x7935, 0x7469, 0x457a, 0x3070, 0x642f, 0x3378, 0x7342, 0x6d45, 0x3056, 0x7166, 0x5853, 0x5343, 0x3475, 0x7737, 0x505a, 0x702f, 0x7076, 0x4165, 0x7232, 0x694f, 0x792f, 0x384e, 0x6175, 0x4952, 0x7141, 0x4950, 0x364d, 0x3162, 0x726a, 0x706f, 0x3541, 0x5277, 0x366b, 0x6855, 0x7850, 0x705a, 0x3868, 0x7343, 0x4a51, 0x4a2f, 0x7138, 0x4567, 0x7965, 0x7079, 0x5363, 0x3064, 0x7248, 0x7951, 0x5131, 0x4a7a, 0x2b44, 0x4179, 0x6157, 0x644c, 0x4367, 0x316f, 0x5158, 0x3979, 0x6c7a, 0x794e, 0x7957, 0x5735, 0x736d, 0x5565, 0x2b4b, 0x6659, 0x3554, 0x394a, 0x6434, 0x4d6e, 0x6a79, 0x4a66, 0x554e, 0x624e, 0x5255, 0x6b57, 0x7932, 0x574b, 0x5256, 0x2f37, 0x494e, 0x524e, 0x6763, 0x575a, 0x4253, 0x3945, 0x4245, 0x395a, 0x7375, 0x5135, 0x4366, 0x3958, 0x6442, 0x6177, 0x6364, 0x6f6a, 0x6179, 0x7778, 0x4b2b, 0x466a, 0x7364, 0x794c, 0x564f, 0x4a75, 0x376d, 0x5231, 0x6b48, 0x6e56, 0x6b66, 0x6b2f, 0x5351, 0x6f66, 0x6539, 0x7649, 0x4569, 0x7444, 0x554a, 0x4c47, 0x784b, 0x5a2b, 0x772f, 0x3167, 0x2f64, 0x3837, 0x5078, 0x7065, 0x5770, 0x3834, 0x725a, 0x3965, 0x6946, 0x6374, 0x582b, 0x784b, 0x4c79, 0x3546, 0x594d, 0x4b6b, 0x4357, 0x476a, 0x6e70, 0x6161, 0x456d, 0x6b44, 0x5651, 0x595a, 0x6e56, 0x2f4a, 0x4b42, 0x747a, 0x6e4d, 0x5231, 0x3244, 0x2f36, 0x4642, 0x4734, 0x6533, 0x4f35, 0x3474, 0x7354, 0x7871, 0x4870, 0x5030, 0x534c, 0x7038, 0x4c61, 0x7939, 0x6d75, 0x304f, 0x5639, 0x6157, 0x6970, 0x7331, 0x4a72, 0x3345, 0x4764, 0x556f, 0x4b5a, 0x6579, 0x6761, 0x3d3d, 0x0000, 0x4e49, 0x4d41, 0x000a, 0x0000, 0xbee7, 0xe48e, 0xbaba, 0xb1e9, 0x00bc, 0x5049, 0x4452, 0x000d, 0x0000, 0xace7, 0xe4ac, 0x8cba, 0xa4e5, 0xe5a9, 0x82a0, 0x0000, 0x5049, 0x5452, 0x0003, 0x0000, 0x3231, 0x0000, 0x5349, 0x5446, 0x000e, 0x0000, 0x614c, 0x6676, 0x3835, 0x322e, 0x2e39, 0x3031, 0x0030, 0x6164, 0x6174, 0x3e80, 0x0000, 0x0299, 0x005a, 0xfef2, 0x0048, 0xff89, 0xffb1, 0x007a, 0x0112, 0xfe00, 0x027b, 0xff93, 0x0056, 0xffc6, 0xfff9, 0xfe1d, 0x0135, 0xfeef, 0xff38, 0x0184, 0xfbe5, 0x0363, 0xff3c, 0x01f2, 0xfe10, 0x0278, 0xfd64, 0x033b, 0xffb9, 0x0127, 0x0045, 0x0006, 0xffd0, 0x0149, 0xfe6d, 0x0030, 0xff45, 0xfed9, 0xfe95, 0x00be, 0xfd50, 0x0360, 0xfda2, 0x030d, 0xfe87, 0x0286, 0xfe86, 0x0099, 0xfe40, 0x00a7, 0x0083, 0xff33, 0x0221, 0xfe0d, 0x0243, 0xfcfd, 0x0218, 0xfd17, 0x0190, 0xfe44, 0x0223, 0xfea7, 0x0086, 0x015d, 0xff75, 0x00b5, 0xfec1, 0x0065, 0x00c3, 0xff5a, 0xff94, 0xff9c, 0xffcd, 0xffd6, 0x01ca, 0xfe61, 0x0150, 0xfdfd, 0xffc4, 0xfebd, 0xff4e, 0x0038, 0x00d2, 0x00d7, 0x0117, 0x00c2, 0xfe84, 0x010c, 0xff6f, 0xfe5d, 0x0169, 0x0043, 0x002f, 0x0101, 0x0098, 0x0059, 0x000e, 0x003b, 0xfdd6, 0x01a9, 0xfcc6, 0x01d7, 0xfd47, 0x01d5, 0xfd67, 0x0368, 0xfd8b, 0x02d0, 0xfd76, 0x037c, 0xfe1f, 0x006a, 0xff2f, 0x003b, 0x009f, 0x01ca, 0xfee2, 0x0161, 0xfd45, 0x0021, 0xff2e, 0xfefa, 0xffe8, 0xfff7, 0x0221, 0x0061, 0x0330, 0xfe38, 0xffa6, 0xfe57, 0x00de, 0xff54, 0x0103, 0xff08, 0x0151, 0xffae, 0x006d, 0x0067, 0xfff2, 0xfe32, 0x00ef, 0xfd9d, 0x00ad, 0xfdae, 0x0110, 0x00f8, 0x0022, 0x034d, 0xff07, 0x0112, 0xff52, 0xff9b, 0xffbf, 0xffa0, 0xff2f, 0x012b, 0x004a, 0x0052, 0xff37, 0x000d, 0xfe50, 0x00d7, 0xff25, 0xff3e, 0x011c, 0x0150, 0xff5c, 0x0208, 0xfd86, 0x003c, 0xfe94, 0xffd7, 0xfe57, 0x0155, 0xfe93, 0x01f0, 0x0181, 0xffe2, 0x0157, 0x0032, 0x0063, 0xfe7e, 0xff82, 0xfe7a, 0xffa5, 0x0040, 0xffb3, 0x010f, 0x01c8, 0xffb7, 0x0231, 0xffdc, 0xffcf, 0xfef5, 0x00de, 0xfe5a, 0x0117, 0x0012, 0xffb4, 0xff80, 0x0018, 0xfd16, 0x00ef, 0xfd51, 0x01f9, 0xfff7, 0x01cc, 0xfff8, 0x0210, 0xfd84, 0x0129, 0xffc8, 0xfff3, 0xff8f, 0xfffc, 0xff8c, 0x0045, 0x00f1, 0xff9c, 0xffbe, 0x018a, 0xff6b, 0xffdf, 0xfee5, 0xfef3, 0x0005, 0x005b, 0xff61, 0x0193, 0x0124, 0x009f, 0xff93, 0xffb3, 0x0047, 0xfe2c, 0x006d, 0xfe60, 0x00c2, 0xfee4, 0x00c7, 0xfec9, 0x01de, 0xfc60, 0x0364, 0xfea1, 0x0142, 0x00bc, 0x0094, 0xffca, 0x00d4, 0xfeab, 0xffd0, 0xfea5, 0xff91, 0x00fb, 0x000e, 0x0087, 0x00e8, 0x0112, 0xfefa, 0x029e, 0xfee0, 0x002f, 0xff1a, 0xff2c, 0xfd71, 0x016a, 0xfbf4, 0x03f7, 0xfdf8, 0x039b, 0x0047, 0x01c9, 0xfdeb, 0x01c4, 0xfdbc, 0x024e, 0xfe52, 0x024e, 0xfeec, 0xff16, 0xffda, 0xff5a, 0xfea8, 0xff4b, 0x00c7, 0x01b3, 0x002d, 0x015c, 0xffcd, 0x016a, 0xff95, 0xff55, 0x00f8, 0xfd97, 0x00a9, 0xfe73, 0xff81, 0x00a3, 0xffc8, 0xff06, 0x02eb, 0xfd80, 0x01ea, 0xfe89, 0xff70, 0xff5b, 0x00cf, 0xff9d, 0x0262, 0xff90, 0x015b, 0xfef1, 0x003d, 0xff4e, 0xff7a, 0xff08, 0xff1c, 0x00e3, 0x0020, 0x0177, 0xfff4, 0xff69, 0x00c0, 0xff8c, 0xfee9, 0xfff5, 0xfee3, 0x026a, 0xfee6, 0x00da, 0x000a, 0x008c, 0xfcd4, 0x02bd, 0xfd24, 0x0226, 0xfe90, 0x003e, 0x00e6, 0x0097, 0x0116, 0x00c9, 0x003d, 0x010e, 0xfcce, 0x003b, 0xfd20, 0x00f1, 0xfd98, 0x03c5, 0x0081, 0x010c, 0x00cf, 0x0142, 0xfe9a, 0x0029, 0xfe8c, 0xffa8, 0x014c, 0xfee4, 0x008c, 0xfe4e, 0x008e, 0xfec8, 0x0012, 0xfd8e, 0x02f2, 0xfd99, 0x0411, 0xfe02, 0x0113, 0x00ea, 0x00c4, 0x0054, 0x00a4, 0xfe08, 0x011b, 0xfc78, 0x014d, 0xfd59, 0x033c, 0xfd1c, 0x036f, 0x0071, 0x00fc, 0xfe00, 0xff34, 0xff06, 0x01e9, 0xff12, 0x004b, 0x0122, 0x0015, 0x0142, 0xfe7f, 0xfff6, 0xfdae, 0x0062, 0xfea6, 0x00f0, 0xff1f, 0x01a4, 0xff12, 0x01db, 0x00c3, 0xfee0, 0x0149, 0xff13, 0x0020, 0x006f, 0xfdff, 0x0193, 0xfd80, 0x023e, 0xffd8, 0x008a, 0xff81, 0x0073, 0x00ff, 0xfdc7, 0x0270, 0xfef6, 0x0279, 0xfec3, 0x01cb, 0xfdb5, 0x0118, 0xfb8e, 0x02e4, 0xfd1c, 0x013b, 0xff5f, 0x02a4, 0xff86, 0x01fe, 0xfd6a, 0x026f, 0xff0e, 0xffc8, 0x00ac, 0xfe52, 0x005d, 0xff9b, 0x0075, 0xfffc, 0xff6e, 0xfff7, 0x0026, 0x0142, 0xff6b, 0xffe6, 0x00ff, 0xffe3, 0x0182, 0xfe5e, 0x01ec, 0xfd53, 0x01c7, 0xfde6, 0x0112, 0xfc8a, 0x03e1, 0xfc2d, 0x0297, 0xff65, 0x020e, 0xfe01, 0x029b, 0xfaed, 0x0462, 0xfd9c, 0x01fc, 0xffb2, 0x00c0, 0xff05, 0x016e, 0xfdc3, 0xff89, 0xff54, 0x0092, 0xfdec, 0x0309, 0xff61, 0x00e5, 0xff92, 0x003c, 0x0104, 0x0012, 0xfe62, 0x0048, 0xff99, 0xfd95, 0x02d8, 0xfca5, 0x02a4, 0xfd06, 0x0474, 0xfe5c, 0x00a8, 0xff5a, 0x0127, 0xfe7c, 0x035b, 0xfe8e, 0x014a, 0xff27, 0x0079, 0xfeb3, 0xff8c, 0xfd30, 0x00ee, 0x000f, 0x00b3, 0x0158, 0x00fb, 0x0003, 0x003a, 0x0247, 0xfc89, 0x0276, 0xfc68, 0x0221, 0xfd70, 0x01a5, 0xfe3e, 0x01c6, 0xfcc2, 0x0357, 0xfe16, 0xffef, 0xffb0, 0x023e, 0xfd5f, 0x036d, 0xfe6c, 0x03aa, 0xfce9, 0x02ad, 0xfd58, 0x0146, 0xfd7a, 0x00c6, 0xfe8f, 0x0042, 0x0026, 0x0156, 0x018d, 0xff42, 0xfffd, 0xfee6, 0xff74, 0xfff2, 0x00ac, 0xfe91, 0x01b7, 0x0025, 0x0060, 0xfed7, 0x0042, 0xfe82, 0xffcf, 0x0064, 0x0058, 0xfff1, 0xfeea, 0x023e, 0xff26, 0x0217, 0xffe6, 0x003c, 0xff43, 0xff24, 0x0020, 0xfe5b, 0x0080, 0xff30, 0x02bf, 0xff27, 0x0116, 0xff71, 0xffba, 0xffcb, 0x0058, 0xff3b, 0x00d8, 0x0045, 0x0076, 0x00eb, 0xfe32, 0xff3d, 0xfe89, 0x00b1, 0xfe98, 0x0174, 0xfdc7, 0x03ce, 0x00ca, 0x014f, 0xffda, 0x0284, 0xfdfb, 0x0247, 0xfd07, 0x00e1, 0xfcf3, 0x010f, 0xfecf, 0x0101, 0x0054, 0x0110, 0xfe85, 0x0248, 0xfe9e, 0x0026, 0xff4c, 0xffe3, 0x0060, 0xffdd, 0x0088, 0xfe38, 0x0204, 0xfd02, 0x0177, 0xfe12, 0x018b, 0xfdc5, 0x04a4, 0xfd6b, 0x02ab, 0xfecd, 0x0056, 0xff90, 0xff1e, 0x002a, 0xff33, 0x0013, 0x00be, 0xffd4, 0x016e, 0xfec8, 0x01dd, 0xff15, 0x013d, 0xfdf9, 0xffea, 0xfe95, 0xff34, 0x012d, 0xff88, 0x00d2, 0x012c, 0xff96, 0xffbe, 0x0010, 0xff11, 0xffcb, 0x00eb, 0xfec7, 0x0094, 0x004a, 0xff75, 0x010f, 0xfec7, 0x015b, 0x0028, 0xff73, 0x0146, 0x00e5, 0xfeab, 0x019a, 0xff89, 0xfe2f, 0x00ae, 0xfe18, 0xfe51, 0x012e, 0x003b, 0xfe7c, 0x0416, 0xfd54, 0x03cb, 0xffa1, 0x01ec, 0xfc59, 0x0398, 0xfaf1, 0x01fa, 0xfe09, 0x000c, 0xff3b, 0x01ab, 0x001a, 0xffba, 0x01cb, 0xfe35, 0x018c, 0xff0a, 0x013f, 0xfee7, 0x0120, 0xfe36, 0x008a, 0x00cc, 0xff19, 0x0086, 0x002a, 0xfebb, 0x0212, 0x0065, 0xff1c, 0x00ca, 0x007a, 0xfcf4, 0x0139, 0xfe97, 0xfd71, 0x0127, 0xffcf, 0x000f, 0x0095, 0x0227, 0xfe67, 0x042b, 0xfdd9, 0xffc3, 0x0039, 0xfe63, 0xfee0, 0xfff9, 0x0044, 0x0050, 0x0269, 0xfedb, 0x013b, 0xfef1, 0x0248, 0xfc91, 0x037c, 0xfb81, 0x028e, 0xfdae, 0x0311, 0xfc5b, 0x0322, 0xfe04, 0x019d, 0x006f, 0xffaa, 0x0136, 0x00bc, 0x0085, 0xff51, 0x0153, 0xfd1e, 0xff62, 0xff57, 0xfd5b, 0x022f, 0xfeb3, 0x0138, 0x0049, 0x02f0, 0xff38, 0x03e4, 0xfd46, 0x0328, 0xfc11, 0x01d6, 0xfce0, 0x00e0, 0xfe5b, 0x001b, 0x01a0, 0x004a, 0xffee, 0xff2d, 0xfffc, 0xfec9, 0x0058, 0xfc9c, 0xff86, 0xffe4, 0x003e, 0x020b, 0xff8e, 0x024f, 0xffc8, 0x0302, 0xfd14, 0x038b, 0xff67, 0x0138, 0x011e, 0xfe9a, 0x01f1, 0x002e, 0x021d, 0xfd9b, 0x01a4, 0xfc7a, 0x0562, 0xfdb7, 0x0320, 0xfd7a, 0xfe63, 0xfc9f, 0xffd4, 0xfd52, 0xfde8, 0xfcc2, 0xfd76, 0xfdf0, 0xff81, 0xffee, 0xfd80, 0xffd4, 0xff80, 0x006a, 0xff3b, 0x0336, 0xfe94, 0x02a9, 0x02a5, 0x0429, 0x02c4, 0x0425, 0xff01, 0x027e, 0x00d3, 0x0182, 0x0403, 0x0153, 0x01bd, 0x00fd, 0xfeb4, 0xff90, 0xfcfe, 0x019f, 0xfe71, 0x02e8, 0xfb47, 0x021e, 0xfedf, 0x0264, 0xfec2, 0xfd26, 0xfd4f, 0xfe96, 0x017a, 0xf9e5, 0xff81, 0xfb8a, 0xffb0, 0xfe1e, 0x02a6, 0xfe2d, 0xfe28, 0xfae2, 0x00c6, 0xfe2e, 0x004e, 0xfe0e, 0x0088, 0x021c, 0x02b2, 0xff72, 0x0070, 0xff49, 0x00d1, 0x02e3, 0x02c8, 0x01ef, 0x012b, 0xff7d, 0x00e8, 0xff31, 0xff4c, 0xff5d, 0x00ba, 0x0092, 0x02d6, 0x016b, 0x01ec, 0x047b, 0x02d7, 0x04f9, 0x0084, 0xfea2, 0x0205, 0x0248, 0xffb1, 0x0340, 0xfddf, 0xfe15, 0xfd0b, 0xfe6a, 0xfdd8, 0xfdeb, 0xfcb9, 0xfb1e, 0xfe34, 0x004b, 0xfcab, 0xfc47, 0xfeba, 0xfe93, 0xff45, 0xfcc8, 0xfe50, 0xff83, 0x0097, 0xffb4, 0x00f4, 0xfea4, 0xff55, 0x0025, 0x042c, 0x00c7, 0x0272, 0x01d9, 0x04ae, 0x0206, 0x03bf, 0xfec8, 0x041c, 0xfee7, 0x0838, 0xff31, 0x02f3, 0xff3a, 0x00d1, 0x013b, 0x038d, 0x0059, 0xfceb, 0xfe4a, 0xfdae, 0x00b9, 0xfce5, 0xffc1, 0xfabb, 0xfec8, 0xfffe, 0xfd3b, 0xfdd6, 0xfd11, 0xfdad, 0xfe35, 0xffaf, 0xff14, 0xff65, 0x017f, 0xff9a, 0x0247, 0xfe55, 0xffc6, 0xfcef, 0x00e8, 0xfed5, 0x0093, 0xfe6c, 0x02b5, 0x0320, 0xfed1, 0x0257, 0xffb3, 0x0274, 0x0388, 0x00c5, 0x00a9, 0x00ec, 0xfe1c, 0x01c8, 0x014a, 0x010e, 0xfdd3, 0xffce, 0xffe1, 0x0502, 0xfe80, 0x04ad, 0xff2f, 0x01be, 0xff3a, 0x0337, 0xffde, 0x03be, 0x00d3, 0xfea9, 0xfe5f, 0xfec7, 0xfd53, 0x0011, 0xff44, 0xfe40, 0x00a7, 0xf9f3, 0xff78, 0xfd02, 0xfd66, 0xfd92, 0xfaad, 0xfedc, 0xfe29, 0x011f, 0xfdd5, 0x019e, 0xff0e, 0xffd5, 0xffb9, 0xfeeb, 0x0141, 0xff4e, 0x0465, 0x0142, 0x06a2, 0xff48, 0x0483, 0xfd6e, 0x05a4, 0xfe59, 0x016e, 0x0192, 0x0143, 0x0271, 0x00fd, 0x0288, 0xfe9f, 0x0267, 0xfd91, 0x0170, 0xff28, 0xfd3f, 0x01d9, 0x0045, 0x0382, 0xfe57, 0x0045, 0xfa7b, 0x018e, 0xfab8, 0x006c, 0xfbbf, 0xfcfb, 0xfcee, 0x006b, 0x01fb, 0x0179, 0x02fe, 0xfefa, 0x0120, 0xfe2f, 0xffd4, 0xfb2b, 0xfee9, 0xfe81, 0x00cc, 0xfd58, 0xfe5d, 0xfc08, 0xfd1c, 0x009d, 0xfccb, 0x03b1, 0xfe39, 0x02eb, 0xffd1, 0x04f7, 0x00d8, 0x030b, 0x00c8, 0xfd06, 0x029c, 0x0013, 0x0431, 0x02b7, 0x08ab, 0x048e, 0x05da, 0x02ba, 0x02c5, 0x00c4, 0x0185, 0x02d9, 0xfd7a, 0xff54, 0xfc32, 0x0438, 0xff39, 0x028c, 0xfd5a, 0xfcac, 0xfcba, 0xfd16, 0xfa03, 0xfcc6, 0xfec1, 0xfb6c, 0xfc2d, 0xfa3e, 0xfa00, 0xfae0, 0xfda2, 0xfb78, 0xfedb, 0xfed0, 0xfeb8, 0x0187, 0x0323, 0x0451, 0x05e1, 0x02fb, 0x0247, 0x0278, 0x03df, 0x02f1, 0x0449, 0x0402, 0x0491, 0x01b0, 0x0560, 0x000f, 0x0025, 0xfe0a, 0x0090, 0xffd4, 0xfece, 0xfc5a, 0xffbc, 0x012a, 0x0105, 0xff9f, 0xfd23, 0xf99d, 0xfbfb, 0xfc2f, 0xfb1b, 0xfda7, 0xf88d, 0x001f, 0xfe10, 0x00a9, 0xfd70, 0x0219, 0xfd6c, 0x02f1, 0x0070, 0xfd49, 0x034b, 0x0040, 0x0672, 0x0559, 0x067a, 0x00f9, 0x026c, 0xff67, 0x0171, 0x018a, 0x04d8, 0x022b, 0x03a6, 0x0351, 0x03ef, 0xffea, 0xfc43, 0xfb61, 0xfd0f, 0xfe32, 0xfb35, 0xfe12, 0x01c5, 0xfdf6, 0x0601, 0xfe58, 0xfca5, 0xfbde, 0xff09, 0xfd6b, 0x03e1, 0xfd10, 0x00e8, 0x014d, 0x022d, 0x0223, 0x0059, 0xfbfc, 0x003e, 0xfec4, 0xfb26, 0x0252, 0xff6d, 0x0354, 0x01d4, 0xfeed, 0xfe02, 0xfcc5, 0xfcb6, 0xfcc3, 0x009f, 0xfa0d, 0xff57, 0xfb50, 0x0194, 0xff76, 0xffcc, 0xff40, 0x0057, 0xfecf, 0xfedd, 0xfe8a, 0x005b, 0x0603, 0xffc3, 0x04fb, 0x0330, 0x0157, 0x0045, 0x032e, 0x00ae, 0x0506, 0xff93, 0x0375, 0x065d, 0x06a4, 0x08e2, 0x02af, 0x0283, 0x0211, 0x0298, 0x0067, 0xff83, 0x0408, 0xffbc, 0x07e5, 0xff81, 0xfef7, 0xf79a, 0xf9dd, 0xf9c4, 0xfd6c, 0xfa41, 0xfeaf, 0xfa03, 0xfac7, 0xfd09, 0xf56f, 0xfaed, 0xf5c6, 0xfce0, 0xf9ca, 0xfdd6, 0xfa1f, 0x049a, 0x04d7, 0x048f, 0x0430, 0x0194, 0x01e0, 0x0101, 0x011e, 0x008b, 0x0028, 0x01fb, 0x0123, 0x071d, 0x007a, 0x01d6, 0x0040, 0x0485, 0x04db, 0x001d, 0x032f, 0x049c, 0x0120, 0x022b, 0xfece, 0xfe2a, 0xfd4a, 0xfda7, 0xffe8, 0xfaff, 0xfe5c, 0xfb16, 0xfe48, 0xfc1d, 0xfd58, 0xf8aa, 0xff82, 0xf778, 0xfd86, 0xfae8, 0xff32, 0x00c0, 0x04bc, 0x0600, 0x066a, 0x0824, 0x02b7, 0x05d3, 0x0748, 0x0532, 0x04a7, 0x05f7, 0x02f8, 0x06a2, 0x0a0f, 0x0706, 0x051d, 0xfcf0, 0x02ef, 0xfda7, 0xfed8, 0xfd17, 0xff26, 0xfc21, 0xff00, 0xfb88, 0xf97f, 0xf5ed, 0xf841, 0xf8b4, 0xfbfe, 0xfbfa, 0xf8b3, 0xfc56, 0x0079, 0x00d2, 0xfd31, 0xfcac, 0xf9a5, 0xfc05, 0xfb6e, 0xfdaa, 0x0174, 0x0084, 0x018f, 0x0656, 0x058c, 0xff4f, 0x01f5, 0x033b, 0xff61, 0x0724, 0x03a6, 0x022e, 0x04a2, 0x005b, 0x0347, 0xfd18, 0xfa70, 0x0181, 0x0012, 0xfbeb, 0x01c7, 0xff46, 0xfe4e, 0x0087, 0xfcb6, 0xf92f, 0xfb34, 0xf862, 0xfe75, 0xfb32, 0x00c2, 0x0169, 0x0577, 0x0335, 0x090a, 0x0446, 0x03a7, 0x088c, 0x023a, 0x075f, 0x04b9, 0x0a6a, 0x08b8, 0x0835, 0x0736, 0x06f3, 0x0048, 0x052f, 0xfd6e, 0x004b, 0xfd87, 0xfc89, 0xfb25, 0xfeda, 0xf786, 0xfaa1, 0xf7ed, 0xf7c5, 0xf5cf, 0xf6ba, 0xf77e, 0xfecb, 0xfa70, 0xfc62, 0xffa1, 0xfd88, 0xfce3, 0x002f, 0xfa1c, 0xfccf, 0xfec0, 0x00bd, 0x016c, 0x025d, 0x04c0, 0x0271, 0x0199, 0xff6b, 0x052f, 0xfd2d, 0x04b1, 0x03ba, 0x093c, 0x0747, 0x0804, 0x031f, 0x038e, 0x0122, 0xff9f, 0xfe42, 0x01fa, 0xfe26, 0xfffd, 0xfcbc, 0x00ea, 0xfcfb, 0xfa40, 0xf850, 0xfb07, 0xfa08, 0xfb33, 0xfce5, 0xfe79, 0x0340, 0xfe4e, 0x0545, 0xfc33, 0x03dd, 0x000d, 0x03de, 0x009f, 0x065d, 0x0112, 0x0611, 0x05ba, 0x0630, 0x0255, 0x05b1, 0xff45, 0x060a, 0xff63, 0x00f5, 0xfb67, 0x0194, 0xfe9f, 0x0045, 0xfacb, 0xfb81, 0xfdff, 0xfd8f, 0xfc71, 0xfc75, 0x005b, 0xfff0, 0x0082, 0xffe1, 0xff83, 0x0190, 0xff08, 0x02d6, 0xff17, 0xfed8, 0xfc52, 0x00a8, 0xffa4, 0x0210, 0x00e2, 0x0047, 0xff76, 0xfc1f, 0xfdfb, 0xfae3, 0xfeb4, 0xf918, 0x050e, 0xfe96, 0x0234, 0xfd9f, 0xfe17, 0xffce, 0xfcf0, 0xfdfd, 0xfdb7, 0x026a, 0x004a, 0xff81, 0x0302, 0x0171, 0x0303, 0x011b, 0x0085, 0xfe71, 0xffb5, 0xfddf, 0xfd67, 0x047f, 0x051e, 0x032b, 0x0127, 0x0489, 0x0265, 0x0907, 0x0522, 0x04de, 0x066f, 0x0c21, 0x073e, 0x094d, 0x01a0, 0x04b4, 0x03d8, 0xff4a, 0xfff8, 0xfd53, 0xff00, 0xfc4e, 0xff5b, 0xfc87, 0xf84d, 0xf2a0, 0xf61d, 0xf320, 0xf2f8, 0xf437, 0xf7cc, 0xf3bb, 0xfb54, 0xfe18, 0xfbb6, 0xfa6d, 0xfed1, 0xfd47, 0x020c, 0xfd15, 0x027c, 0x02b7, 0x0622, 0x04dd, 0x0240, 0xff5a, 0x0215, 0xfb2a, 0x05f4, 0xfe84, 0x0afe, 0x03b7, 0x0a62, 0x083b, 0x0a6b, 0x09eb, 0x064f, 0x07e7, 0x06fa, 0x0308, 0x06f4, 0x050f, 0x0826, 0x0240, 0x0147, 0x0132, 0xfa1e, 0xfde0, 0xfad9, 0xf955, 0xfa84, 0xfb6a, 0xf478, 0xfc46, 0xf2f8, 0xf6dc, 0xf635, 0xfbbc, 0xf5e7, 0xff89, 0xfaa0, 0x0114, 0x0187, 0x019f, 0x0265, 0x0282, 0x00ca, 0x009e, 0x0385, 0xfe48, 0x0d04, 0x01c9, 0x083d, 0x03bd, 0x036c, 0xff1f, 0x0175, 0xfbd8, 0x0142, 0xfe51, 0xffcf, 0xff14, 0xff63, 0x0159, 0xff38, 0xfefc, 0x0117, 0xfa29, 0xffd4, 0xfdca, 0x0435, 0x00a2, 0x0518, 0xfcbd, 0x01ac, 0xff8c, 0xfc14, 0xfe59, 0xfd53, 0xfe86, 0xfe90, 0x009b, 0xfdee, 0x0034, 0xfaba, 0x03fd, 0x0026, 0xfb65, 0x011a, 0x001a, 0x008c, 0x007b, 0xfd60, 0x01f1, 0xff30, 0xfceb, 0xffab, 0x013f, 0x0029, 0xff93, 0xfc57, 0x00e9, 0xfe5c, 0xfc3f, 0xf9fc, 0x0465, 0xfd74, 0x01a5, 0x0059, 0x058a, 0x094e, 0x0abf, 0x04fc, 0x0812, 0x0844, 0x0813, 0x06db, 0xfffa, 0x0b40, 0x0258, 0x08a6, 0xfec8, 0x051a, 0x02d5, 0x03d8, 0xfe83, 0xfd9f, 0xfcf7, 0xfd3e, 0xf966, 0xf47f, 0xf427, 0xf6fe, 0xf006, 0xf893, 0xf2b7, 0xfc89, 0xf623, 0xfadc, 0xf646, 0xfac8, 0xf7c2, 0xfee3, 0xfdc3, 0xfc12, 0x0275, 0xfd39, 0xfbbe, 0x0009, 0xfdf9, 0x01c8, 0x0324, 0xfd8c, 0x08e8, 0x0be2, 0x0409, 0x063e, 0x0fec, 0x06ea, 0x0f56, 0x0685, 0x0ae9, 0x06f2, 0x0d09, 0x02d9, 0x03f5, 0x063f, 0x0496, 0xfe80, 0x01bf, 0xfe42, 0xfead, 0x00ec, 0xfc6e, 0xfdf2, 0xfca4, 0xfd0d, 0xfb73, 0xfa73, 0xfc67, 0xfa15, 0xfe58, 0xf80c, 0xfac6, 0x008e, 0xfc6d, 0x0330, 0xfe9a, 0x0050, 0xff5a, 0x00a7, 0xfad6, 0x0371, 0xfc7a, 0xff23, 0x007b, 0xfe74, 0xfc11, 0x024d, 0xf78c, 0xfdb8, 0xf830, 0xfde2, 0xfc19, 0xf9f6, 0x02d1, 0x015b, 0x04c0, 0xff84, 0x022e, 0xfaed, 0x0782, 0xfcdd, 0xffa3, 0x0183, 0x0240, 0x043f, 0x028f, 0x0341, 0x017d, 0x077d, 0x027e, 0x0415, 0xfd54, 0x0161, 0x05b2, 0xff68, 0x0463, 0xfcab, 0xff47, 0xfa83, 0x00f0, 0xf70a, 0x05fa, 0xffbd, 0x025b, 0xff76, 0xfc89, 0xfef9, 0xfb47, 0xfe2a, 0xfe69, 0xff19, 0xfacd, 0xfb11, 0xfc1b, 0xfef7, 0x0212, 0xfa78, 0xfc12, 0x0128, 0xfe84, 0xfd0a, 0x0407, 0x0234, 0x0b33, 0x08a0, 0x039d, 0x05a8, 0x083e, 0x0820, 0x06a8, 0x06dc, 0x0769, 0x0490, 0x021d, 0x0682, 0xfd29, 0x0610, 0x007e, 0x0234, 0xfa58, 0x0080, 0xfa45, 0xf982, 0xfb1d, 0xfaa5, 0xf90a, 0xf211, 0xf7d4, 0xf47a, 0xf880, 0xf8e0, 0xfa59, 0xf5ab, 0xf96f, 0xf63b, 0xf6e4, 0x006e, 0xfda1, 0xfd7a, 0xfe5a, 0xfbfb, 0xf8ea, 0xff26, 0xfb69, 0xfff4, 0xfb32, 0x0316, 0x06ba, 0x007a, 0x0acb, 0x085c, 0x0d86, 0x0ac0, 0x0b0e, 0x0867, 0x0c29, 0x0761, 0x0e3d, 0x04e9, 0x063c, 0x03ac, 0x02f1, 0x043d, 0x053d, 0x02c4, 0x0515, 0x05f2, 0xfdeb, 0xfee3, 0xfe34, 0xfb78, 0xf9f0, 0xfc74, 0xf3f8, 0xfa55, 0xf6d9, 0xfa15, 0xfe87, 0xfb0d, 0xfd89, 0xff33, 0xfc3c, 0xfab2, 0xfb2a, 0xffaa, 0xfdfd, 0xfe61, 0xfc3d, 0x0077, 0xfc16, 0x0228, 0xfef0, 0x05ea, 0xfe01, 0xfdc6, 0x0118, 0xfaa0, 0xfe95, 0xfc3c, 0x03a3, 0xff13, 0x0037, 0xfbad, 0xff93, 0x0356, 0xfebf, 0xffba, 0x04a9, 0xffe0, 0x0074, 0x0002, 0xfc12, 0x0125, 0x0309, 0xfadc, 0x00c4, 0xf9f3, 0x033f, 0x017a, 0x006c, 0x054c, 0x03e5, 0xff13, 0xfe85, 0x0011, 0xff08, 0x0529, 0x07d2, 0x084a, 0x05e7, 0x0165, 0x01ed, 0x0241, 0x0470, 0x05aa, 0xffb4, 0x03b5, 0xfec1, 0xfabc, 0xf968, 0x033a, 0xf26b, 0xfa0c, 0xf9d7, 0xf7ad, 0xfd6d, 0xfa5b, 0xfe65, 0x056c, 0x0356, 0xffe9, 0xfeeb, 0x0091, 0x034e, 0x00a0, 0x03e1, 0x069c, 0x0229, 0x0506, 0x017a, 0x01c7, 0x079e, 0x04a4, 0x062c, 0x0703, 0x04b3, 0xfd44, 0x0283, 0xfd79, 0xff07, 0x005f, 0xf719, 0xfc79, 0xfd7d, 0xf543, 0x01ae, 0xfb56, 0xf9b9, 0xfaf8, 0xf123, 0xf331, 0xfb85, 0xf690, 0xf722, 0xfe02, 0xf8dd, 0xfcb4, 0xfac2, 0xfd12, 0xfcd5, 0xf8bf, 0xfe6d, 0x01ee, 0x0231, 0xfce4, 0x0576, 0x0421, 0x098b, 0x0b71, 0x0921, 0x10e9, 0x0f2c, 0x0ff5, 0x05ea, 0x0ee5, 0x0923, 0x0849, 0x0151, 0x0988, 0x0317, 0x06ad, 0x099d, 0xff29, 0x08ef, 0x0053, 0xfa72, 0xfffd, 0xf934, 0xf869, 0xf43a, 0xf157, 0xf4a4, 0xfc8c, 0xf655, 0xf90b, 0xf55c, 0xf841, 0xf3cd, 0xfd11, 0xfa50, 0xf9b2, 0xfac8, 0xf483, 0xfe56, 0xf5cf, 0xfb46, 0x01e4, 0x002c, 0xfec7, 0x0379, 0x0131, 0x0786, 0x0446, 0x02e2, 0x08f6, 0x0b61, 0x0e84, 0x0753, 0x0a33, 0x0705, 0x0849, 0x080b, 0xff8d, 0x0887, 0x04e3, 0x0274, 0xfe9e, 0x03b3, 0xfe17, 0x034f, 0xfe4f, 0xf951, 0xf199, 0xf3ad, 0xf8aa, 0xf568, 0xfc74, 0xf225, 0xfd6c, 0xf6b8, 0xf7bb, 0xfe48, 0x048d, 0xfb50, 0x060f, 0xf92d, 0xfc94, 0x01c2, 0x043e, 0x01ed, 0x05fc, 0x0c1b, 0x0606, 0x0436, 0x0914, 0x0878, 0x087d, 0x010e, 0x00bd, 0x0120, 0x06ba, 0x0265, 0x0188, 0x0547, 0x08af, 0x0763, 0x00dc, 0x04e9, 0xfd35, 0xff8a, 0xf9c9, 0x0601, 0xf597, 0xfaeb, 0xf60e, 0xf0b9, 0xfa56, 0xf8b4, 0x0069, 0xfc9f, 0x0124, 0xf4ac, 0x02c5, 0xf5d3, 0xfd17, 0xfc19, 0xf869, 0xfbf9, 0xffb7, 0xfe4d, 0x0614, 0x0769, 0x0566, 0x0794, 0xfd53, 0x0153, 0xfd92, 0x05b8, 0x0157, 0xfea2, 0x02e9, 0xfe64, 0x02e7, 0xfb8a, 0xff99, 0xf5e3, 0xfbed, 0x01d6, 0xfb17, 0x02c9, 0xfa31, 0xfe6a, 0x063f, 0xfab7, 0x0301, 0x05f1, 0x003c, 0x047c, 0x090b, 0xfe0f, 0x0c57, 0xfd88, 0x0426, 0x06a2, 0x0893, 0x02f4, 0x0e75, 0x0782, 0x03ac, 0x08e1, 0xff0c, 0x0023, 0x03fe, 0x001d, 0xff6f, 0xff9f, 0xf747, 0x02e6, 0xfbdb, 0x0745, 0xfdc7, 0xf7fb, 0xf9e6, 0xf999, 0xfe4b, 0xfd5c, 0xf620, 0xff35, 0xfce1, 0xf451, 0xf63c, 0xfeb2, 0xf5e1, 0xfd58, 0xf853, 0xf795, 0xfca8, 0xf8d3, 0xfa61, 0x0096, 0x0561, 0x00ff, 0x0839, 0xff54, 0x05f7, 0x0b88, 0x0210, 0x0141, 0x05aa, 0x040f, 0x05b3, 0xff97, 0x0342, 0x03bc, 0x0707, 0x07db, 0x03d2, 0xfbf3, 0xfe3a, 0xfb30, 0x0463, 0xfc55, 0x00da, 0xf8a7, 0xfd8e, 0xfa0a, 0x00c3, 0x0488, 0x034d, 0xffd1, 0x01a8, 0xfa9e, 0x0143, 0xf662, 0x0066, 0xfcb1, 0x04ca, 0xfca9, 0xff11, 0xfbf2, 0x00f5, 0x048e, 0xfa0b, 0x0133, 0xfa79, 0x0090, 0xff0c, 0x005a, 0x007b, 0x0718, 0x0568, 0x03a8, 0x07b4, 0x02e0, 0x0294, 0x004d, 0x09eb, 0x0088, 0x04ad, 0xfd11, 0xf7ed, 0x0861, 0xfc74, 0x068f, 0x02a3, 0x04a5, 0xfa9f, 0x0281, 0xfc08, 0xfe18, 0xfe8c, 0xf519, 0xface, 0xfca8, 0xfc07, 0xf6fd, 0x0420, 0xf764, 0x0261, 0xfce5, 0xf3c5, 0xff37, 0xff2e, 0x0255, 0xfff9, 0xfc6e, 0xfcb7, 0x00fe, 0xfe71, 0xfdde, 0xfd70, 0xfb9c, 0xfc1c, 0x01d9, 0x02e2, 0x0413, 0x031e, 0x069e, 0x0535, 0x04e6, 0x076e, 0x063a, 0x04dd, 0x0575, 0x0881, 0xfcae, 0x02ce, 0xfc7a, 0x0660, 0x0161, 0x0300, 0x07aa, 0x05d9, 0x0204, 0x04f0, 0xffe3, 0xfa79, 0x049f, 0xf67d, 0x0446, 0xfc99, 0xfa3e, 0xfd54, 0x040d, 0x0513, 0x0674, 0x0202, 0xf641, 0xff40, 0xfea3, 0xff89, 0xfa0f, 0xfe55, 0xf820, 0xf997, 0xf718, 0xf591, 0xfae1, 0xf9ea, 0xfafb, 0xf508, 0xfb15, 0xfa5d, 0xf9bb, 0xfcac, 0x0099, 0x0372, 0x0121, 0x0306, 0x057c, 0x072e, 0x05cc, 0x066a, 0x0287, 0x0484, 0x0bfa, 0xfeed, 0x0da3, 0xffd1, 0x0d29, 0x0669, 0x0dea, 0xfe19, 0xfff0, 0xf8e9, 0x0022, 0x012c, 0xfb14, 0xfadf, 0xfbc5, 0xfefb, 0xf4bc, 0x0641, 0xf951, 0x03da, 0x025c, 0xfbd9, 0xfa93, 0xfbcc, 0xfba7, 0x0229, 0x0243, 0xfb5a, 0xfd5a, 0xff46, 0x01e5, 0xffc6, 0x0d4f, 0xfdbb, 0x039e, 0x069b, 0x0336, 0x0083, 0x0bbe, 0xfeb9, 0x0478, 0x04df, 0x05c6, 0xfef8, 0x0614, 0xfd02, 0xfe3a, 0x09fb, 0xf753, 0xfd6e, 0xf65c, 0xfc34, 0xf820, 0xfcaa, 0xf8a8, 0x03f5, 0xfb14, 0xfb15, 0xf7fd, 0xf1d6, 0xfd06, 0xf86a, 0xfeaa, 0x00ec, 0xfc62, 0x047a, 0x0413, 0x0761, 0x0246, 0x0429, 0xf916, 0xfe77, 0xfd6b, 0x058a, 0xfd8f, 0x0be6, 0xfdb7, 0x0644, 0x02ef, 0x0209, 0xff51, 0xf76c, 0x010b, 0xf9a7, 0xfefb, 0xfdc4, 0x0023, 0x025f, 0xffb1, 0xfba0, 0x021b, 0xfef1, 0x0134, 0x0c1d, 0x0081, 0x040a, 0x04b8, 0x0826, 0x01cf, 0x0745, 0xfc5e, 0x001b, 0x02d6, 0x0ab1, 0x01dc, 0x0181, 0x0381, 0x01b4, 0x0179, 0xfe5b, 0x042a, 0xfe52, 0xfa36, 0x0184, 0xf750, 0x043a, 0x05d6, 0x0214, 0xf4f4, 0xfe7f, 0xf1bc, 0x034e, 0xf6dc, 0x0139, 0x028f, 0xf896, 0xfbe6, 0x0366, 0xfe22, 0x0414, 0x00a6, 0xfd56, 0xf62f, 0xffd8, 0x053f, 0xf40a, 0x0859, 0xfc17, 0xfd9c, 0x12cb, 0xf219, 0x0d02, 0x0727, 0x052c, 0x0494, 0x047b, 0x03ba, 0x025b, 0xfed3, 0x0118, 0x06bf, 0x0bf1, 0x129d, 0x0a27, 0x005a, 0xfba9, 0x22f2, 0xfea5, 0xf46f, 0xfb35, 0xe105, 0xf910, 0xddc5, 0xc983, 0xf905, 0xfe23, 0x0e10, 0x0086, 0xe9e8, 0xe278, 0xe043, 0xf14d, 0xeccd, 0xe08b, 0xe426, 0xf6db, 0x15ae, 0x20f5, 0x2699, 0xe619, 0xd456, 0xc176, 0xd5b1, 0xfab0, 0x0bc1, 0x40d3, 0x6e29, 0x4684, 0xf7fd, 0xe151, 0xcf1c, 0xe24d, 0x0789, 0x0cf4, 0x056c, 0x0f00, 0x15de, 0x02a6, 0xe59c, 0xd8fa, 0x02c4, 0x1c5c, 0x0d9b, 0x1117, 0x1619, 0x23ce, 0x0834, 0xebe5, 0xf4d9, 0x1395, 0x2379, 0x39e8, 0x41e0, 0x4307, 0x4a97, 0x2ca0, 0xfc87, 0xe5d6, 0xfd01, 0x293d, 0x3ba8, 0x2211, 0x1813, 0x008b, 0xe46f, 0xd200, 0xdbd9, 0x028e, 0x1961, 0x0c6a, 0x1a54, 0x1815, 0x201a, 0x172b, 0x012c, 0xebbb, 0xffbc, 0x185e, 0x0f98, 0xf191, 0xe2c8, 0xe50e, 0xbcec, 0xa7ce, 0xa7fd, 0xc113, 0xbf9c, 0xb602, 0xb5d4, 0xd6f9, 0xe0be, 0xdd17, 0xc71b, 0xc26c, 0xd165, 0xf32f, 0xfb08, 0xec4f, 0xe519, 0xec79, 0xe55d, 0xde2a, 0xcd44, 0xd6e9, 0xf495, 0x1e2f, 0x2695, 0x4148, 0x599d, 0x542a, 0x3d40, 0x366a, 0x4cbd, 0x4f38, 0x4f5f, 0x4115, 0x3412, 0x2e38, 0x209a, 0x11e9, 0x11dd, 0x23c8, 0x2ee0, 0x247d, 0x2b04, 0x2929, 0x219b, 0x1c52, 0x01b3, 0xe8a5, 0xe657, 0xe6c2, 0xd520, 0xbcfb, 0xae83, 0xa9e5, 0xa60b, 0x9e15, 0x948d, 0x8ca6, 0x9883, 0xb270, 0xb5dd, 0xbeb9, 0xcf7e, 0xc8e6, 0xc8d5, 0xc888, 0xccb3, 0xdd79, 0xe018, 0xedf5, 0xef88, 0xfd23, 0xfc43, 0x03f4, 0xfb23, 0x0ba2, 0x1599, 0x1418, 0x2168, 0x2a1c, 0x377a, 0x3d5e, 0x31b7, 0x3d56, 0x4a19, 0x5513, 0x6104, 0x689e, 0x639c, 0x6c53, 0x5a2f, 0x63ba, 0x5849, 0x4d2e, 0x4d9c, 0x4718, 0x4c4f, 0x48cf, 0x4a72, 0x4179, 0x4064, 0x3157, 0x2ce1, 0x316a, 0x30c2, 0x240a, 0x165f, 0x1102, 0x0de6, 0x008c, 0xf283, 0xeee4, 0xf88e, 0xf382, 0xf8d6, 0xfbcd, 0xf816, 0xf05e, 0xedbf, 0xe322, 0xd9e0, 0xcdca, 0xdb4e, 0xce92, 0xc440, 0xb207, 0x9a60, 0x99c3, 0x8cb4, 0x9484, 0x9102, 0x9116, 0xad7f, 0xad2f, 0x9a5e, 0xa93e, 0x9805, 0xa05e, 0x9fa0, 0xa5d4, 0xb033, 0xacfc, 0xac65, 0xb6b9, 0xbfaa, 0xc4d2, 0xcd70, 0xd462, 0xd782, 0xef3b, 0xf91d, 0xfe9a, 0x0b08, 0x1266, 0x0cac, 0x0d8b, 0x1cca, 0x2098, 0x3323, 0x2732, 0x2d24, 0x3ce8, 0x3655, 0x43b1, 0x3e24, 0x38f0, 0x3b90, 0x3375, 0x4ed4, 0x5045, 0x5294, 0x4eac, 0x4d1a, 0x3ae1, 0x49fc, 0x520a, 0x585d, 0x5ba2, 0x53a9, 0x5602, 0x59c4, 0x4571, 0x57c6, 0x4611, 0x3b7f, 0x436f, 0x43dc, 0x4300, 0x3e29, 0x3c58, 0x2ed4, 0x2c17, 0x2431, 0x2245, 0x14b2, 0x124a, 0x0374, 0xfed2, 0xef29, 0xf2e0, 0xe2ed, 0xddf6, 0xd276, 0xc21e, 0xbb99, 0xb8e8, 0xc298, 0xbc11, 0xadf1, 0xabe9, 0xb6cd, 0xaf2c, 0xb568, 0xa4dc, 0xa7cb, 0x954d, 0x8e61, 0x91ab, 0x9293, 0x94ac, 0x984a, 0xaae9, 0xa8fd, 0xc8d1, 0xcc2f, 0xe092, 0xd938, 0xe22d, 0xe87a, 0xf711, 0xe90d, 0xf6d4, 0xf3a9, 0xf075, 0xf837, 0xf73a, 0x089f, 0x0f93, 0x0caa, 0x0a84, 0x1642, 0x1d33, 0x2c57, 0x25c0, 0x2148, 0x1f72, 0x2382, 0x1eae, 0x2b55, 0x2414, 0x28d3, 0x268c, 0x1da5, 0x2e0d, 0x327b, 0x2f36, 0x376b, 0x3276, 0x36ff, 0x4505, 0x451f, 0x4a0d, 0x4c7c, 0x4380, 0x3f0b, 0x3b50, 0x3c28, 0x3e45, 0x2b63, 0x2e84, 0x25f5, 0x230b, 0x25ab, 0x2071, 0x1e2e, 0x1b00, 0x0678, 0x0693, 0x0177, 0xfff0, 0x042e, 0xf76d, 0xf5ae, 0x0452, 0x0545, 0x0278, 0x0098, 0xf1a5, 0xe842, 0xe7b0, 0xe3d7, 0xe4e7, 0xdad2, 0xdb75, 0xe263, 0xd717, 0xe1d8, 0xec6c, 0xed80, 0xf11c, 0xeb0e, 0xf024, 0xf86c, 0xf0ce, 0xf3b4, 0xeb0b, 0xe382, 0xdd88, 0xd91b, 0xd7aa, 0xcaf9, 0xd53d, 0xc6e1, 0xc696, 0xd4b6, 0xdecb, 0xe153, 0xddc5, 0xd9e9, 0xdb59, 0xe4e3, 0xe2d3, 0xe3eb, 0xe572, 0xdf98, 0xdb7e, 0xda4a, 0xe53a, 0xe3bb, 0xef53, 0xf1cc, 0x0498, 0x1145, 0x1a69, 0x269a, 0x249d, 0x2949, 0x1b2e, 0x210c, 0x1b09, 0x1c6b, 0x0de8, 0x0e85, 0x066b, 0x0d25, 0x0fb4, 0x142c, 0x1123, 0x08ce, 0xfe9b, 0x00e8, 0x0b53, 0x00d2, 0x0215, 0x016f, 0xf6f0, 0xfa3c, 0xfa4a, 0xf4e4, 0xfe3f, 0xf510, 0xe556, 0xf08b, 0xf31e, 0xfdef, 0xfab3, 0xf000, 0x0388, 0xf748, 0x0255, 0x01ac, 0x09df, 0x0f3c, 0x119d, 0x1796, 0x185e, 0x2863, 0x1c75, 0x1d16, 0x18c2, 0x1262, 0x204e, 0x11db, 0x1435, 0x0e7a, 0x017b, 0x0001, 0x0693, 0x02e8, 0x0c18, 0xfed9, 0x04ad, 0x09a0, 0x0a8a, 0x14dc, 0x0ef4, 0x1343, 0x0af2, 0x070c, 0x01e6, 0x07cb, 0x0515, 0x046e, 0x0c9e, 0x0ef9, 0x2054, 0x2af1, 0x2f36, 0x3b26, 0x31b6, 0x28b6, 0x319e, 0x2e0e, 0x2cab, 0x2277, 0x137c, 0x10e9, 0x0525, 0x0620, 0x0a98, 0x07e3, 0x021f, 0xf795, 0xf57d, 0xfec1, 0xf469, 0xef99, 0xf793, 0xea49, 0xefbe, 0xdac8, 0xd8da, 0xd843, 0xcacd, 0xc5ef, 0xbf7f, 0xcd06, 0xd4a6, 0xd4f7, 0xd545, 0xdce9, 0xd760, 0xe7cd, 0xe351, 0xebf3, 0xe848, 0xeae0, 0xe975, 0xe1aa, 0xec45, 0xecd5, 0xe9d3, 0xe64e, 0xe98a, 0xeebf, 0xecb2, 0xf909, 0xed88, 0xe657, 0xe37b, 0xe2f7, 0xeb75, 0xe65c, 0xe542, 0xec0a, 0xece2, 0xf51f, 0xf501, 0xfee8, 0x0aae, 0xfd3a, 0xff09, 0x01ab, 0x04ef, 0x05ca, 0x0006, 0x08e9, 0x0e93, 0x1169, 0x1d28, 0x22d5, 0x2d99, 0x2629, 0x2341, 0x2491, 0x2bb6, 0x289c, 0x1b36, 0x17da, 0x1100, 0x0caa, 0x0a16, 0x0902, 0x07df, 0x0058, 0x00e3, 0x034d, 0x0637, 0x0ad4, 0x0ab4, 0x045c, 0x0173, 0x00df, 0xfde0, 0xfe3a, 0xf9c5, 0xedaf, 0xea09, 0xe26b, 0xec40, 0xf3e9, 0xefbb, 0xf7d1, 0xf7a3, 0xfda9, 0xff05, 0x0ba1, 0x122d, 0x1537, 0x11ca, 0x0e14, 0x07ea, 0x0adf, 0x041b, 0x099a, 0x0402, 0x0a54, 0x08c7, 0x10f4, 0x126a, 0x0ff7, 0x037c, 0x053e, 0x04f8, 0x0be9, 0x0662, 0x045e, 0x0887, 0x052e, 0x0421, 0x090a, 0x15e3, 0x15a3, 0x0d63, 0x0d0c, 0x0d77, 0x19cf, 0x166a, 0x13d6, 0x141a, 0x1da3, 0x28f5, 0x2406, 0x2f26, 0x3093, 0x2eed, 0x2f18, 0x2cf2, 0x3440, 0x3845, 0x248a, 0x2722, 0x183c, 0x10b2, 0x136d, 0x0e9b, 0x1008, 0x0608, 0xfd55, 0xfacb, 0xf641, 0xf5e1, 0xf676, 0xecf0, 0xed13, 0xec94, 0xe1da, 0xe789, 0xdd59, 0xd1f2, 0xce96, 0xc876, 0xcefb, 0xcddd, 0xc33f, 0xcc63, 0xcb3b, 0xd356, 0xd8c9, 0xe304, 0xe9c7, 0xeff7, 0xeb71, 0xe7e8, 0xeaa5, 0xe714, 0xe82a, 0xddec, 0xdc36, 0xe028, 0xdadd, 0xe347, 0xe254, 0xd934, 0xd97d, 0xd250, 0xde3d, 0xe3ce, 0xe2ca, 0xdb32, 0xe010, 0xe2ee, 0xdf5e, 0xdb30, 0xec02, 0xe320, 0xe6ca, 0xe65e, 0xe8f7, 0xf366, 0xf514, 0xf6f6, 0x018c, 0x04e4, 0x0bfc, 0x1715, 0x1644, 0x1949, 0x1570, 0x0f6f, 0x1003, 0x14e1, 0x1225, 0x124f, 0x0aaf, 0x05a2, 0x0946, 0x03a1, 0x11c7, 0x074e, 0xfe93, 0x0260, 0xfd3a, 0xfd08, 0xfb3f, 0xeeaa, 0xfbd7, 0xf5f9, 0xf8f5, 0x03fa, 0xffb7, 0x04a3, 0xfbdb, 0xfb68, 0xf789, 0x0723, 0x043f, 0x0680, 0x008d, 0x0681, 0x0cd1, 0x0730, 0x1453, 0x1b68, 0x214e, 0x1f51, 0x1b5c, 0x20d9, 0x2a72, 0x20af, 0x217f, 0x1c5d, 0x1ed1, 0x1e55, 0x1f16, 0x17bf, 0x1631, 0x12b1, 0x1993, 0x18c0, 0x1d13, 0x2382, 0x27e5, 0x2312, 0x2d07, 0x2299, 0x2b05, 0x324d, 0x207a, 0x2561, 0x1ff5, 0x252a, 0x29e7, 0x2186, 0x278b, 0x3019, 0x3379, 0x3843, 0x4058, 0x43bd, 0x42cb, 0x3aa3, 0x34f5, 0x34d9, 0x2eaa, 0x2d07, 0x1b3a, 0x1406, 0x13ef, 0x0a08, 0x0c6e, 0x0d08, 0x0a24, 0x058a, 0xfb41, 0xf5ce, 0xf483, 0xea74, 0xe5cb, 0xde16, 0xd96f, 0xd91d, 0xd52a, 0xd3ff, 0xd05e, 0xc71b, 0xc079, 0xc533, 0xc0c3, 0xcac8, 0xc88d, 0xc597, 0xc61c, 0xc476, 0xc8d2, 0xca7b, 0xce19, 0xcea2, 0xcef7, 0xcbaf, 0xd776, 0xda12, 0xd7fe, 0xd672, 0xd773, 0xd66b, 0xd48b, 0xd73e, 0xd097, 0xc617, 0xbfdb, 0xc11c, 0xc894, 0xcb4c, 0xca01, 0xd31f, 0xd155, 0xd34e, 0xd2ca, 0xdc48, 0xe5dc, 0xe3f9, 0xe025, 0xdecb, 0xe1dd, 0xe327, 0xea45, 0xe16e, 0xeefa, 0xf542, 0x018d, 0x0cb5, 0x1db8, 0x1b03, 0x2781, 0x17c9, 0x293c, 0x236e, 0x26f8, 0x2095, 0x134e, 0x1667, 0x0849, 0x1422, 0x1099, 0x1971, 0x12b1, 0x16ff, 0x0f4e, 0x12b5, 0x1124, 0x064e, 0x03c0, 0x04ac, 0xff57, 0xfef0, 0xff99, 0xf550, 0xf0b0, 0xeaae, 0xf460, 0x00da, 0x0356, 0x08e7, 0x0723, 0x0c34, 0x0b6d, 0x109f, 0x1461, 0x1abe, 0x1af0, 0x1275, 0x1759, 0x1826, 0x2378, 0x1de4, 0x1f81, 0x1bee, 0x1d7d, 0x1d5b, 0x227b, 0x1f69, 0x1630, 0x13d5, 0x1252, 0x13b8, 0x183b, 0x147b, 0x0eaa, 0x14a0, 0x121f, 0x1951, 0x1f68, 0x265c, 0x25f5, 0x298a, 0x285f, 0x25b1, 0x2806, 0x29d1, 0x2025, 0x225d, 0x2539, 0x2cc5, 0x302c, 0x35a4, 0x3cb8, 0x3721, 0x2ffb, 0x367c, 0x37c0, 0x32a1, 0x26a4, 0x22fd, 0x14f9, 0x0d66, 0x1032, 0x0eb6, 0x0b9f, 0xffc2, 0xfb60, 0xfacd, 0xf8d2, 0xfd4c, 0xf550, 0xf3f6, 0xf3cd, 0xed2f, 0xe609, 0xe1a4, 0xdacd, 0xced6, 0xcb62, 0xc67f, 0xd235, 0xd2bc, 0xcc8d, 0xd592, 0xd4f1, 0xd3ea, 0xd823, 0xe173, 0xe511, 0xe7b8, 0xda60, 0xe01e, 0xda29, 0xe3ef, 0xd640, 0xd502, 0xd0b2, 0xd2fa, 0xd4c9, 0xd82a, 0xde31, 0xd8b4, 0xd3a8, 0xd578, 0xdab2, 0xdc29, 0xd860, 0xd3e3, 0xd33d, 0xcc93, 0xd276, 0xdc87, 0xe158, 0xe38d, 0xe811, 0xe538, 0xeb51, 0xf203, 0xf52e, 0xf4e6, 0xf8ec, 0xfa97, 0xfd88, 0x0098, 0x06ae, 0x0b99, 0x0437, 0x0a80, 0x0c48, 0x1e07, 0x1bbc, 0x1ef1, 0x15b7, 0x1170, 0x16b1, 0x1b17, 0x18d9, 0x104c, 0x0dcc, 0xffb7, 0xfba4, 0xfa29, 0x0090, 0xf3f2, 0xf8b3, 0xf8fe, 0xf40f, 0xf463, 0xf852, 0xf354, 0xea57, 0xeb45, 0xec05, 0xf524, 0xf1dd, 0xef86, 0xf808, 0xf1dd, 0xf65c, 0x04f4, 0x10e8, 0x1b2a, 0x1eaa, 0x1930, 0x2341, 0x1ef5, 0x25c4, 0x2467, 0x0fe4, 0x1444, 0x09cd, 0x07a5, 0x067f, 0x092e, 0x0910, 0x0566, 0x02ee, 0x0708, 0x104b, 0x0854, 0x0f51, 0x0c6f, 0x070f, 0x0918, 0x0b45, 0x0ea1, 0x0cc9, 0x0c3c, 0x0749, 0x1070, 0x1498, 0x1ada, 0x1a25, 0x2084, 0x2932, 0x28b0, 0x2cee, 0x347d, 0x31b8, 0x2452, 0x23c2, 0x22e2, 0x2b1e, 0x22f2, 0x1ef8, 0x1d2a, 0x124f, 0x1591, 0x1336, 0x1ac5, 0x19cd, 0x12b2, 0x06a7, 0xfb17, 0xf81d, 0xf528, 0xe9cd, 0xe583, 0xda2c, 0xdf37, 0xd834, 0xdfcb, 0xe30b, 0xe084, 0xdd87, 0xe2b3, 0xe3be, 0xee85, 0xe637, 0xe830, 0xe4b6, 0xe2b1, 0xe7ff, 0xed0b, 0xf81e, 0xfcc8, 0xfcd1, 0x008d, 0x0267, 0x0510, 0x0697, 0xfe49, 0xf9f2, 0xf223, 0xf2a7, 0xe598, 0xec7b, 0xde5d, 0xdeab, 0xe009, 0xe7d7, 0xf036, 0xeeae, 0xfb58, 0xfaf1, 0xfa71, 0xfe13, 0x0619, 0x087a, 0x0ab1, 0x018e, 0xfb14, 0xfb70, 0x0136, 0x05fa, 0x029c, 0x0b15, 0x1750, 0x142a, 0x1c85, 0x22fe, 0x2948, 0x2194, 0x1e04, 0x1cf9, 0x1e95, 0x17cc, 0x1288, 0x0dc7, 0x04c7, 0x061f, 0x02fa, 0x0fed, 0x128e, 0x138f, 0x09d0, 0x0667, 0xff84, 0x0263, 0xf87e, 0xec9f, 0xe444, 0xddbc, 0xd624, 0xda9b, 0xd605, 0xd79d, 0xe016, 0xd918, 0xe784, 0xe61e, 0xe653, 0xf138, 0xe9b0, 0xe988, 0xec98, 0xed89, 0xf51e, 0xee02, 0xefba, 0xf120, 0xf7e0, 0xff8a, 0x076f, 0xf923, 0x0001, 0xfc5a, 0xfb04, 0xf5d5, 0xfe17, 0xf18c, 0xefa8, 0xe61e, 0xe663, 0xf129, 0xeae9, 0xfb74, 0xf804, 0xfda8, 0xfe2a, 0x073f, 0x0d4c, 0x0fd7, 0x060e, 0x0a32, 0x0466, 0x0431, 0x0204, 0x049b, 0x01af, 0x07d6, 0x0730, 0x12d4, 0x21df, 0x2b35, 0x289c, 0x2c69, 0x2e67, 0x2b5c, 0x31b2, 0x21fd, 0x1620, 0x0c72, 0x085c, 0x0adf, 0x12d3, 0x0df5, 0x1430, 0x0681, 0x07ad, 0x04dc, 0xffd4, 0xf98e, 0xf71e, 0xeca1, 0xe2eb, 0xd9c7, 0xd687, 0xd9d9, 0xcfb2, 0xd262, 0xd819, 0xe156, 0xe272, 0xf54c, 0xf337, 0x0037, 0xfce6, 0xfb9b, 0x0944, 0x11ca, 0x1027, 0x0a45, 0x032e, 0x0735, 0x0896, 0x0351, 0xffa0, 0x05ec, 0x079d, 0x000c, 0x0106, 0x0940, 0x01d2, 0xf80c, 0xf834, 0xfc7c, 0xfd2c, 0xfa38, 0x003c, 0xf624, 0xfce9, 0xfba1, 0x0568, 0x0d43, 0x177f, 0x1bd5, 0x188c, 0x13eb, 0x1e6a, 0x2205, 0x1b29, 0x18d6, 0x12b5, 0x1972, 0x15bd, 0x2397, 0x2d7d, 0x2850, 0x2a68, 0x30a9, 0x2ea1, 0x3015, 0x29b8, 0x23fb, 0x18d9, 0x18e6, 0x1683, 0x106a, 0x0b27, 0x0669, 0xfa6e, 0xfc23, 0xef10, 0xf336, 0xf613, 0xee87, 0xed6b, 0xe5fa, 0xe227, 0xdddf, 0xe48e, 0xd85b, 0xd499, 0xd480, 0xd48d, 0xd607, 0xdb91, 0xdfb5, 0xe7cd, 0xe971, 0xf0dd, 0x0081, 0x0145, 0x06c0, 0xf950, 0x0015, 0x005b, 0xf6a8, 0xefb4, 0xe5a5, 0x0000, 0x0000, 0x0000, 0x1011, 0x0000, 0x0000, 0x0000, 0x6666, 0x6666, 0x3965, 0x3137, 0x202c, 0x7830, 0x6666, 0x6666, 0x3066, 0x6464, 0x202c, 0x7830, 0x3030, 0x3138, 0x202c, 0x7830, 0x3130, 0x3534, 0x202c, 0x7830, 0x3630, 0x3063, 0x202c, 0x7830, 0x6666, 0x6666, 0x3966, 0x3035, 0x202c, 0x7830, 0x3030, 0x3531, 0x202c, 0x7830, 0x3030, 0x6235, 0x202c, 0x7830, 0x6666, 0x6666, 0x3666, 0x3861, 0x202c, 0x7830, 0x6666, 0x6666, 0x6665, 0x3462, 0x202c, 0x7830, 0x6666, 0x6666, 0x3565, 0x3561, 0x202c, 0x7830, 0x3030, 0x3030, 0x202c, 0x7830, 0x3030, 0x3030, 0x202c, 0x7830, 0x3030, 0x3030, 0x202c, 0x7830, 0x3031, 0x3131, 0x202c, 0x7830, 0x3030, 0x3030, 0x202c, 0x7830, 0x3030, 0x3030, 0x202c, 0x7830, 0x3030, 0x3030, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3933, 0x3536, 0x202c, 0x7830, 0x3133, 0x3733, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3033, 0x3636, 0x202c, 0x7830, 0x3436, 0x3436, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3133, 0x3833, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3133, 0x3033, 0x202c, 0x7830, 0x3533, 0x3433, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3633, 0x3033, 0x202c, 0x7830, 0x3033, 0x3336, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3933, 0x3636, 0x202c, 0x7830, 0x3033, 0x3533, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3533, 0x3133, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3236, 0x3533, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3633, 0x3636, 0x202c, 0x7830, 0x3833, 0x3136, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3636, 0x3536, 0x202c, 0x7830, 0x3433, 0x3236, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3636, 0x3636, 0x202c, 0x7830, 0x3533, 0x3536, 0x202c, 0x7830, 0x3533, 0x3136, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3133, 0x202c, 0x7830, 0x3133, 0x3133, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3033, 0x3033, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3633, 0x3633, 0x202c, 0x7830, 0x3633, 0x3633, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3633, 0x3633, 0x202c, 0x7830, 0x3633, 0x3633, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3933, 0x3333, 0x202c, 0x7830, 0x3533, 0x3633, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3133, 0x3333, 0x202c, 0x7830, 0x3733, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3633, 0x3633, 0x202c, 0x7830, 0x3633, 0x3633, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3633, 0x3633, 0x202c, 0x7830, 0x3633, 0x3633, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3633, 0x3633, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3433, 0x3633, 0x202c, 0x7830, 0x3433, 0x3633, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3133, 0x3333, 0x202c, 0x7830, 0x3833, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3333, 0x202c, 0x7830, 0x3733, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3733, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3633, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3333, 0x202c, 0x7830, 0x3733, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3733, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3633, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3333, 0x202c, 0x7830, 0x3733, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3633, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3333, 0x202c, 0x7830, 0x3733, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3633, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3633, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3333, 0x202c, 0x7830, 0x3733, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3733, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3633, 0x202c, 0x7830, 0x3233, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3333, 0x202c, 0x7830, 0x3733, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3233, 0x202c, 0x7830, 0x3336, 0x3233, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3833, 0x3733, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3033, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x3837, 0x3033, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3333, 0x3333, 0x202c, 0x7830, 0x3032, 0x6332, 0x202c, 0x7830, 0x0000, 0x0000, 0x0000, 0x0000, 0xc471, 0x0001, 
};


const u32 audio_data_length = sizeof(audio_data)/sizeof(audio_data[0]);
int main(void)
{
  Dac_Init();
	/*
	#if(format == 1)//数组是uint16_t
	//90*100/72M  =9/72000 = 1/8000
	arr = 89;
	psc = 99;
	#elif(format == 2)//数组是uint8_t
	arr = 49;
	psc = 89;
	#endif
	*/
  TIM2_Int_Init(89,99);// 124   71 
	
  for(;;)
  {
     
  }
	return 0;
}
void TIM2_IRQHandler(void)
{
    static int i = 0;
    if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
    {
        DAC_SetChannel1Data(DAC_Align_12b_R,(audio_data[i]+0x8000)>>4&0xfff0);//(audio_data[i]>>4)&0xfff
        i++;
        if (i >= audio_data_length)
            i = 0;

        TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
    }
}
void Dac_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    DAC_InitTypeDef DAC_InitType;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    GPIO_SetBits(GPIOA, GPIO_Pin_4);

    DAC_InitType.DAC_Trigger = DAC_Trigger_None;
    DAC_InitType.DAC_WaveGeneration = DAC_WaveGeneration_None;
    DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;
    DAC_InitType.DAC_OutputBuffer = DAC_OutputBuffer_Disable ;
    DAC_Init(DAC_Channel_1, &DAC_InitType);
    DAC_Cmd(DAC_Channel_1, ENABLE);

    DAC_SetChannel1Data(DAC_Align_12b_R, 0);
}

void TIM2_Int_Init(u16 arr, u16 psc) //定时器初始化
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //时钟使能

    //定时器初始化
    TIM_TimeBaseStructure.TIM_Period = arr;
    TIM_TimeBaseStructure.TIM_Prescaler = psc;
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
    TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);

    //中断优先级设置
    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
    TIM_Cmd(TIM2, ENABLE);
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vivado 下 IP核之单端口 RAM 读写

目录 Vivado 下 IP 核之单端口 RAM 读写 1、RAM 简介 2、实验任务 3、程序设计 3.1、RAM IP 核配置 3.2、时序图讲解 1、写优先模式的时序图如下所示&#xff1a; 2、读优先模式的时序图如下所示&#xff1a; 3、不变模式的时序图如下所示&#xff1a; 3.3、顶层模块…

mysql 数据库 不同数据类型字段设置长度大小、取值范围 及 存储空间

学习目标&#xff1a; 学习的目标 了解不同数据类型字段设置长度大小&#xff0c;从而 在使用 mysql 数据时为使用的字段设置适当的长度 。 学习内容&#xff1a; 学习的内容 整数型字符串型TEXT时间型 总结&#xff1a; 提示&#xff1a;总结 1、整数型 1、整数型的数值…

STM32队列

目录 什么是队列&#xff1f; 队列特点 1. 数据入队出队方式 2. 数据传递方式 3. 多任务访问 4. 出队、入队阻塞 队列相关 API 函数 1. 创建队列 参数&#xff1a; 2. 写队列 参数&#xff1a; 返回值&#xff1a; 3. 读队列 参数&#xff1a; 返回值&#xf…

找工作第一弹——三件套基础巩固

目录 前言HTML篇表格结构a的两种打开方式自定义列表单选&#xff0c;多选音视频标签 CSS篇伪元素清楚浮动固定定位fixedemCSS三角 JS细节篇原型链字符串拼接的方法递归 JS内置对象sort的升序和降序字符串大写和小写Objects对象的方法date的用法数字取整数组的最大值与最小值 We…

ROS中使用VLP16激光雷达获取点云数据

ROS中使用VLP16激光雷达获取点云数据 个人博客地址 本文测试环境为&#xff1a;Ubuntu20.04 ROS Noetic 需要将激光雷达与PC连接&#xff0c;然后在设置>网络>有线中将IPv4改为手动&#xff0c;并且地址为192.168.1.100&#xff0c;子网掩码为255.255.255.0&#xff0c…

leetcode61. 旋转链表(java)

旋转链表 leetcode61. 旋转链表题目描述 解题思路代码演示链表专题 leetcode61. 旋转链表 Leetcode链接&#xff1a; https://leetcode.cn/problems/rotate-list/ 题目描述 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例…

浅析 xml 数据格式文件

浅析 xml 数据格式文件 xml ( Extensible Markup Language ) 全称 -> 可拓展的标记语言&#xff1b; xml文件的主要用途&#xff1a;xml文件主要用于数据的 传输 和 存储&#xff0c;并不是展示&#xff1b; xml标签与html的区别&#xff1a;节点的标签使用方式和 html 十分…

【产品经理】企业的产品增长之路

英特尔前CEO安迪格鲁夫有本书叫做《Only the Paranoid Survive》&#xff0c;全文的中心思想是警示他人&#xff0c;要居安思危&#xff0c;唯有打破常规&#xff0c;不拘泥于现状才能生存。 一、为何企业都在关注增长&#xff1f; 1. 诺基亚的贱卖 13年市值曾位居全球上市公…

HNU-操作系统OS-作业1(4-9章)

这份文件是OS_homework_1 by计科2102 wolf 202108010XXX 文档设置了目录,可以通过目录快速跳转至答案部分。 第四章 4.1用以下标志运行程序:./process-run.py -l 5:100,5:100。CPU 利用率(CPU 使用时间的百分比)应该是多少?为什么你知道这一点?利用 -c 标记查看你…

Spring中如何获取Bean方法上的自定义注解

文章目录 背景描述场景复现问题追踪解决方案扩展思考 背景描述 项目中需要扫描出来所有 标注了自定义注解A的Service里面标注了自定义注解B的方法 来做后续处理。 基本的思路就是通过Spring提供的ApplicationContext#getBeansWithAnnotation反射 来实现。 但是&#xff0c;随…

【Spring】核心与设计思想

哈喽&#xff0c;哈喽&#xff0c;大家好~ 我是你们的老朋友&#xff1a;保护小周ღ 谈起Java 圈子里的框架&#xff0c;最年长最耀眼的莫过于 Spring 框架啦&#xff0c;如今已成为最流行、最广泛使用的Java开发框架之一。不知道大家有没有在使用 Spring 框架的时候思考过这…

11111111111

def cosine_similarity(vector_a, vector_b): “”" 计算两个向量之间的余弦相似度 :param vector_a: 向量 a :param vector_b: 向量 b :return: distance “”" vector_a np.mat(vector_a) vector_b np.mat(vector_b) num float(vector_a * vector_b.T) denom n…

华为OD机试真题 Java 实现【预定酒店】【2022Q4 100分】

一、题目描述 放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的 数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店 (n>=k>0) ,并由低到高打印酒店的价格。 二、输入描述 第一行: n,k,x 第二行: A[o] A[1] A[2]…A[n-1] 三…

djiango orm简单实现增删改查

目录 一、配置数据库1.1 在settings.py文件中找到DATABASES &#xff0c;配置数据库连接&#xff0c;这里用的是mysql 二、切换操作数据库的模块三、 创建一个app并注册3.1创建一个app3.2 注册app 三、在app1定义模型类四、迁移数据库&#xff0c;使用以下命令&#xff0c;生成…

Android修改aar并重新打包

目录 一.修改 aar 需要用到的工具&#xff08;就一个工具&#xff0c;使用方式非常简单&#xff0c;别担心&#xff09; 二.修改 aar 代码层业务逻辑 三.修改 aar layout 布局文件 四.附上recyclerview aar修改工程源码 一.修改 aar 需要用到的工具&#xff08;就一个工具&…

MKS SERVO4257D 闭环步进电机_系列8 CAN通讯示例

第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口&#xff0c;支持MODBUS-RTU通讯协议&#xff0c;内置高效FOC矢量算法&#xff0c;采用高精度编码器&#xff0c;通过位置反馈&a…

AD19操作注意事项及信息

直接在PCB编辑界面添加差分对&#xff08;差分布线&#xff09; 1.PCB边界界面Panels菜单调出PCB界面 2.选择框中信息&#xff0c;点击添加差分对即可&#xff0c;然后利用交互式差分对布线命令进行布线操作。&#xff08;前提设置好差分布线规则&#xff09; 过孔&#xff1a…

7年经验之谈 —— 如何进行渗透测试以提高软件安全性?

对于各种规模的企业和组织来说&#xff0c;软件安全是一个至关重要的问题。随着网络攻击越来越复杂&#xff0c;软件中的漏洞越来越多&#xff0c;确保你的软件安全比以往任何时候都更重要。提高软件安全性的一个有效方法是渗透测试&#xff08;penetration testing&#xff09…

6月9号软件资讯更新合集....

Vivaldi 6.1 发布&#xff0c;可绕过微软限制使用 Bing Chat 最新版本的 Vivaldi 可在桌面端伪装成 Edge&#xff0c;使其用户受益&#xff0c;并为工作空间和标签增加了更多的功能。 支持微软 Bing Chat Vivaldi 是建立在 Chromium 开源项目之上的。它与 Edge 和 Chrome 使用…

Android kotlin序列化之Parcelable详解与使用(二)

一、介绍 注解序列化篇&#xff1a;Android kotlin序列化之Parcelize详解与使用_蜗牛、Z的博客-CSDN博客 通过上一篇注解序列化&#xff0c;我们已了解的kotlin的序列化比Java复杂了很多。而且有好多问题&#xff0c;注解虽好&#xff0c;但是存在一些问题。 一般在大型商业…