Full Code of zhongzhuoyao/HCCR-GoogLeNet for AI

master 1278d273a2a0 cached
10 files
146.1 KB
103.4k tokens
10 symbols
1 requests
Download .txt
Repository: zhongzhuoyao/HCCR-GoogLeNet
Branch: master
Commit: 1278d273a2a0
Files: 10
Total size: 146.1 KB

Directory structure:
gitextract_kzcmmpk0/

├── OfflineGridUBytePicture.h
├── README.md
├── casia_googleNet_train_val.prototxt
├── casia_solver.prototxt
├── gabor.cpp
├── gabor.h
├── gbcodes3755.h
├── gradient.cpp
├── gradient.h
└── main.cpp

================================================
FILE CONTENTS
================================================

================================================
FILE: OfflineGridUBytePicture.h
================================================
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <fstream>
#include <vector>
#include <map>
#include <sstream>
#include <new>
#include <cmath>
using namespace std;

#define nCharacters 3755
#define characterWidth  112
#define characterHeight 112
#define maskWidth  120
#define maskHeight 120

class OfflineGridUBytePicture {

public:
	int label; //for character recognition
	short int width;
	short int height;
	vector<unsigned char> bitmap; //row major order

	OfflineGridUBytePicture(int width, int height, int label_) :
			width(width), height(height) {
		label = label_;
		bitmap.resize(height * width);
	}
	~OfflineGridUBytePicture() {
	}
};

struct gntCharacterHeader {
	unsigned int sampleSize;
	unsigned short label;
	unsigned short width;
	unsigned short height;
};



================================================
FILE: README.md
================================================
### High Performance Offline Handwritten Chinese Character Recognition Using GoogLeNet and Feature Maps

by Zhuoyao Zhong, Lianwen Jin, Zecheng Xie, South China University of Technology (SCUT), Published in ICDAR 2015.

### Details of our paper

* We designed a deep, powerful but with less parameters convolutional neural network, nemaly HCCR-GoogLeNet, for offline handwritten Chinese character recognition
* We were the first to propose to incorporate directional features (e.g., Gabor, HoG and gradient feature) as domain knowledge into deep convolutional neural network to boost performance on offline HCCR
* Our single HCCR-GoogLeNet was superior to all previous best single and ensemble CNN models in terms of both accuracy and storage performance on the ICDAR 2013 offline HCCR competition dataset. Our ensemble HCCR-GoogLeNet models achieved a better recognition result of 96.74%.

### Introduction of this repository
This repository is the source codes on our paper, inculding the prototxt file of HCCR-GoogLeNet CNN architecture definition for caffe framework and codes for directional feature extraction. For more information, please refer to our paper: http://arxiv.org/abs/1505.04925.

### Citing HCCR-GoogLeNet

If our codes are useful for your work, please cite our paper:
```
@inproceedings{HCCR-GoogLeNet, 
		title = {High Performance Offline Handwritten Chinese Character Recognition Using GoogLeNet and Feature Maps}, 
		author = {Zhuoyao Zhong, Lianwen Jin, Zecheng Xie}, 
		booktitle = {International Conference on Document Analysis and Recognition ({ICDAR})}}, 
		year = {2015} 
}
```


================================================
FILE: casia_googleNet_train_val.prototxt
================================================
name: "GoogleNet"
layers {
  name: "data"
  type: DATA
  top: "data"
  top: "label"
  data_param {
    source: "/home/dplearning03/zhongzhuoyao/offline_inception_baseline/leveldb3/offline-train-leveldb"
    mean_file: "/home/dplearning03/zhongzhuoyao/offline_inception_baseline/leveldb3/casia_mean.binaryproto"
    batch_size: 128
  }
  include: { phase: TRAIN }
}
layers {
  name: "data"
  type: DATA
  top: "data"
  top: "label"
  data_param {
    source: "/home/dplearning03/zhongzhuoyao/offline_inception_baseline/leveldb3/offline-cmp-leveldb"
    mean_file: "/home/dplearning03/zhongzhuoyao/offline_inception_baseline/leveldb3/casia_mean.binaryproto"
    batch_size: 490
  }
  include: { phase: TEST }
}
layers {
  name: "conv1"
  type: CONVOLUTION
  bottom: "data"
  top: "conv1"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 64
    kernel_size: 7
    stride: 2
    pad: 0
    weight_filler {
      type: "gaussian"
      std: 0.015
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu1"
  type: RELU
  bottom: "conv1"
  top: "conv1"
}
layers {
  name: "pool1"
  type: POOLING
  bottom: "conv1"
  top: "pool1"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
    pad: 0
  }
}
layers {
  name: "norm1"
  type: LRN
  bottom: "pool1"
  top: "norm1"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layers {
  name: "reduction2"
  type: CONVOLUTION
  bottom: "norm1"
  top: "reduction2"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 64
    pad: 0
    kernel_size: 1
    group: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_reduction2"
  type: RELU
  bottom: "reduction2"
  top: "reduction2"
}
layers {
  name: "conv2"
  type: CONVOLUTION
  bottom: "reduction2"
  top: "conv2"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 192
    pad: 1
    kernel_size: 3
    group: 1
    weight_filler {
      type: "gaussian"
      std: 0.02
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu2"
  type: RELU
  bottom: "conv2"
  top: "conv2"
}
layers {
  name: "norm2"
  type: LRN
  bottom: "conv2"
  top: "norm2"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layers {
  name: "pool2"
  type: POOLING
  bottom: "norm2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
    pad: 0
  }
}
# Inception module 1 ***************
layers {
  name: "icp1_reduction1"
  type: CONVOLUTION
  bottom: "pool2"
  top: "icp1_reduction1"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 96
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp1_reduction1"
  type: RELU
  bottom: "icp1_reduction1"
  top: "icp1_reduction1"
}
layers {
  name: "icp1_reduction2"
  type: CONVOLUTION
  bottom: "pool2"
  top: "icp1_reduction2"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 16
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp1_reduction2"
  type: RELU
  bottom: "icp1_reduction2"
  top: "icp1_reduction2"
}
layers {
  name: "icp1_pool"
  type: POOLING
  bottom: "pool2"
  top: "icp1_pool"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 1
    pad: 1
  }
}
# ***********
layers {
  name: "icp1_out0"
  type: CONVOLUTION
  bottom: "pool2"
  top: "icp1_out0"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 64
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp1_out0"
  type: RELU
  bottom: "icp1_out0"
  top: "icp1_out0"
}
layers {
  name: "icp1_out1"
  type: CONVOLUTION
  bottom: "icp1_reduction1"
  top: "icp1_out1"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 128
    pad: 1
    kernel_size: 3
    weight_filler {
      type: "gaussian"
      std: 0.04
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp1_out1"
  type: RELU
  bottom: "icp1_out1"
  top: "icp1_out1"
}
layers {
  name: "icp1_out2"
  type: CONVOLUTION
  bottom: "icp1_reduction2"
  top: "icp1_out2"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 32
    pad: 2
    kernel_size: 5
    weight_filler {
      type: "gaussian"
      std: 0.08
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp1_out2"
  type: RELU
  bottom: "icp1_out2"
  top: "icp1_out2"
}
layers {
  name: "icp1_out3"
  type: CONVOLUTION
  bottom: "icp1_pool"
  top: "icp1_out3"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 32
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp1_out3"
  type: RELU
  bottom: "icp1_out3"
  top: "icp1_out3"
}
# Concat them together
layers {
  name: "icp2_in"
  type: CONCAT
  bottom: "icp1_out0"
  bottom: "icp1_out1"
  bottom: "icp1_out2"
  bottom: "icp1_out3"
  top: "icp2_in"
}
# Inception module 2 ***************
layers {
  name: "icp2_reduction1"
  type: CONVOLUTION
  bottom: "icp2_in"
  top: "icp2_reduction1"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 128
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp2_reduction1"
  type: RELU
  bottom: "icp2_reduction1"
  top: "icp2_reduction1"
}
layers {
  name: "icp2_reduction2"
  type: CONVOLUTION
  bottom: "icp2_in"
  top: "icp2_reduction2"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 32
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp2_reduction2"
  type: RELU
  bottom: "icp2_reduction2"
  top: "icp2_reduction2"
}
layers {
  name: "icp2_pool"
  type: POOLING
  bottom: "icp2_in"
  top: "icp2_pool"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 1
    pad: 1
  }
}
# ***********
layers {
  name: "icp2_out0"
  type: CONVOLUTION
  bottom: "icp2_in"
  top: "icp2_out0"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 128
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp2_out0"
  type: RELU
  bottom: "icp2_out0"
  top: "icp2_out0"
}
layers {
  name: "icp2_out1"
  type: CONVOLUTION
  bottom: "icp2_reduction1"
  top: "icp2_out1"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 192
    pad: 1
    kernel_size: 3
    weight_filler {
      type: "gaussian"
      std: 0.04
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp2_out1"
  type: RELU
  bottom: "icp2_out1"
  top: "icp2_out1"
}
layers {
  name: "icp2_out2"
  type: CONVOLUTION
  bottom: "icp2_reduction2"
  top: "icp2_out2"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 96
    pad: 2
    kernel_size: 5
    weight_filler {
      type: "gaussian"
      std: 0.08
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp2_out2"
  type: RELU
  bottom: "icp2_out2"
  top: "icp2_out2"
}
layers {
  name: "icp2_out3"
  type: CONVOLUTION
  bottom: "icp2_pool"
  top: "icp2_out3"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 64
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp2_out3"
  type: RELU
  bottom: "icp2_out3"
  top: "icp2_out3"
}
# Concat them together
layers {
  name: "icp2_out"
  type: CONCAT
  bottom: "icp2_out0"
  bottom: "icp2_out1"
  bottom: "icp2_out2"
  bottom: "icp2_out3"
  top: "icp2_out"
}
layers {
  name: "icp3_in"
  type: POOLING
  bottom: "icp2_out"
  top: "icp3_in"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
    pad: 0
  }
}
# Inception module 3 ***************
layers {
  name: "icp3_reduction1"
  type: CONVOLUTION
  bottom: "icp3_in"
  top: "icp3_reduction1"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 112
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp3_reduction1"
  type: RELU
  bottom: "icp3_reduction1"
  top: "icp3_reduction1"
}
layers {
  name: "icp3_reduction2"
  type: CONVOLUTION
  bottom: "icp3_in"
  top: "icp3_reduction2"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 24
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp3_reduction2"
  type: RELU
  bottom: "icp3_reduction2"
  top: "icp3_reduction2"
}
layers {
  name: "icp3_pool"
  type: POOLING
  bottom: "icp3_in"
  top: "icp3_pool"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 1
    pad: 1
  }
}
# ***********
layers {
  name: "icp3_out0"
  type: CONVOLUTION
  bottom: "icp3_in"
  top: "icp3_out0"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 160
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp3_out0"
  type: RELU
  bottom: "icp3_out0"
  top: "icp3_out0"
}
layers {
  name: "icp3_out1"
  type: CONVOLUTION
  bottom: "icp3_reduction1"
  top: "icp3_out1"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 224
    pad: 1
    kernel_size: 3
    weight_filler {
      type: "gaussian"
      std: 0.04
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp3_out1"
  type: RELU
  bottom: "icp3_out1"
  top: "icp3_out1"
}
layers {
  name: "icp3_out2"
  type: CONVOLUTION
  bottom: "icp3_reduction2"
  top: "icp3_out2"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 64
    pad: 2
    kernel_size: 5
    weight_filler {
      type: "gaussian"
      std: 0.08
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp3_out2"
  type: RELU
  bottom: "icp3_out2"
  top: "icp3_out2"
}
layers {
  name: "icp3_out3"
  type: CONVOLUTION
  bottom: "icp3_pool"
  top: "icp3_out3"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 64
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp3_out3"
  type: RELU
  bottom: "icp3_out3"
  top: "icp3_out3"
}
# Concat them together
layers {
  name: "icp3_out"
  type: CONCAT
  bottom: "icp3_out0"
  bottom: "icp3_out1"
  bottom: "icp3_out2"
  bottom: "icp3_out3"
  top: "icp3_out"
}
# Inception module 4 ***************
layers {
  name: "icp4_reduction1"
  type: CONVOLUTION
  bottom: "icp3_out"
  top: "icp4_reduction1"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 160
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp4_reduction1"
  type: RELU
  bottom: "icp4_reduction1"
  top: "icp4_reduction1"
}
layers {
  name: "icp4_reduction2"
  type: CONVOLUTION
  bottom: "icp3_out"
  top: "icp4_reduction2"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 32
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp4_reduction2"
  type: RELU
  bottom: "icp4_reduction2"
  top: "icp4_reduction2"
}
layers {
  name: "icp4_pool"
  type: POOLING
  bottom: "icp3_out"
  top: "icp4_pool"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 1
    pad: 1
  }
}
# ***********
layers {
  name: "icp4_out0"
  type: CONVOLUTION
  bottom: "icp3_out"
  top: "icp4_out0"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 256
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp4_out0"
  type: RELU
  bottom: "icp4_out0"
  top: "icp4_out0"
}
layers {
  name: "icp4_out1"
  type: CONVOLUTION
  bottom: "icp4_reduction1"
  top: "icp4_out1"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 320
    pad: 1
    kernel_size: 3
    weight_filler {
      type: "gaussian"
      std: 0.04
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp4_out1"
  type: RELU
  bottom: "icp4_out1"
  top: "icp4_out1"
}
layers {
  name: "icp4_out2"
  type: CONVOLUTION
  bottom: "icp4_reduction2"
  top: "icp4_out2"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 128
    pad: 2
    kernel_size: 5
    weight_filler {
      type: "gaussian"
      std: 0.08
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp4_out2"
  type: RELU
  bottom: "icp4_out2"
  top: "icp4_out2"
}
layers {
  name: "icp4_out3"
  type: CONVOLUTION
  bottom: "icp4_pool"
  top: "icp4_out3"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 128
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_icp4_out3"
  type: RELU
  bottom: "icp4_out3"
  top: "icp4_out3"
}
# Concat them together
layers {
  name: "icp4_out"
  type: CONCAT
  bottom: "icp4_out0"
  bottom: "icp4_out1"
  bottom: "icp4_out2"
  bottom: "icp4_out3"
  top: "icp4_out"
}
# classification branch
layers {
  name: "cls3_pool"
  type: POOLING
  bottom: "icp4_out"
  top: "cls3_pool"
  pooling_param {
    pool: AVE
    kernel_size: 5
    stride: 3
    pad: 0
    # This padding is somewhat special
  }
}
layers {
  name: "cls3_reduction"
  type: CONVOLUTION
  bottom: "cls3_pool"
  top: "cls3_reduction"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  convolution_param {
    num_output: 128
    pad: 0
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_cls3_reduction"
  type: RELU
  bottom: "cls3_reduction"
  top: "cls3_reduction"
}
layers {
  name: "cls3_fc1"
  type: INNER_PRODUCT
  bottom: "cls3_reduction"
  top: "cls3_fc1"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  inner_product_param {
    num_output: 1024
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "relu_cls3_fc1"
  type: RELU
  bottom: "cls3_fc1"
  top: "cls3_fc1"
}
layers {
  name: "cls3_drop"
  type: DROPOUT
  bottom: "cls3_fc1"
  top: "cls3_fc1"
  dropout_param {
    dropout_ratio: 0.4
  }
}
layers {
  name: "cls3_fc2"
  type: INNER_PRODUCT
  bottom: "cls3_fc1"
  top: "cls3_fc2"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  inner_product_param {
    num_output: 3755
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layers {
  name: "loss"
  type: SOFTMAX_LOSS
  bottom: "cls3_fc2"
  bottom: "label"
  top: "loss"
}
layers {
  name: "accuracy1"
  type: ACCURACY
  bottom: "cls3_fc2"
  bottom: "label"
  top: "accuracy1"
  include: { phase: TEST }
}
layers {
  name: "accuracy2"
  type: ACCURACY
  bottom: "cls3_fc2"
  bottom: "label"
  top: "accuracy2"
  include: { phase: TEST }
  accuracy_param {
    top_k: 2
  }
}
layers {
  name: "accuracy5"
  type: ACCURACY
  bottom: "cls3_fc2"
  bottom: "label"
  top: "accuracy5"
  include: { phase: TEST }
  accuracy_param {
    top_k: 5
  }
}
layers {
  name: "accuracy10"
  type: ACCURACY
  bottom: "cls3_fc2"
  bottom: "label"
  top: "accuracy10"
  include: { phase: TEST }
  accuracy_param {
    top_k: 10
  }
}


================================================
FILE: casia_solver.prototxt
================================================
net: "casia_googleNet_train_val.prototxt"
test_iter: 458
test_interval: 5000
base_lr: 0.01
lr_policy: "step"
gamma: 0.1
stepsize: 100000
display: 100
max_iter: 350000
momentum: 0.9
weight_decay: 0.0005
snapshot: 5000
snapshot_prefix: "/home/dplearning03/zhongzhuoyao/offline_inception_baseline/leveldb3/snapshot/casia_train"
solver_mode: GPU
device_id :0


================================================
FILE: gabor.cpp
================================================
#include "gabor.h"

cv::Mat getMyGabor(int width, int height, int U, int V, double Kmax, double f,
			   double sigma, int ktype, const string kernel_name)
{
	int half_width = width / 2;
	int half_height = height / 2;
	double Qu = PI*U/8;
	double sqsigma = sigma*sigma;
	double Kv = Kmax/pow(f,V);
	double postmean = exp(-sqsigma/2);

	cv::Mat kernel_re(width, height, ktype);
	cv::Mat kernel_im(width, height, ktype);
	cv::Mat kernel_mag(width, height, ktype);

	double tmp1, tmp2, tmp3;
	for(int j = -half_height; j <= half_height; j++){
		for(int i = -half_width; i <= half_width; i++){
			tmp1 = exp(-(Kv*Kv*(j*j+i*i))/(2*sqsigma));
			tmp2 = cos(Kv*cos(Qu)*i + Kv*sin(Qu)*j) - postmean;
			tmp3 = sin(Kv*cos(Qu)*i + Kv*sin(Qu)*j);

			kernel_re.at<float>(j+half_height, i+half_width) =
				(float)(Kv*Kv*tmp1*tmp2/sqsigma);

			kernel_im.at<float>(j+half_height, i+half_width) =
				(float)(Kv*Kv*tmp1*tmp3/sqsigma);
		}
	}

	magnitude(kernel_re, kernel_im, kernel_mag);

	if(kernel_name.compare("real") == 0)
		return kernel_re;
	else if(kernel_name.compare("imag") == 0)
		return kernel_im;
	else{
		printf("Invalid kernel name!\n");
		return kernel_mag;
	}
}

void gabor_filter(cv::Mat& img,vector<cv::Mat> &featureMaps)
{
	//cv::Mat img input character image
	const int kernel_size = 7; // should be odd
	// variables for gabor filter
	double Kmax = PI/2;
	double f = sqrt(2.0);
	double sigma = 2*PI;
	int U = 0;
	int V = 0;
	int GaborH = kernel_size;
	int GaborW = kernel_size;
	int UStart = 0, UEnd = 8;
	int VStart = 1, VEnd = 2;
	// variables for filter2D
	cv::Point archor(-1,-1);
	int ddepth = CV_32F;//CV_64F
	//double delta = 0;
	//eight orientation in terms of one frequnecy
	for(V = VStart; V < VEnd; V++){
		for(U = UStart; U < UEnd; U++){
			cv::Mat kernel_re, kernel_im;
			cv::Mat dst_re, dst_im, dst_mag;
			kernel_re = getMyGabor(GaborW, GaborH, U, V,
				Kmax, f, sigma, CV_32F, "real");
			kernel_im = getMyGabor(GaborW, GaborH, U, V,
				Kmax, f, sigma, CV_32F, "imag");
			// flip kernel
			// Gabor kernel is symmetric, so do not need flip
			filter2D(img, dst_re, ddepth, kernel_re);
			filter2D(img, dst_im, ddepth, kernel_im);

			dst_mag.create(img.rows, img.cols, CV_32FC1);
			magnitude(cv::Mat(dst_re),cv::Mat(dst_im),
				dst_mag);
			//normalize gabor kernel
			cv::normalize(dst_mag, dst_mag, 0, 255, CV_MINMAX);
			dst_mag.convertTo(dst_mag,CV_8U);		
			featureMaps.push_back(dst_mag);
			kernel_re.release();
			kernel_im.release();
			dst_re.release();
			dst_im.release();
			dst_mag.release();
		}
	}
}


================================================
FILE: gabor.h
================================================
#include <string>
#include <vector>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;
using namespace std;

const double PI = 3.14159265;

cv::Mat getMyGabor(int width, int height, int U, int V, double Kmax, double f,
			   double sigma, int ktype, const string kernel_name);

void gabor_filter(cv::Mat& img,vector<cv::Mat> &featureMaps);


================================================
FILE: gbcodes3755.h
================================================
//CASIA: To read  a POT file, use gbcodesPOT: A1B0 on disk is read to hex integer 0xb0a1
//                                            Use for printing in hex as well.
//       To write a CRO file, use gbcodesCRO: 0xa1b0 is written to file as B0A1
//       To write a GNT file, use gbcodesCRO: B0A1 on disk is read as 0xa1b0
#include<iostream>
using namespace std;

int gbcodesCRO[]={ //c3755 labelDictionary
  0xa1b0, 0xa2b0, 0xa3b0, 0xa4b0, 0xa5b0, 0xa6b0, 0xa7b0, 0xa8b0, 0xa9b0, 0xaab0,
  0xabb0, 0xacb0, 0xadb0, 0xaeb0, 0xafb0, 0xb0b0, 0xb1b0, 0xb2b0, 0xb3b0, 0xb4b0,
  0xb5b0, 0xb6b0, 0xb7b0, 0xb8b0, 0xb9b0, 0xbab0, 0xbbb0, 0xbcb0, 0xbdb0, 0xbeb0,
  0xbfb0, 0xc0b0, 0xc1b0, 0xc2b0, 0xc3b0, 0xc4b0, 0xc5b0, 0xc6b0, 0xc7b0, 0xc8b0,
  0xc9b0, 0xcab0, 0xcbb0, 0xccb0, 0xcdb0, 0xceb0, 0xcfb0, 0xd0b0, 0xd1b0, 0xd2b0,
  0xd3b0, 0xd4b0, 0xd5b0, 0xd6b0, 0xd7b0, 0xd8b0, 0xd9b0, 0xdab0, 0xdbb0, 0xdcb0,
  0xddb0, 0xdeb0, 0xdfb0, 0xe0b0, 0xe1b0, 0xe2b0, 0xe3b0, 0xe4b0, 0xe5b0, 0xe6b0,
  0xe7b0, 0xe8b0, 0xe9b0, 0xeab0, 0xebb0, 0xecb0, 0xedb0, 0xeeb0, 0xefb0, 0xf0b0,
  0xf1b0, 0xf2b0, 0xf3b0, 0xf4b0, 0xf5b0, 0xf6b0, 0xf7b0, 0xf8b0, 0xf9b0, 0xfab0,
  0xfbb0, 0xfcb0, 0xfdb0, 0xfeb0, 0xa1b1, 0xa2b1, 0xa3b1, 0xa4b1, 0xa5b1, 0xa6b1,
  0xa7b1, 0xa8b1, 0xa9b1, 0xaab1, 0xabb1, 0xacb1, 0xadb1, 0xaeb1, 0xafb1, 0xb0b1,
  0xb1b1, 0xb2b1, 0xb3b1, 0xb4b1, 0xb5b1, 0xb6b1, 0xb7b1, 0xb8b1, 0xb9b1, 0xbab1,
  0xbbb1, 0xbcb1, 0xbdb1, 0xbeb1, 0xbfb1, 0xc0b1, 0xc1b1, 0xc2b1, 0xc3b1, 0xc4b1,
  0xc5b1, 0xc6b1, 0xc7b1, 0xc8b1, 0xc9b1, 0xcab1, 0xcbb1, 0xccb1, 0xcdb1, 0xceb1,
  0xcfb1, 0xd0b1, 0xd1b1, 0xd2b1, 0xd3b1, 0xd4b1, 0xd5b1, 0xd6b1, 0xd7b1, 0xd8b1,
  0xd9b1, 0xdab1, 0xdbb1, 0xdcb1, 0xddb1, 0xdeb1, 0xdfb1, 0xe0b1, 0xe1b1, 0xe2b1,
  0xe3b1, 0xe4b1, 0xe5b1, 0xe6b1, 0xe7b1, 0xe8b1, 0xe9b1, 0xeab1, 0xebb1, 0xecb1,
  0xedb1, 0xeeb1, 0xefb1, 0xf0b1, 0xf1b1, 0xf2b1, 0xf3b1, 0xf4b1, 0xf5b1, 0xf6b1,
  0xf7b1, 0xf8b1, 0xf9b1, 0xfab1, 0xfbb1, 0xfcb1, 0xfdb1, 0xfeb1, 0xa1b2, 0xa2b2,
  0xa3b2, 0xa4b2, 0xa5b2, 0xa6b2, 0xa7b2, 0xa8b2, 0xa9b2, 0xaab2, 0xabb2, 0xacb2,
  0xadb2, 0xaeb2, 0xafb2, 0xb0b2, 0xb1b2, 0xb2b2, 0xb3b2, 0xb4b2, 0xb5b2, 0xb6b2,
  0xb7b2, 0xb8b2, 0xb9b2, 0xbab2, 0xbbb2, 0xbcb2, 0xbdb2, 0xbeb2, 0xbfb2, 0xc0b2,
  0xc1b2, 0xc2b2, 0xc3b2, 0xc4b2, 0xc5b2, 0xc6b2, 0xc7b2, 0xc8b2, 0xc9b2, 0xcab2,
  0xcbb2, 0xccb2, 0xcdb2, 0xceb2, 0xcfb2, 0xd0b2, 0xd1b2, 0xd2b2, 0xd3b2, 0xd4b2,
  0xd5b2, 0xd6b2, 0xd7b2, 0xd8b2, 0xd9b2, 0xdab2, 0xdbb2, 0xdcb2, 0xddb2, 0xdeb2,
  0xdfb2, 0xe0b2, 0xe1b2, 0xe2b2, 0xe3b2, 0xe4b2, 0xe5b2, 0xe6b2, 0xe7b2, 0xe8b2,
  0xe9b2, 0xeab2, 0xebb2, 0xecb2, 0xedb2, 0xeeb2, 0xefb2, 0xf0b2, 0xf1b2, 0xf2b2,
  0xf3b2, 0xf4b2, 0xf5b2, 0xf6b2, 0xf7b2, 0xf8b2, 0xf9b2, 0xfab2, 0xfbb2, 0xfcb2,
  0xfdb2, 0xfeb2, 0xa1b3, 0xa2b3, 0xa3b3, 0xa4b3, 0xa5b3, 0xa6b3, 0xa7b3, 0xa8b3,
  0xa9b3, 0xaab3, 0xabb3, 0xacb3, 0xadb3, 0xaeb3, 0xafb3, 0xb0b3, 0xb1b3, 0xb2b3,
  0xb3b3, 0xb4b3, 0xb5b3, 0xb6b3, 0xb7b3, 0xb8b3, 0xb9b3, 0xbab3, 0xbbb3, 0xbcb3,
  0xbdb3, 0xbeb3, 0xbfb3, 0xc0b3, 0xc1b3, 0xc2b3, 0xc3b3, 0xc4b3, 0xc5b3, 0xc6b3,
  0xc7b3, 0xc8b3, 0xc9b3, 0xcab3, 0xcbb3, 0xccb3, 0xcdb3, 0xceb3, 0xcfb3, 0xd0b3,
  0xd1b3, 0xd2b3, 0xd3b3, 0xd4b3, 0xd5b3, 0xd6b3, 0xd7b3, 0xd8b3, 0xd9b3, 0xdab3,
  0xdbb3, 0xdcb3, 0xddb3, 0xdeb3, 0xdfb3, 0xe0b3, 0xe1b3, 0xe2b3, 0xe3b3, 0xe4b3,
  0xe5b3, 0xe6b3, 0xe7b3, 0xe8b3, 0xe9b3, 0xeab3, 0xebb3, 0xecb3, 0xedb3, 0xeeb3,
  0xefb3, 0xf0b3, 0xf1b3, 0xf2b3, 0xf3b3, 0xf4b3, 0xf5b3, 0xf6b3, 0xf7b3, 0xf8b3,
  0xf9b3, 0xfab3, 0xfbb3, 0xfcb3, 0xfdb3, 0xfeb3, 0xa1b4, 0xa2b4, 0xa3b4, 0xa4b4,
  0xa5b4, 0xa6b4, 0xa7b4, 0xa8b4, 0xa9b4, 0xaab4, 0xabb4, 0xacb4, 0xadb4, 0xaeb4,
  0xafb4, 0xb0b4, 0xb1b4, 0xb2b4, 0xb3b4, 0xb4b4, 0xb5b4, 0xb6b4, 0xb7b4, 0xb8b4,
  0xb9b4, 0xbab4, 0xbbb4, 0xbcb4, 0xbdb4, 0xbeb4, 0xbfb4, 0xc0b4, 0xc1b4, 0xc2b4,
  0xc3b4, 0xc4b4, 0xc5b4, 0xc6b4, 0xc7b4, 0xc8b4, 0xc9b4, 0xcab4, 0xcbb4, 0xccb4,
  0xcdb4, 0xceb4, 0xcfb4, 0xd0b4, 0xd1b4, 0xd2b4, 0xd3b4, 0xd4b4, 0xd5b4, 0xd6b4,
  0xd7b4, 0xd8b4, 0xd9b4, 0xdab4, 0xdbb4, 0xdcb4, 0xddb4, 0xdeb4, 0xdfb4, 0xe0b4,
  0xe1b4, 0xe2b4, 0xe3b4, 0xe4b4, 0xe5b4, 0xe6b4, 0xe7b4, 0xe8b4, 0xe9b4, 0xeab4,
  0xebb4, 0xecb4, 0xedb4, 0xeeb4, 0xefb4, 0xf0b4, 0xf1b4, 0xf2b4, 0xf3b4, 0xf4b4,
  0xf5b4, 0xf6b4, 0xf7b4, 0xf8b4, 0xf9b4, 0xfab4, 0xfbb4, 0xfcb4, 0xfdb4, 0xfeb4,
  0xa1b5, 0xa2b5, 0xa3b5, 0xa4b5, 0xa5b5, 0xa6b5, 0xa7b5, 0xa8b5, 0xa9b5, 0xaab5,
  0xabb5, 0xacb5, 0xadb5, 0xaeb5, 0xafb5, 0xb0b5, 0xb1b5, 0xb2b5, 0xb3b5, 0xb4b5,
  0xb5b5, 0xb6b5, 0xb7b5, 0xb8b5, 0xb9b5, 0xbab5, 0xbbb5, 0xbcb5, 0xbdb5, 0xbeb5,
  0xbfb5, 0xc0b5, 0xc1b5, 0xc2b5, 0xc3b5, 0xc4b5, 0xc5b5, 0xc6b5, 0xc7b5, 0xc8b5,
  0xc9b5, 0xcab5, 0xcbb5, 0xccb5, 0xcdb5, 0xceb5, 0xcfb5, 0xd0b5, 0xd1b5, 0xd2b5,
  0xd3b5, 0xd4b5, 0xd5b5, 0xd6b5, 0xd7b5, 0xd8b5, 0xd9b5, 0xdab5, 0xdbb5, 0xdcb5,
  0xddb5, 0xdeb5, 0xdfb5, 0xe0b5, 0xe1b5, 0xe2b5, 0xe3b5, 0xe4b5, 0xe5b5, 0xe6b5,
  0xe7b5, 0xe8b5, 0xe9b5, 0xeab5, 0xebb5, 0xecb5, 0xedb5, 0xeeb5, 0xefb5, 0xf0b5,
  0xf1b5, 0xf2b5, 0xf3b5, 0xf4b5, 0xf5b5, 0xf6b5, 0xf7b5, 0xf8b5, 0xf9b5, 0xfab5,
  0xfbb5, 0xfcb5, 0xfdb5, 0xfeb5, 0xa1b6, 0xa2b6, 0xa3b6, 0xa4b6, 0xa5b6, 0xa6b6,
  0xa7b6, 0xa8b6, 0xa9b6, 0xaab6, 0xabb6, 0xacb6, 0xadb6, 0xaeb6, 0xafb6, 0xb0b6,
  0xb1b6, 0xb2b6, 0xb3b6, 0xb4b6, 0xb5b6, 0xb6b6, 0xb7b6, 0xb8b6, 0xb9b6, 0xbab6,
  0xbbb6, 0xbcb6, 0xbdb6, 0xbeb6, 0xbfb6, 0xc0b6, 0xc1b6, 0xc2b6, 0xc3b6, 0xc4b6,
  0xc5b6, 0xc6b6, 0xc7b6, 0xc8b6, 0xc9b6, 0xcab6, 0xcbb6, 0xccb6, 0xcdb6, 0xceb6,
  0xcfb6, 0xd0b6, 0xd1b6, 0xd2b6, 0xd3b6, 0xd4b6, 0xd5b6, 0xd6b6, 0xd7b6, 0xd8b6,
  0xd9b6, 0xdab6, 0xdbb6, 0xdcb6, 0xddb6, 0xdeb6, 0xdfb6, 0xe0b6, 0xe1b6, 0xe2b6,
  0xe3b6, 0xe4b6, 0xe5b6, 0xe6b6, 0xe7b6, 0xe8b6, 0xe9b6, 0xeab6, 0xebb6, 0xecb6,
  0xedb6, 0xeeb6, 0xefb6, 0xf0b6, 0xf1b6, 0xf2b6, 0xf3b6, 0xf4b6, 0xf5b6, 0xf6b6,
  0xf7b6, 0xf8b6, 0xf9b6, 0xfab6, 0xfbb6, 0xfcb6, 0xfdb6, 0xfeb6, 0xa1b7, 0xa2b7,
  0xa3b7, 0xa4b7, 0xa5b7, 0xa6b7, 0xa7b7, 0xa8b7, 0xa9b7, 0xaab7, 0xabb7, 0xacb7,
  0xadb7, 0xaeb7, 0xafb7, 0xb0b7, 0xb1b7, 0xb2b7, 0xb3b7, 0xb4b7, 0xb5b7, 0xb6b7,
  0xb7b7, 0xb8b7, 0xb9b7, 0xbab7, 0xbbb7, 0xbcb7, 0xbdb7, 0xbeb7, 0xbfb7, 0xc0b7,
  0xc1b7, 0xc2b7, 0xc3b7, 0xc4b7, 0xc5b7, 0xc6b7, 0xc7b7, 0xc8b7, 0xc9b7, 0xcab7,
  0xcbb7, 0xccb7, 0xcdb7, 0xceb7, 0xcfb7, 0xd0b7, 0xd1b7, 0xd2b7, 0xd3b7, 0xd4b7,
  0xd5b7, 0xd6b7, 0xd7b7, 0xd8b7, 0xd9b7, 0xdab7, 0xdbb7, 0xdcb7, 0xddb7, 0xdeb7,
  0xdfb7, 0xe0b7, 0xe1b7, 0xe2b7, 0xe3b7, 0xe4b7, 0xe5b7, 0xe6b7, 0xe7b7, 0xe8b7,
  0xe9b7, 0xeab7, 0xebb7, 0xecb7, 0xedb7, 0xeeb7, 0xefb7, 0xf0b7, 0xf1b7, 0xf2b7,
  0xf3b7, 0xf4b7, 0xf5b7, 0xf6b7, 0xf7b7, 0xf8b7, 0xf9b7, 0xfab7, 0xfbb7, 0xfcb7,
  0xfdb7, 0xfeb7, 0xa1b8, 0xa2b8, 0xa3b8, 0xa4b8, 0xa5b8, 0xa6b8, 0xa7b8, 0xa8b8,
  0xa9b8, 0xaab8, 0xabb8, 0xacb8, 0xadb8, 0xaeb8, 0xafb8, 0xb0b8, 0xb1b8, 0xb2b8,
  0xb3b8, 0xb4b8, 0xb5b8, 0xb6b8, 0xb7b8, 0xb8b8, 0xb9b8, 0xbab8, 0xbbb8, 0xbcb8,
  0xbdb8, 0xbeb8, 0xbfb8, 0xc0b8, 0xc1b8, 0xc2b8, 0xc3b8, 0xc4b8, 0xc5b8, 0xc6b8,
  0xc7b8, 0xc8b8, 0xc9b8, 0xcab8, 0xcbb8, 0xccb8, 0xcdb8, 0xceb8, 0xcfb8, 0xd0b8,
  0xd1b8, 0xd2b8, 0xd3b8, 0xd4b8, 0xd5b8, 0xd6b8, 0xd7b8, 0xd8b8, 0xd9b8, 0xdab8,
  0xdbb8, 0xdcb8, 0xddb8, 0xdeb8, 0xdfb8, 0xe0b8, 0xe1b8, 0xe2b8, 0xe3b8, 0xe4b8,
  0xe5b8, 0xe6b8, 0xe7b8, 0xe8b8, 0xe9b8, 0xeab8, 0xebb8, 0xecb8, 0xedb8, 0xeeb8,
  0xefb8, 0xf0b8, 0xf1b8, 0xf2b8, 0xf3b8, 0xf4b8, 0xf5b8, 0xf6b8, 0xf7b8, 0xf8b8,
  0xf9b8, 0xfab8, 0xfbb8, 0xfcb8, 0xfdb8, 0xfeb8, 0xa1b9, 0xa2b9, 0xa3b9, 0xa4b9,
  0xa5b9, 0xa6b9, 0xa7b9, 0xa8b9, 0xa9b9, 0xaab9, 0xabb9, 0xacb9, 0xadb9, 0xaeb9,
  0xafb9, 0xb0b9, 0xb1b9, 0xb2b9, 0xb3b9, 0xb4b9, 0xb5b9, 0xb6b9, 0xb7b9, 0xb8b9,
  0xb9b9, 0xbab9, 0xbbb9, 0xbcb9, 0xbdb9, 0xbeb9, 0xbfb9, 0xc0b9, 0xc1b9, 0xc2b9,
  0xc3b9, 0xc4b9, 0xc5b9, 0xc6b9, 0xc7b9, 0xc8b9, 0xc9b9, 0xcab9, 0xcbb9, 0xccb9,
  0xcdb9, 0xceb9, 0xcfb9, 0xd0b9, 0xd1b9, 0xd2b9, 0xd3b9, 0xd4b9, 0xd5b9, 0xd6b9,
  0xd7b9, 0xd8b9, 0xd9b9, 0xdab9, 0xdbb9, 0xdcb9, 0xddb9, 0xdeb9, 0xdfb9, 0xe0b9,
  0xe1b9, 0xe2b9, 0xe3b9, 0xe4b9, 0xe5b9, 0xe6b9, 0xe7b9, 0xe8b9, 0xe9b9, 0xeab9,
  0xebb9, 0xecb9, 0xedb9, 0xeeb9, 0xefb9, 0xf0b9, 0xf1b9, 0xf2b9, 0xf3b9, 0xf4b9,
  0xf5b9, 0xf6b9, 0xf7b9, 0xf8b9, 0xf9b9, 0xfab9, 0xfbb9, 0xfcb9, 0xfdb9, 0xfeb9,
  0xa1ba, 0xa2ba, 0xa3ba, 0xa4ba, 0xa5ba, 0xa6ba, 0xa7ba, 0xa8ba, 0xa9ba, 0xaaba,
  0xabba, 0xacba, 0xadba, 0xaeba, 0xafba, 0xb0ba, 0xb1ba, 0xb2ba, 0xb3ba, 0xb4ba,
  0xb5ba, 0xb6ba, 0xb7ba, 0xb8ba, 0xb9ba, 0xbaba, 0xbbba, 0xbcba, 0xbdba, 0xbeba,
  0xbfba, 0xc0ba, 0xc1ba, 0xc2ba, 0xc3ba, 0xc4ba, 0xc5ba, 0xc6ba, 0xc7ba, 0xc8ba,
  0xc9ba, 0xcaba, 0xcbba, 0xccba, 0xcdba, 0xceba, 0xcfba, 0xd0ba, 0xd1ba, 0xd2ba,
  0xd3ba, 0xd4ba, 0xd5ba, 0xd6ba, 0xd7ba, 0xd8ba, 0xd9ba, 0xdaba, 0xdbba, 0xdcba,
  0xddba, 0xdeba, 0xdfba, 0xe0ba, 0xe1ba, 0xe2ba, 0xe3ba, 0xe4ba, 0xe5ba, 0xe6ba,
  0xe7ba, 0xe8ba, 0xe9ba, 0xeaba, 0xebba, 0xecba, 0xedba, 0xeeba, 0xefba, 0xf0ba,
  0xf1ba, 0xf2ba, 0xf3ba, 0xf4ba, 0xf5ba, 0xf6ba, 0xf7ba, 0xf8ba, 0xf9ba, 0xfaba,
  0xfbba, 0xfcba, 0xfdba, 0xfeba, 0xa1bb, 0xa2bb, 0xa3bb, 0xa4bb, 0xa5bb, 0xa6bb,
  0xa7bb, 0xa8bb, 0xa9bb, 0xaabb, 0xabbb, 0xacbb, 0xadbb, 0xaebb, 0xafbb, 0xb0bb,
  0xb1bb, 0xb2bb, 0xb3bb, 0xb4bb, 0xb5bb, 0xb6bb, 0xb7bb, 0xb8bb, 0xb9bb, 0xbabb,
  0xbbbb, 0xbcbb, 0xbdbb, 0xbebb, 0xbfbb, 0xc0bb, 0xc1bb, 0xc2bb, 0xc3bb, 0xc4bb,
  0xc5bb, 0xc6bb, 0xc7bb, 0xc8bb, 0xc9bb, 0xcabb, 0xcbbb, 0xccbb, 0xcdbb, 0xcebb,
  0xcfbb, 0xd0bb, 0xd1bb, 0xd2bb, 0xd3bb, 0xd4bb, 0xd5bb, 0xd6bb, 0xd7bb, 0xd8bb,
  0xd9bb, 0xdabb, 0xdbbb, 0xdcbb, 0xddbb, 0xdebb, 0xdfbb, 0xe0bb, 0xe1bb, 0xe2bb,
  0xe3bb, 0xe4bb, 0xe5bb, 0xe6bb, 0xe7bb, 0xe8bb, 0xe9bb, 0xeabb, 0xebbb, 0xecbb,
  0xedbb, 0xeebb, 0xefbb, 0xf0bb, 0xf1bb, 0xf2bb, 0xf3bb, 0xf4bb, 0xf5bb, 0xf6bb,
  0xf7bb, 0xf8bb, 0xf9bb, 0xfabb, 0xfbbb, 0xfcbb, 0xfdbb, 0xfebb, 0xa1bc, 0xa2bc,
  0xa3bc, 0xa4bc, 0xa5bc, 0xa6bc, 0xa7bc, 0xa8bc, 0xa9bc, 0xaabc, 0xabbc, 0xacbc,
  0xadbc, 0xaebc, 0xafbc, 0xb0bc, 0xb1bc, 0xb2bc, 0xb3bc, 0xb4bc, 0xb5bc, 0xb6bc,
  0xb7bc, 0xb8bc, 0xb9bc, 0xbabc, 0xbbbc, 0xbcbc, 0xbdbc, 0xbebc, 0xbfbc, 0xc0bc,
  0xc1bc, 0xc2bc, 0xc3bc, 0xc4bc, 0xc5bc, 0xc6bc, 0xc7bc, 0xc8bc, 0xc9bc, 0xcabc,
  0xcbbc, 0xccbc, 0xcdbc, 0xcebc, 0xcfbc, 0xd0bc, 0xd1bc, 0xd2bc, 0xd3bc, 0xd4bc,
  0xd5bc, 0xd6bc, 0xd7bc, 0xd8bc, 0xd9bc, 0xdabc, 0xdbbc, 0xdcbc, 0xddbc, 0xdebc,
  0xdfbc, 0xe0bc, 0xe1bc, 0xe2bc, 0xe3bc, 0xe4bc, 0xe5bc, 0xe6bc, 0xe7bc, 0xe8bc,
  0xe9bc, 0xeabc, 0xebbc, 0xecbc, 0xedbc, 0xeebc, 0xefbc, 0xf0bc, 0xf1bc, 0xf2bc,
  0xf3bc, 0xf4bc, 0xf5bc, 0xf6bc, 0xf7bc, 0xf8bc, 0xf9bc, 0xfabc, 0xfbbc, 0xfcbc,
  0xfdbc, 0xfebc, 0xa1bd, 0xa2bd, 0xa3bd, 0xa4bd, 0xa5bd, 0xa6bd, 0xa7bd, 0xa8bd,
  0xa9bd, 0xaabd, 0xabbd, 0xacbd, 0xadbd, 0xaebd, 0xafbd, 0xb0bd, 0xb1bd, 0xb2bd,
  0xb3bd, 0xb4bd, 0xb5bd, 0xb6bd, 0xb7bd, 0xb8bd, 0xb9bd, 0xbabd, 0xbbbd, 0xbcbd,
  0xbdbd, 0xbebd, 0xbfbd, 0xc0bd, 0xc1bd, 0xc2bd, 0xc3bd, 0xc4bd, 0xc5bd, 0xc6bd,
  0xc7bd, 0xc8bd, 0xc9bd, 0xcabd, 0xcbbd, 0xccbd, 0xcdbd, 0xcebd, 0xcfbd, 0xd0bd,
  0xd1bd, 0xd2bd, 0xd3bd, 0xd4bd, 0xd5bd, 0xd6bd, 0xd7bd, 0xd8bd, 0xd9bd, 0xdabd,
  0xdbbd, 0xdcbd, 0xddbd, 0xdebd, 0xdfbd, 0xe0bd, 0xe1bd, 0xe2bd, 0xe3bd, 0xe4bd,
  0xe5bd, 0xe6bd, 0xe7bd, 0xe8bd, 0xe9bd, 0xeabd, 0xebbd, 0xecbd, 0xedbd, 0xeebd,
  0xefbd, 0xf0bd, 0xf1bd, 0xf2bd, 0xf3bd, 0xf4bd, 0xf5bd, 0xf6bd, 0xf7bd, 0xf8bd,
  0xf9bd, 0xfabd, 0xfbbd, 0xfcbd, 0xfdbd, 0xfebd, 0xa1be, 0xa2be, 0xa3be, 0xa4be,
  0xa5be, 0xa6be, 0xa7be, 0xa8be, 0xa9be, 0xaabe, 0xabbe, 0xacbe, 0xadbe, 0xaebe,
  0xafbe, 0xb0be, 0xb1be, 0xb2be, 0xb3be, 0xb4be, 0xb5be, 0xb6be, 0xb7be, 0xb8be,
  0xb9be, 0xbabe, 0xbbbe, 0xbcbe, 0xbdbe, 0xbebe, 0xbfbe, 0xc0be, 0xc1be, 0xc2be,
  0xc3be, 0xc4be, 0xc5be, 0xc6be, 0xc7be, 0xc8be, 0xc9be, 0xcabe, 0xcbbe, 0xccbe,
  0xcdbe, 0xcebe, 0xcfbe, 0xd0be, 0xd1be, 0xd2be, 0xd3be, 0xd4be, 0xd5be, 0xd6be,
  0xd7be, 0xd8be, 0xd9be, 0xdabe, 0xdbbe, 0xdcbe, 0xddbe, 0xdebe, 0xdfbe, 0xe0be,
  0xe1be, 0xe2be, 0xe3be, 0xe4be, 0xe5be, 0xe6be, 0xe7be, 0xe8be, 0xe9be, 0xeabe,
  0xebbe, 0xecbe, 0xedbe, 0xeebe, 0xefbe, 0xf0be, 0xf1be, 0xf2be, 0xf3be, 0xf4be,
  0xf5be, 0xf6be, 0xf7be, 0xf8be, 0xf9be, 0xfabe, 0xfbbe, 0xfcbe, 0xfdbe, 0xfebe,
  0xa1bf, 0xa2bf, 0xa3bf, 0xa4bf, 0xa5bf, 0xa6bf, 0xa7bf, 0xa8bf, 0xa9bf, 0xaabf,
  0xabbf, 0xacbf, 0xadbf, 0xaebf, 0xafbf, 0xb0bf, 0xb1bf, 0xb2bf, 0xb3bf, 0xb4bf,
  0xb5bf, 0xb6bf, 0xb7bf, 0xb8bf, 0xb9bf, 0xbabf, 0xbbbf, 0xbcbf, 0xbdbf, 0xbebf,
  0xbfbf, 0xc0bf, 0xc1bf, 0xc2bf, 0xc3bf, 0xc4bf, 0xc5bf, 0xc6bf, 0xc7bf, 0xc8bf,
  0xc9bf, 0xcabf, 0xcbbf, 0xccbf, 0xcdbf, 0xcebf, 0xcfbf, 0xd0bf, 0xd1bf, 0xd2bf,
  0xd3bf, 0xd4bf, 0xd5bf, 0xd6bf, 0xd7bf, 0xd8bf, 0xd9bf, 0xdabf, 0xdbbf, 0xdcbf,
  0xddbf, 0xdebf, 0xdfbf, 0xe0bf, 0xe1bf, 0xe2bf, 0xe3bf, 0xe4bf, 0xe5bf, 0xe6bf,
  0xe7bf, 0xe8bf, 0xe9bf, 0xeabf, 0xebbf, 0xecbf, 0xedbf, 0xeebf, 0xefbf, 0xf0bf,
  0xf1bf, 0xf2bf, 0xf3bf, 0xf4bf, 0xf5bf, 0xf6bf, 0xf7bf, 0xf8bf, 0xf9bf, 0xfabf,
  0xfbbf, 0xfcbf, 0xfdbf, 0xfebf, 0xa1c0, 0xa2c0, 0xa3c0, 0xa4c0, 0xa5c0, 0xa6c0,
  0xa7c0, 0xa8c0, 0xa9c0, 0xaac0, 0xabc0, 0xacc0, 0xadc0, 0xaec0, 0xafc0, 0xb0c0,
  0xb1c0, 0xb2c0, 0xb3c0, 0xb4c0, 0xb5c0, 0xb6c0, 0xb7c0, 0xb8c0, 0xb9c0, 0xbac0,
  0xbbc0, 0xbcc0, 0xbdc0, 0xbec0, 0xbfc0, 0xc0c0, 0xc1c0, 0xc2c0, 0xc3c0, 0xc4c0,
  0xc5c0, 0xc6c0, 0xc7c0, 0xc8c0, 0xc9c0, 0xcac0, 0xcbc0, 0xccc0, 0xcdc0, 0xcec0,
  0xcfc0, 0xd0c0, 0xd1c0, 0xd2c0, 0xd3c0, 0xd4c0, 0xd5c0, 0xd6c0, 0xd7c0, 0xd8c0,
  0xd9c0, 0xdac0, 0xdbc0, 0xdcc0, 0xddc0, 0xdec0, 0xdfc0, 0xe0c0, 0xe1c0, 0xe2c0,
  0xe3c0, 0xe4c0, 0xe5c0, 0xe6c0, 0xe7c0, 0xe8c0, 0xe9c0, 0xeac0, 0xebc0, 0xecc0,
  0xedc0, 0xeec0, 0xefc0, 0xf0c0, 0xf1c0, 0xf2c0, 0xf3c0, 0xf4c0, 0xf5c0, 0xf6c0,
  0xf7c0, 0xf8c0, 0xf9c0, 0xfac0, 0xfbc0, 0xfcc0, 0xfdc0, 0xfec0, 0xa1c1, 0xa2c1,
  0xa3c1, 0xa4c1, 0xa5c1, 0xa6c1, 0xa7c1, 0xa8c1, 0xa9c1, 0xaac1, 0xabc1, 0xacc1,
  0xadc1, 0xaec1, 0xafc1, 0xb0c1, 0xb1c1, 0xb2c1, 0xb3c1, 0xb4c1, 0xb5c1, 0xb6c1,
  0xb7c1, 0xb8c1, 0xb9c1, 0xbac1, 0xbbc1, 0xbcc1, 0xbdc1, 0xbec1, 0xbfc1, 0xc0c1,
  0xc1c1, 0xc2c1, 0xc3c1, 0xc4c1, 0xc5c1, 0xc6c1, 0xc7c1, 0xc8c1, 0xc9c1, 0xcac1,
  0xcbc1, 0xccc1, 0xcdc1, 0xcec1, 0xcfc1, 0xd0c1, 0xd1c1, 0xd2c1, 0xd3c1, 0xd4c1,
  0xd5c1, 0xd6c1, 0xd7c1, 0xd8c1, 0xd9c1, 0xdac1, 0xdbc1, 0xdcc1, 0xddc1, 0xdec1,
  0xdfc1, 0xe0c1, 0xe1c1, 0xe2c1, 0xe3c1, 0xe4c1, 0xe5c1, 0xe6c1, 0xe7c1, 0xe8c1,
  0xe9c1, 0xeac1, 0xebc1, 0xecc1, 0xedc1, 0xeec1, 0xefc1, 0xf0c1, 0xf1c1, 0xf2c1,
  0xf3c1, 0xf4c1, 0xf5c1, 0xf6c1, 0xf7c1, 0xf8c1, 0xf9c1, 0xfac1, 0xfbc1, 0xfcc1,
  0xfdc1, 0xfec1, 0xa1c2, 0xa2c2, 0xa3c2, 0xa4c2, 0xa5c2, 0xa6c2, 0xa7c2, 0xa8c2,
  0xa9c2, 0xaac2, 0xabc2, 0xacc2, 0xadc2, 0xaec2, 0xafc2, 0xb0c2, 0xb1c2, 0xb2c2,
  0xb3c2, 0xb4c2, 0xb5c2, 0xb6c2, 0xb7c2, 0xb8c2, 0xb9c2, 0xbac2, 0xbbc2, 0xbcc2,
  0xbdc2, 0xbec2, 0xbfc2, 0xc0c2, 0xc1c2, 0xc2c2, 0xc3c2, 0xc4c2, 0xc5c2, 0xc6c2,
  0xc7c2, 0xc8c2, 0xc9c2, 0xcac2, 0xcbc2, 0xccc2, 0xcdc2, 0xcec2, 0xcfc2, 0xd0c2,
  0xd1c2, 0xd2c2, 0xd3c2, 0xd4c2, 0xd5c2, 0xd6c2, 0xd7c2, 0xd8c2, 0xd9c2, 0xdac2,
  0xdbc2, 0xdcc2, 0xddc2, 0xdec2, 0xdfc2, 0xe0c2, 0xe1c2, 0xe2c2, 0xe3c2, 0xe4c2,
  0xe5c2, 0xe6c2, 0xe7c2, 0xe8c2, 0xe9c2, 0xeac2, 0xebc2, 0xecc2, 0xedc2, 0xeec2,
  0xefc2, 0xf0c2, 0xf1c2, 0xf2c2, 0xf3c2, 0xf4c2, 0xf5c2, 0xf6c2, 0xf7c2, 0xf8c2,
  0xf9c2, 0xfac2, 0xfbc2, 0xfcc2, 0xfdc2, 0xfec2, 0xa1c3, 0xa2c3, 0xa3c3, 0xa4c3,
  0xa5c3, 0xa6c3, 0xa7c3, 0xa8c3, 0xa9c3, 0xaac3, 0xabc3, 0xacc3, 0xadc3, 0xaec3,
  0xafc3, 0xb0c3, 0xb1c3, 0xb2c3, 0xb3c3, 0xb4c3, 0xb5c3, 0xb6c3, 0xb7c3, 0xb8c3,
  0xb9c3, 0xbac3, 0xbbc3, 0xbcc3, 0xbdc3, 0xbec3, 0xbfc3, 0xc0c3, 0xc1c3, 0xc2c3,
  0xc3c3, 0xc4c3, 0xc5c3, 0xc6c3, 0xc7c3, 0xc8c3, 0xc9c3, 0xcac3, 0xcbc3, 0xccc3,
  0xcdc3, 0xcec3, 0xcfc3, 0xd0c3, 0xd1c3, 0xd2c3, 0xd3c3, 0xd4c3, 0xd5c3, 0xd6c3,
  0xd7c3, 0xd8c3, 0xd9c3, 0xdac3, 0xdbc3, 0xdcc3, 0xddc3, 0xdec3, 0xdfc3, 0xe0c3,
  0xe1c3, 0xe2c3, 0xe3c3, 0xe4c3, 0xe5c3, 0xe6c3, 0xe7c3, 0xe8c3, 0xe9c3, 0xeac3,
  0xebc3, 0xecc3, 0xedc3, 0xeec3, 0xefc3, 0xf0c3, 0xf1c3, 0xf2c3, 0xf3c3, 0xf4c3,
  0xf5c3, 0xf6c3, 0xf7c3, 0xf8c3, 0xf9c3, 0xfac3, 0xfbc3, 0xfcc3, 0xfdc3, 0xfec3,
  0xa1c4, 0xa2c4, 0xa3c4, 0xa4c4, 0xa5c4, 0xa6c4, 0xa7c4, 0xa8c4, 0xa9c4, 0xaac4,
  0xabc4, 0xacc4, 0xadc4, 0xaec4, 0xafc4, 0xb0c4, 0xb1c4, 0xb2c4, 0xb3c4, 0xb4c4,
  0xb5c4, 0xb6c4, 0xb7c4, 0xb8c4, 0xb9c4, 0xbac4, 0xbbc4, 0xbcc4, 0xbdc4, 0xbec4,
  0xbfc4, 0xc0c4, 0xc1c4, 0xc2c4, 0xc3c4, 0xc4c4, 0xc5c4, 0xc6c4, 0xc7c4, 0xc8c4,
  0xc9c4, 0xcac4, 0xcbc4, 0xccc4, 0xcdc4, 0xcec4, 0xcfc4, 0xd0c4, 0xd1c4, 0xd2c4,
  0xd3c4, 0xd4c4, 0xd5c4, 0xd6c4, 0xd7c4, 0xd8c4, 0xd9c4, 0xdac4, 0xdbc4, 0xdcc4,
  0xddc4, 0xdec4, 0xdfc4, 0xe0c4, 0xe1c4, 0xe2c4, 0xe3c4, 0xe4c4, 0xe5c4, 0xe6c4,
  0xe7c4, 0xe8c4, 0xe9c4, 0xeac4, 0xebc4, 0xecc4, 0xedc4, 0xeec4, 0xefc4, 0xf0c4,
  0xf1c4, 0xf2c4, 0xf3c4, 0xf4c4, 0xf5c4, 0xf6c4, 0xf7c4, 0xf8c4, 0xf9c4, 0xfac4,
  0xfbc4, 0xfcc4, 0xfdc4, 0xfec4, 0xa1c5, 0xa2c5, 0xa3c5, 0xa4c5, 0xa5c5, 0xa6c5,
  0xa7c5, 0xa8c5, 0xa9c5, 0xaac5, 0xabc5, 0xacc5, 0xadc5, 0xaec5, 0xafc5, 0xb0c5,
  0xb1c5, 0xb2c5, 0xb3c5, 0xb4c5, 0xb5c5, 0xb6c5, 0xb7c5, 0xb8c5, 0xb9c5, 0xbac5,
  0xbbc5, 0xbcc5, 0xbdc5, 0xbec5, 0xbfc5, 0xc0c5, 0xc1c5, 0xc2c5, 0xc3c5, 0xc4c5,
  0xc5c5, 0xc6c5, 0xc7c5, 0xc8c5, 0xc9c5, 0xcac5, 0xcbc5, 0xccc5, 0xcdc5, 0xcec5,
  0xcfc5, 0xd0c5, 0xd1c5, 0xd2c5, 0xd3c5, 0xd4c5, 0xd5c5, 0xd6c5, 0xd7c5, 0xd8c5,
  0xd9c5, 0xdac5, 0xdbc5, 0xdcc5, 0xddc5, 0xdec5, 0xdfc5, 0xe0c5, 0xe1c5, 0xe2c5,
  0xe3c5, 0xe4c5, 0xe5c5, 0xe6c5, 0xe7c5, 0xe8c5, 0xe9c5, 0xeac5, 0xebc5, 0xecc5,
  0xedc5, 0xeec5, 0xefc5, 0xf0c5, 0xf1c5, 0xf2c5, 0xf3c5, 0xf4c5, 0xf5c5, 0xf6c5,
  0xf7c5, 0xf8c5, 0xf9c5, 0xfac5, 0xfbc5, 0xfcc5, 0xfdc5, 0xfec5, 0xa1c6, 0xa2c6,
  0xa3c6, 0xa4c6, 0xa5c6, 0xa6c6, 0xa7c6, 0xa8c6, 0xa9c6, 0xaac6, 0xabc6, 0xacc6,
  0xadc6, 0xaec6, 0xafc6, 0xb0c6, 0xb1c6, 0xb2c6, 0xb3c6, 0xb4c6, 0xb5c6, 0xb6c6,
  0xb7c6, 0xb8c6, 0xb9c6, 0xbac6, 0xbbc6, 0xbcc6, 0xbdc6, 0xbec6, 0xbfc6, 0xc0c6,
  0xc1c6, 0xc2c6, 0xc3c6, 0xc4c6, 0xc5c6, 0xc6c6, 0xc7c6, 0xc8c6, 0xc9c6, 0xcac6,
  0xcbc6, 0xccc6, 0xcdc6, 0xcec6, 0xcfc6, 0xd0c6, 0xd1c6, 0xd2c6, 0xd3c6, 0xd4c6,
  0xd5c6, 0xd6c6, 0xd7c6, 0xd8c6, 0xd9c6, 0xdac6, 0xdbc6, 0xdcc6, 0xddc6, 0xdec6,
  0xdfc6, 0xe0c6, 0xe1c6, 0xe2c6, 0xe3c6, 0xe4c6, 0xe5c6, 0xe6c6, 0xe7c6, 0xe8c6,
  0xe9c6, 0xeac6, 0xebc6, 0xecc6, 0xedc6, 0xeec6, 0xefc6, 0xf0c6, 0xf1c6, 0xf2c6,
  0xf3c6, 0xf4c6, 0xf5c6, 0xf6c6, 0xf7c6, 0xf8c6, 0xf9c6, 0xfac6, 0xfbc6, 0xfcc6,
  0xfdc6, 0xfec6, 0xa1c7, 0xa2c7, 0xa3c7, 0xa4c7, 0xa5c7, 0xa6c7, 0xa7c7, 0xa8c7,
  0xa9c7, 0xaac7, 0xabc7, 0xacc7, 0xadc7, 0xaec7, 0xafc7, 0xb0c7, 0xb1c7, 0xb2c7,
  0xb3c7, 0xb4c7, 0xb5c7, 0xb6c7, 0xb7c7, 0xb8c7, 0xb9c7, 0xbac7, 0xbbc7, 0xbcc7,
  0xbdc7, 0xbec7, 0xbfc7, 0xc0c7, 0xc1c7, 0xc2c7, 0xc3c7, 0xc4c7, 0xc5c7, 0xc6c7,
  0xc7c7, 0xc8c7, 0xc9c7, 0xcac7, 0xcbc7, 0xccc7, 0xcdc7, 0xcec7, 0xcfc7, 0xd0c7,
  0xd1c7, 0xd2c7, 0xd3c7, 0xd4c7, 0xd5c7, 0xd6c7, 0xd7c7, 0xd8c7, 0xd9c7, 0xdac7,
  0xdbc7, 0xdcc7, 0xddc7, 0xdec7, 0xdfc7, 0xe0c7, 0xe1c7, 0xe2c7, 0xe3c7, 0xe4c7,
  0xe5c7, 0xe6c7, 0xe7c7, 0xe8c7, 0xe9c7, 0xeac7, 0xebc7, 0xecc7, 0xedc7, 0xeec7,
  0xefc7, 0xf0c7, 0xf1c7, 0xf2c7, 0xf3c7, 0xf4c7, 0xf5c7, 0xf6c7, 0xf7c7, 0xf8c7,
  0xf9c7, 0xfac7, 0xfbc7, 0xfcc7, 0xfdc7, 0xfec7, 0xa1c8, 0xa2c8, 0xa3c8, 0xa4c8,
  0xa5c8, 0xa6c8, 0xa7c8, 0xa8c8, 0xa9c8, 0xaac8, 0xabc8, 0xacc8, 0xadc8, 0xaec8,
  0xafc8, 0xb0c8, 0xb1c8, 0xb2c8, 0xb3c8, 0xb4c8, 0xb5c8, 0xb6c8, 0xb7c8, 0xb8c8,
  0xb9c8, 0xbac8, 0xbbc8, 0xbcc8, 0xbdc8, 0xbec8, 0xbfc8, 0xc0c8, 0xc1c8, 0xc2c8,
  0xc3c8, 0xc4c8, 0xc5c8, 0xc6c8, 0xc7c8, 0xc8c8, 0xc9c8, 0xcac8, 0xcbc8, 0xccc8,
  0xcdc8, 0xcec8, 0xcfc8, 0xd0c8, 0xd1c8, 0xd2c8, 0xd3c8, 0xd4c8, 0xd5c8, 0xd6c8,
  0xd7c8, 0xd8c8, 0xd9c8, 0xdac8, 0xdbc8, 0xdcc8, 0xddc8, 0xdec8, 0xdfc8, 0xe0c8,
  0xe1c8, 0xe2c8, 0xe3c8, 0xe4c8, 0xe5c8, 0xe6c8, 0xe7c8, 0xe8c8, 0xe9c8, 0xeac8,
  0xebc8, 0xecc8, 0xedc8, 0xeec8, 0xefc8, 0xf0c8, 0xf1c8, 0xf2c8, 0xf3c8, 0xf4c8,
  0xf5c8, 0xf6c8, 0xf7c8, 0xf8c8, 0xf9c8, 0xfac8, 0xfbc8, 0xfcc8, 0xfdc8, 0xfec8,
  0xa1c9, 0xa2c9, 0xa3c9, 0xa4c9, 0xa5c9, 0xa6c9, 0xa7c9, 0xa8c9, 0xa9c9, 0xaac9,
  0xabc9, 0xacc9, 0xadc9, 0xaec9, 0xafc9, 0xb0c9, 0xb1c9, 0xb2c9, 0xb3c9, 0xb4c9,
  0xb5c9, 0xb6c9, 0xb7c9, 0xb8c9, 0xb9c9, 0xbac9, 0xbbc9, 0xbcc9, 0xbdc9, 0xbec9,
  0xbfc9, 0xc0c9, 0xc1c9, 0xc2c9, 0xc3c9, 0xc4c9, 0xc5c9, 0xc6c9, 0xc7c9, 0xc8c9,
  0xc9c9, 0xcac9, 0xcbc9, 0xccc9, 0xcdc9, 0xcec9, 0xcfc9, 0xd0c9, 0xd1c9, 0xd2c9,
  0xd3c9, 0xd4c9, 0xd5c9, 0xd6c9, 0xd7c9, 0xd8c9, 0xd9c9, 0xdac9, 0xdbc9, 0xdcc9,
  0xddc9, 0xdec9, 0xdfc9, 0xe0c9, 0xe1c9, 0xe2c9, 0xe3c9, 0xe4c9, 0xe5c9, 0xe6c9,
  0xe7c9, 0xe8c9, 0xe9c9, 0xeac9, 0xebc9, 0xecc9, 0xedc9, 0xeec9, 0xefc9, 0xf0c9,
  0xf1c9, 0xf2c9, 0xf3c9, 0xf4c9, 0xf5c9, 0xf6c9, 0xf7c9, 0xf8c9, 0xf9c9, 0xfac9,
  0xfbc9, 0xfcc9, 0xfdc9, 0xfec9, 0xa1ca, 0xa2ca, 0xa3ca, 0xa4ca, 0xa5ca, 0xa6ca,
  0xa7ca, 0xa8ca, 0xa9ca, 0xaaca, 0xabca, 0xacca, 0xadca, 0xaeca, 0xafca, 0xb0ca,
  0xb1ca, 0xb2ca, 0xb3ca, 0xb4ca, 0xb5ca, 0xb6ca, 0xb7ca, 0xb8ca, 0xb9ca, 0xbaca,
  0xbbca, 0xbcca, 0xbdca, 0xbeca, 0xbfca, 0xc0ca, 0xc1ca, 0xc2ca, 0xc3ca, 0xc4ca,
  0xc5ca, 0xc6ca, 0xc7ca, 0xc8ca, 0xc9ca, 0xcaca, 0xcbca, 0xccca, 0xcdca, 0xceca,
  0xcfca, 0xd0ca, 0xd1ca, 0xd2ca, 0xd3ca, 0xd4ca, 0xd5ca, 0xd6ca, 0xd7ca, 0xd8ca,
  0xd9ca, 0xdaca, 0xdbca, 0xdcca, 0xddca, 0xdeca, 0xdfca, 0xe0ca, 0xe1ca, 0xe2ca,
  0xe3ca, 0xe4ca, 0xe5ca, 0xe6ca, 0xe7ca, 0xe8ca, 0xe9ca, 0xeaca, 0xebca, 0xecca,
  0xedca, 0xeeca, 0xefca, 0xf0ca, 0xf1ca, 0xf2ca, 0xf3ca, 0xf4ca, 0xf5ca, 0xf6ca,
  0xf7ca, 0xf8ca, 0xf9ca, 0xfaca, 0xfbca, 0xfcca, 0xfdca, 0xfeca, 0xa1cb, 0xa2cb,
  0xa3cb, 0xa4cb, 0xa5cb, 0xa6cb, 0xa7cb, 0xa8cb, 0xa9cb, 0xaacb, 0xabcb, 0xaccb,
  0xadcb, 0xaecb, 0xafcb, 0xb0cb, 0xb1cb, 0xb2cb, 0xb3cb, 0xb4cb, 0xb5cb, 0xb6cb,
  0xb7cb, 0xb8cb, 0xb9cb, 0xbacb, 0xbbcb, 0xbccb, 0xbdcb, 0xbecb, 0xbfcb, 0xc0cb,
  0xc1cb, 0xc2cb, 0xc3cb, 0xc4cb, 0xc5cb, 0xc6cb, 0xc7cb, 0xc8cb, 0xc9cb, 0xcacb,
  0xcbcb, 0xcccb, 0xcdcb, 0xcecb, 0xcfcb, 0xd0cb, 0xd1cb, 0xd2cb, 0xd3cb, 0xd4cb,
  0xd5cb, 0xd6cb, 0xd7cb, 0xd8cb, 0xd9cb, 0xdacb, 0xdbcb, 0xdccb, 0xddcb, 0xdecb,
  0xdfcb, 0xe0cb, 0xe1cb, 0xe2cb, 0xe3cb, 0xe4cb, 0xe5cb, 0xe6cb, 0xe7cb, 0xe8cb,
  0xe9cb, 0xeacb, 0xebcb, 0xeccb, 0xedcb, 0xeecb, 0xefcb, 0xf0cb, 0xf1cb, 0xf2cb,
  0xf3cb, 0xf4cb, 0xf5cb, 0xf6cb, 0xf7cb, 0xf8cb, 0xf9cb, 0xfacb, 0xfbcb, 0xfccb,
  0xfdcb, 0xfecb, 0xa1cc, 0xa2cc, 0xa3cc, 0xa4cc, 0xa5cc, 0xa6cc, 0xa7cc, 0xa8cc,
  0xa9cc, 0xaacc, 0xabcc, 0xaccc, 0xadcc, 0xaecc, 0xafcc, 0xb0cc, 0xb1cc, 0xb2cc,
  0xb3cc, 0xb4cc, 0xb5cc, 0xb6cc, 0xb7cc, 0xb8cc, 0xb9cc, 0xbacc, 0xbbcc, 0xbccc,
  0xbdcc, 0xbecc, 0xbfcc, 0xc0cc, 0xc1cc, 0xc2cc, 0xc3cc, 0xc4cc, 0xc5cc, 0xc6cc,
  0xc7cc, 0xc8cc, 0xc9cc, 0xcacc, 0xcbcc, 0xcccc, 0xcdcc, 0xcecc, 0xcfcc, 0xd0cc,
  0xd1cc, 0xd2cc, 0xd3cc, 0xd4cc, 0xd5cc, 0xd6cc, 0xd7cc, 0xd8cc, 0xd9cc, 0xdacc,
  0xdbcc, 0xdccc, 0xddcc, 0xdecc, 0xdfcc, 0xe0cc, 0xe1cc, 0xe2cc, 0xe3cc, 0xe4cc,
  0xe5cc, 0xe6cc, 0xe7cc, 0xe8cc, 0xe9cc, 0xeacc, 0xebcc, 0xeccc, 0xedcc, 0xeecc,
  0xefcc, 0xf0cc, 0xf1cc, 0xf2cc, 0xf3cc, 0xf4cc, 0xf5cc, 0xf6cc, 0xf7cc, 0xf8cc,
  0xf9cc, 0xfacc, 0xfbcc, 0xfccc, 0xfdcc, 0xfecc, 0xa1cd, 0xa2cd, 0xa3cd, 0xa4cd,
  0xa5cd, 0xa6cd, 0xa7cd, 0xa8cd, 0xa9cd, 0xaacd, 0xabcd, 0xaccd, 0xadcd, 0xaecd,
  0xafcd, 0xb0cd, 0xb1cd, 0xb2cd, 0xb3cd, 0xb4cd, 0xb5cd, 0xb6cd, 0xb7cd, 0xb8cd,
  0xb9cd, 0xbacd, 0xbbcd, 0xbccd, 0xbdcd, 0xbecd, 0xbfcd, 0xc0cd, 0xc1cd, 0xc2cd,
  0xc3cd, 0xc4cd, 0xc5cd, 0xc6cd, 0xc7cd, 0xc8cd, 0xc9cd, 0xcacd, 0xcbcd, 0xcccd,
  0xcdcd, 0xcecd, 0xcfcd, 0xd0cd, 0xd1cd, 0xd2cd, 0xd3cd, 0xd4cd, 0xd5cd, 0xd6cd,
  0xd7cd, 0xd8cd, 0xd9cd, 0xdacd, 0xdbcd, 0xdccd, 0xddcd, 0xdecd, 0xdfcd, 0xe0cd,
  0xe1cd, 0xe2cd, 0xe3cd, 0xe4cd, 0xe5cd, 0xe6cd, 0xe7cd, 0xe8cd, 0xe9cd, 0xeacd,
  0xebcd, 0xeccd, 0xedcd, 0xeecd, 0xefcd, 0xf0cd, 0xf1cd, 0xf2cd, 0xf3cd, 0xf4cd,
  0xf5cd, 0xf6cd, 0xf7cd, 0xf8cd, 0xf9cd, 0xfacd, 0xfbcd, 0xfccd, 0xfdcd, 0xfecd,
  0xa1ce, 0xa2ce, 0xa3ce, 0xa4ce, 0xa5ce, 0xa6ce, 0xa7ce, 0xa8ce, 0xa9ce, 0xaace,
  0xabce, 0xacce, 0xadce, 0xaece, 0xafce, 0xb0ce, 0xb1ce, 0xb2ce, 0xb3ce, 0xb4ce,
  0xb5ce, 0xb6ce, 0xb7ce, 0xb8ce, 0xb9ce, 0xbace, 0xbbce, 0xbcce, 0xbdce, 0xbece,
  0xbfce, 0xc0ce, 0xc1ce, 0xc2ce, 0xc3ce, 0xc4ce, 0xc5ce, 0xc6ce, 0xc7ce, 0xc8ce,
  0xc9ce, 0xcace, 0xcbce, 0xccce, 0xcdce, 0xcece, 0xcfce, 0xd0ce, 0xd1ce, 0xd2ce,
  0xd3ce, 0xd4ce, 0xd5ce, 0xd6ce, 0xd7ce, 0xd8ce, 0xd9ce, 0xdace, 0xdbce, 0xdcce,
  0xddce, 0xdece, 0xdfce, 0xe0ce, 0xe1ce, 0xe2ce, 0xe3ce, 0xe4ce, 0xe5ce, 0xe6ce,
  0xe7ce, 0xe8ce, 0xe9ce, 0xeace, 0xebce, 0xecce, 0xedce, 0xeece, 0xefce, 0xf0ce,
  0xf1ce, 0xf2ce, 0xf3ce, 0xf4ce, 0xf5ce, 0xf6ce, 0xf7ce, 0xf8ce, 0xf9ce, 0xface,
  0xfbce, 0xfcce, 0xfdce, 0xfece, 0xa1cf, 0xa2cf, 0xa3cf, 0xa4cf, 0xa5cf, 0xa6cf,
  0xa7cf, 0xa8cf, 0xa9cf, 0xaacf, 0xabcf, 0xaccf, 0xadcf, 0xaecf, 0xafcf, 0xb0cf,
  0xb1cf, 0xb2cf, 0xb3cf, 0xb4cf, 0xb5cf, 0xb6cf, 0xb7cf, 0xb8cf, 0xb9cf, 0xbacf,
  0xbbcf, 0xbccf, 0xbdcf, 0xbecf, 0xbfcf, 0xc0cf, 0xc1cf, 0xc2cf, 0xc3cf, 0xc4cf,
  0xc5cf, 0xc6cf, 0xc7cf, 0xc8cf, 0xc9cf, 0xcacf, 0xcbcf, 0xcccf, 0xcdcf, 0xcecf,
  0xcfcf, 0xd0cf, 0xd1cf, 0xd2cf, 0xd3cf, 0xd4cf, 0xd5cf, 0xd6cf, 0xd7cf, 0xd8cf,
  0xd9cf, 0xdacf, 0xdbcf, 0xdccf, 0xddcf, 0xdecf, 0xdfcf, 0xe0cf, 0xe1cf, 0xe2cf,
  0xe3cf, 0xe4cf, 0xe5cf, 0xe6cf, 0xe7cf, 0xe8cf, 0xe9cf, 0xeacf, 0xebcf, 0xeccf,
  0xedcf, 0xeecf, 0xefcf, 0xf0cf, 0xf1cf, 0xf2cf, 0xf3cf, 0xf4cf, 0xf5cf, 0xf6cf,
  0xf7cf, 0xf8cf, 0xf9cf, 0xfacf, 0xfbcf, 0xfccf, 0xfdcf, 0xfecf, 0xa1d0, 0xa2d0,
  0xa3d0, 0xa4d0, 0xa5d0, 0xa6d0, 0xa7d0, 0xa8d0, 0xa9d0, 0xaad0, 0xabd0, 0xacd0,
  0xadd0, 0xaed0, 0xafd0, 0xb0d0, 0xb1d0, 0xb2d0, 0xb3d0, 0xb4d0, 0xb5d0, 0xb6d0,
  0xb7d0, 0xb8d0, 0xb9d0, 0xbad0, 0xbbd0, 0xbcd0, 0xbdd0, 0xbed0, 0xbfd0, 0xc0d0,
  0xc1d0, 0xc2d0, 0xc3d0, 0xc4d0, 0xc5d0, 0xc6d0, 0xc7d0, 0xc8d0, 0xc9d0, 0xcad0,
  0xcbd0, 0xccd0, 0xcdd0, 0xced0, 0xcfd0, 0xd0d0, 0xd1d0, 0xd2d0, 0xd3d0, 0xd4d0,
  0xd5d0, 0xd6d0, 0xd7d0, 0xd8d0, 0xd9d0, 0xdad0, 0xdbd0, 0xdcd0, 0xddd0, 0xded0,
  0xdfd0, 0xe0d0, 0xe1d0, 0xe2d0, 0xe3d0, 0xe4d0, 0xe5d0, 0xe6d0, 0xe7d0, 0xe8d0,
  0xe9d0, 0xead0, 0xebd0, 0xecd0, 0xedd0, 0xeed0, 0xefd0, 0xf0d0, 0xf1d0, 0xf2d0,
  0xf3d0, 0xf4d0, 0xf5d0, 0xf6d0, 0xf7d0, 0xf8d0, 0xf9d0, 0xfad0, 0xfbd0, 0xfcd0,
  0xfdd0, 0xfed0, 0xa1d1, 0xa2d1, 0xa3d1, 0xa4d1, 0xa5d1, 0xa6d1, 0xa7d1, 0xa8d1,
  0xa9d1, 0xaad1, 0xabd1, 0xacd1, 0xadd1, 0xaed1, 0xafd1, 0xb0d1, 0xb1d1, 0xb2d1,
  0xb3d1, 0xb4d1, 0xb5d1, 0xb6d1, 0xb7d1, 0xb8d1, 0xb9d1, 0xbad1, 0xbbd1, 0xbcd1,
  0xbdd1, 0xbed1, 0xbfd1, 0xc0d1, 0xc1d1, 0xc2d1, 0xc3d1, 0xc4d1, 0xc5d1, 0xc6d1,
  0xc7d1, 0xc8d1, 0xc9d1, 0xcad1, 0xcbd1, 0xccd1, 0xcdd1, 0xced1, 0xcfd1, 0xd0d1,
  0xd1d1, 0xd2d1, 0xd3d1, 0xd4d1, 0xd5d1, 0xd6d1, 0xd7d1, 0xd8d1, 0xd9d1, 0xdad1,
  0xdbd1, 0xdcd1, 0xddd1, 0xded1, 0xdfd1, 0xe0d1, 0xe1d1, 0xe2d1, 0xe3d1, 0xe4d1,
  0xe5d1, 0xe6d1, 0xe7d1, 0xe8d1, 0xe9d1, 0xead1, 0xebd1, 0xecd1, 0xedd1, 0xeed1,
  0xefd1, 0xf0d1, 0xf1d1, 0xf2d1, 0xf3d1, 0xf4d1, 0xf5d1, 0xf6d1, 0xf7d1, 0xf8d1,
  0xf9d1, 0xfad1, 0xfbd1, 0xfcd1, 0xfdd1, 0xfed1, 0xa1d2, 0xa2d2, 0xa3d2, 0xa4d2,
  0xa5d2, 0xa6d2, 0xa7d2, 0xa8d2, 0xa9d2, 0xaad2, 0xabd2, 0xacd2, 0xadd2, 0xaed2,
  0xafd2, 0xb0d2, 0xb1d2, 0xb2d2, 0xb3d2, 0xb4d2, 0xb5d2, 0xb6d2, 0xb7d2, 0xb8d2,
  0xb9d2, 0xbad2, 0xbbd2, 0xbcd2, 0xbdd2, 0xbed2, 0xbfd2, 0xc0d2, 0xc1d2, 0xc2d2,
  0xc3d2, 0xc4d2, 0xc5d2, 0xc6d2, 0xc7d2, 0xc8d2, 0xc9d2, 0xcad2, 0xcbd2, 0xccd2,
  0xcdd2, 0xced2, 0xcfd2, 0xd0d2, 0xd1d2, 0xd2d2, 0xd3d2, 0xd4d2, 0xd5d2, 0xd6d2,
  0xd7d2, 0xd8d2, 0xd9d2, 0xdad2, 0xdbd2, 0xdcd2, 0xddd2, 0xded2, 0xdfd2, 0xe0d2,
  0xe1d2, 0xe2d2, 0xe3d2, 0xe4d2, 0xe5d2, 0xe6d2, 0xe7d2, 0xe8d2, 0xe9d2, 0xead2,
  0xebd2, 0xecd2, 0xedd2, 0xeed2, 0xefd2, 0xf0d2, 0xf1d2, 0xf2d2, 0xf3d2, 0xf4d2,
  0xf5d2, 0xf6d2, 0xf7d2, 0xf8d2, 0xf9d2, 0xfad2, 0xfbd2, 0xfcd2, 0xfdd2, 0xfed2,
  0xa1d3, 0xa2d3, 0xa3d3, 0xa4d3, 0xa5d3, 0xa6d3, 0xa7d3, 0xa8d3, 0xa9d3, 0xaad3,
  0xabd3, 0xacd3, 0xadd3, 0xaed3, 0xafd3, 0xb0d3, 0xb1d3, 0xb2d3, 0xb3d3, 0xb4d3,
  0xb5d3, 0xb6d3, 0xb7d3, 0xb8d3, 0xb9d3, 0xbad3, 0xbbd3, 0xbcd3, 0xbdd3, 0xbed3,
  0xbfd3, 0xc0d3, 0xc1d3, 0xc2d3, 0xc3d3, 0xc4d3, 0xc5d3, 0xc6d3, 0xc7d3, 0xc8d3,
  0xc9d3, 0xcad3, 0xcbd3, 0xccd3, 0xcdd3, 0xced3, 0xcfd3, 0xd0d3, 0xd1d3, 0xd2d3,
  0xd3d3, 0xd4d3, 0xd5d3, 0xd6d3, 0xd7d3, 0xd8d3, 0xd9d3, 0xdad3, 0xdbd3, 0xdcd3,
  0xddd3, 0xded3, 0xdfd3, 0xe0d3, 0xe1d3, 0xe2d3, 0xe3d3, 0xe4d3, 0xe5d3, 0xe6d3,
  0xe7d3, 0xe8d3, 0xe9d3, 0xead3, 0xebd3, 0xecd3, 0xedd3, 0xeed3, 0xefd3, 0xf0d3,
  0xf1d3, 0xf2d3, 0xf3d3, 0xf4d3, 0xf5d3, 0xf6d3, 0xf7d3, 0xf8d3, 0xf9d3, 0xfad3,
  0xfbd3, 0xfcd3, 0xfdd3, 0xfed3, 0xa1d4, 0xa2d4, 0xa3d4, 0xa4d4, 0xa5d4, 0xa6d4,
  0xa7d4, 0xa8d4, 0xa9d4, 0xaad4, 0xabd4, 0xacd4, 0xadd4, 0xaed4, 0xafd4, 0xb0d4,
  0xb1d4, 0xb2d4, 0xb3d4, 0xb4d4, 0xb5d4, 0xb6d4, 0xb7d4, 0xb8d4, 0xb9d4, 0xbad4,
  0xbbd4, 0xbcd4, 0xbdd4, 0xbed4, 0xbfd4, 0xc0d4, 0xc1d4, 0xc2d4, 0xc3d4, 0xc4d4,
  0xc5d4, 0xc6d4, 0xc7d4, 0xc8d4, 0xc9d4, 0xcad4, 0xcbd4, 0xccd4, 0xcdd4, 0xced4,
  0xcfd4, 0xd0d4, 0xd1d4, 0xd2d4, 0xd3d4, 0xd4d4, 0xd5d4, 0xd6d4, 0xd7d4, 0xd8d4,
  0xd9d4, 0xdad4, 0xdbd4, 0xdcd4, 0xddd4, 0xded4, 0xdfd4, 0xe0d4, 0xe1d4, 0xe2d4,
  0xe3d4, 0xe4d4, 0xe5d4, 0xe6d4, 0xe7d4, 0xe8d4, 0xe9d4, 0xead4, 0xebd4, 0xecd4,
  0xedd4, 0xeed4, 0xefd4, 0xf0d4, 0xf1d4, 0xf2d4, 0xf3d4, 0xf4d4, 0xf5d4, 0xf6d4,
  0xf7d4, 0xf8d4, 0xf9d4, 0xfad4, 0xfbd4, 0xfcd4, 0xfdd4, 0xfed4, 0xa1d5, 0xa2d5,
  0xa3d5, 0xa4d5, 0xa5d5, 0xa6d5, 0xa7d5, 0xa8d5, 0xa9d5, 0xaad5, 0xabd5, 0xacd5,
  0xadd5, 0xaed5, 0xafd5, 0xb0d5, 0xb1d5, 0xb2d5, 0xb3d5, 0xb4d5, 0xb5d5, 0xb6d5,
  0xb7d5, 0xb8d5, 0xb9d5, 0xbad5, 0xbbd5, 0xbcd5, 0xbdd5, 0xbed5, 0xbfd5, 0xc0d5,
  0xc1d5, 0xc2d5, 0xc3d5, 0xc4d5, 0xc5d5, 0xc6d5, 0xc7d5, 0xc8d5, 0xc9d5, 0xcad5,
  0xcbd5, 0xccd5, 0xcdd5, 0xced5, 0xcfd5, 0xd0d5, 0xd1d5, 0xd2d5, 0xd3d5, 0xd4d5,
  0xd5d5, 0xd6d5, 0xd7d5, 0xd8d5, 0xd9d5, 0xdad5, 0xdbd5, 0xdcd5, 0xddd5, 0xded5,
  0xdfd5, 0xe0d5, 0xe1d5, 0xe2d5, 0xe3d5, 0xe4d5, 0xe5d5, 0xe6d5, 0xe7d5, 0xe8d5,
  0xe9d5, 0xead5, 0xebd5, 0xecd5, 0xedd5, 0xeed5, 0xefd5, 0xf0d5, 0xf1d5, 0xf2d5,
  0xf3d5, 0xf4d5, 0xf5d5, 0xf6d5, 0xf7d5, 0xf8d5, 0xf9d5, 0xfad5, 0xfbd5, 0xfcd5,
  0xfdd5, 0xfed5, 0xa1d6, 0xa2d6, 0xa3d6, 0xa4d6, 0xa5d6, 0xa6d6, 0xa7d6, 0xa8d6,
  0xa9d6, 0xaad6, 0xabd6, 0xacd6, 0xadd6, 0xaed6, 0xafd6, 0xb0d6, 0xb1d6, 0xb2d6,
  0xb3d6, 0xb4d6, 0xb5d6, 0xb6d6, 0xb7d6, 0xb8d6, 0xb9d6, 0xbad6, 0xbbd6, 0xbcd6,
  0xbdd6, 0xbed6, 0xbfd6, 0xc0d6, 0xc1d6, 0xc2d6, 0xc3d6, 0xc4d6, 0xc5d6, 0xc6d6,
  0xc7d6, 0xc8d6, 0xc9d6, 0xcad6, 0xcbd6, 0xccd6, 0xcdd6, 0xced6, 0xcfd6, 0xd0d6,
  0xd1d6, 0xd2d6, 0xd3d6, 0xd4d6, 0xd5d6, 0xd6d6, 0xd7d6, 0xd8d6, 0xd9d6, 0xdad6,
  0xdbd6, 0xdcd6, 0xddd6, 0xded6, 0xdfd6, 0xe0d6, 0xe1d6, 0xe2d6, 0xe3d6, 0xe4d6,
  0xe5d6, 0xe6d6, 0xe7d6, 0xe8d6, 0xe9d6, 0xead6, 0xebd6, 0xecd6, 0xedd6, 0xeed6,
  0xefd6, 0xf0d6, 0xf1d6, 0xf2d6, 0xf3d6, 0xf4d6, 0xf5d6, 0xf6d6, 0xf7d6, 0xf8d6,
  0xf9d6, 0xfad6, 0xfbd6, 0xfcd6, 0xfdd6, 0xfed6, 0xa1d7, 0xa2d7, 0xa3d7, 0xa4d7,
  0xa5d7, 0xa6d7, 0xa7d7, 0xa8d7, 0xa9d7, 0xaad7, 0xabd7, 0xacd7, 0xadd7, 0xaed7,
  0xafd7, 0xb0d7, 0xb1d7, 0xb2d7, 0xb3d7, 0xb4d7, 0xb5d7, 0xb6d7, 0xb7d7, 0xb8d7,
  0xb9d7, 0xbad7, 0xbbd7, 0xbcd7, 0xbdd7, 0xbed7, 0xbfd7, 0xc0d7, 0xc1d7, 0xc2d7,
  0xc3d7, 0xc4d7, 0xc5d7, 0xc6d7, 0xc7d7, 0xc8d7, 0xc9d7, 0xcad7, 0xcbd7, 0xccd7,
  0xcdd7, 0xced7, 0xcfd7, 0xd0d7, 0xd1d7, 0xd2d7, 0xd3d7, 0xd4d7, 0xd5d7, 0xd6d7,
  0xd7d7, 0xd8d7, 0xd9d7, 0xdad7, 0xdbd7, 0xdcd7, 0xddd7, 0xded7, 0xdfd7, 0xe0d7,
  0xe1d7, 0xe2d7, 0xe3d7, 0xe4d7, 0xe5d7, 0xe6d7, 0xe7d7, 0xe8d7, 0xe9d7, 0xead7,
  0xebd7, 0xecd7, 0xedd7, 0xeed7, 0xefd7, 0xf0d7, 0xf1d7, 0xf2d7, 0xf3d7, 0xf4d7,
  0xf5d7, 0xf6d7, 0xf7d7, 0xf8d7, 0xf9d7};
int gbcodesPOT[3755]={    //c3755le POT
  0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, 0xb0a8, 0xb0a9, 0xb0aa,
  0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af, 0xb0b0, 0xb0b1, 0xb0b2, 0xb0b3, 0xb0b4,
  0xb0b5, 0xb0b6, 0xb0b7, 0xb0b8, 0xb0b9, 0xb0ba, 0xb0bb, 0xb0bc, 0xb0bd, 0xb0be,
  0xb0bf, 0xb0c0, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c4, 0xb0c5, 0xb0c6, 0xb0c7, 0xb0c8,
  0xb0c9, 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf, 0xb0d0, 0xb0d1, 0xb0d2,
  0xb0d3, 0xb0d4, 0xb0d5, 0xb0d6, 0xb0d7, 0xb0d8, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc,
  0xb0dd, 0xb0de, 0xb0df, 0xb0e0, 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5, 0xb0e6,
  0xb0e7, 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0,
  0xb0f1, 0xb0f2, 0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, 0xb0fa,
  0xb0fb, 0xb0fc, 0xb0fd, 0xb0fe, 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6,
  0xb1a7, 0xb1a8, 0xb1a9, 0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0xb1b0,
  0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, 0xb1b8, 0xb1b9, 0xb1ba,
  0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0xb1bf, 0xb1c0, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4,
  0xb1c5, 0xb1c6, 0xb1c7, 0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0xb1cc, 0xb1cd, 0xb1ce,
  0xb1cf, 0xb1d0, 0xb1d1, 0xb1d2, 0xb1d3, 0xb1d4, 0xb1d5, 0xb1d6, 0xb1d7, 0xb1d8,
  0xb1d9, 0xb1da, 0xb1db, 0xb1dc, 0xb1dd, 0xb1de, 0xb1df, 0xb1e0, 0xb1e1, 0xb1e2,
  0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0xb1e8, 0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec,
  0xb1ed, 0xb1ee, 0xb1ef, 0xb1f0, 0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6,
  0xb1f7, 0xb1f8, 0xb1f9, 0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd, 0xb1fe, 0xb2a1, 0xb2a2,
  0xb2a3, 0xb2a4, 0xb2a5, 0xb2a6, 0xb2a7, 0xb2a8, 0xb2a9, 0xb2aa, 0xb2ab, 0xb2ac,
  0xb2ad, 0xb2ae, 0xb2af, 0xb2b0, 0xb2b1, 0xb2b2, 0xb2b3, 0xb2b4, 0xb2b5, 0xb2b6,
  0xb2b7, 0xb2b8, 0xb2b9, 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2be, 0xb2bf, 0xb2c0,
  0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, 0xb2c8, 0xb2c9, 0xb2ca,
  0xb2cb, 0xb2cc, 0xb2cd, 0xb2ce, 0xb2cf, 0xb2d0, 0xb2d1, 0xb2d2, 0xb2d3, 0xb2d4,
  0xb2d5, 0xb2d6, 0xb2d7, 0xb2d8, 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd, 0xb2de,
  0xb2df, 0xb2e0, 0xb2e1, 0xb2e2, 0xb2e3, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7, 0xb2e8,
  0xb2e9, 0xb2ea, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f0, 0xb2f1, 0xb2f2,
  0xb2f3, 0xb2f4, 0xb2f5, 0xb2f6, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa, 0xb2fb, 0xb2fc,
  0xb2fd, 0xb2fe, 0xb3a1, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, 0xb3a8,
  0xb3a9, 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae, 0xb3af, 0xb3b0, 0xb3b1, 0xb3b2,
  0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6, 0xb3b7, 0xb3b8, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc,
  0xb3bd, 0xb3be, 0xb3bf, 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0xb3c4, 0xb3c5, 0xb3c6,
  0xb3c7, 0xb3c8, 0xb3c9, 0xb3ca, 0xb3cb, 0xb3cc, 0xb3cd, 0xb3ce, 0xb3cf, 0xb3d0,
  0xb3d1, 0xb3d2, 0xb3d3, 0xb3d4, 0xb3d5, 0xb3d6, 0xb3d7, 0xb3d8, 0xb3d9, 0xb3da,
  0xb3db, 0xb3dc, 0xb3dd, 0xb3de, 0xb3df, 0xb3e0, 0xb3e1, 0xb3e2, 0xb3e3, 0xb3e4,
  0xb3e5, 0xb3e6, 0xb3e7, 0xb3e8, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee,
  0xb3ef, 0xb3f0, 0xb3f1, 0xb3f2, 0xb3f3, 0xb3f4, 0xb3f5, 0xb3f6, 0xb3f7, 0xb3f8,
  0xb3f9, 0xb3fa, 0xb3fb, 0xb3fc, 0xb3fd, 0xb3fe, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a4,
  0xb4a5, 0xb4a6, 0xb4a7, 0xb4a8, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ac, 0xb4ad, 0xb4ae,
  0xb4af, 0xb4b0, 0xb4b1, 0xb4b2, 0xb4b3, 0xb4b4, 0xb4b5, 0xb4b6, 0xb4b7, 0xb4b8,
  0xb4b9, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, 0xb4c0, 0xb4c1, 0xb4c2,
  0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6, 0xb4c7, 0xb4c8, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc,
  0xb4cd, 0xb4ce, 0xb4cf, 0xb4d0, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d5, 0xb4d6,
  0xb4d7, 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0xb4dc, 0xb4dd, 0xb4de, 0xb4df, 0xb4e0,
  0xb4e1, 0xb4e2, 0xb4e3, 0xb4e4, 0xb4e5, 0xb4e6, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea,
  0xb4eb, 0xb4ec, 0xb4ed, 0xb4ee, 0xb4ef, 0xb4f0, 0xb4f1, 0xb4f2, 0xb4f3, 0xb4f4,
  0xb4f5, 0xb4f6, 0xb4f7, 0xb4f8, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe,
  0xb5a1, 0xb5a2, 0xb5a3, 0xb5a4, 0xb5a5, 0xb5a6, 0xb5a7, 0xb5a8, 0xb5a9, 0xb5aa,
  0xb5ab, 0xb5ac, 0xb5ad, 0xb5ae, 0xb5af, 0xb5b0, 0xb5b1, 0xb5b2, 0xb5b3, 0xb5b4,
  0xb5b5, 0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5be,
  0xb5bf, 0xb5c0, 0xb5c1, 0xb5c2, 0xb5c3, 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8,
  0xb5c9, 0xb5ca, 0xb5cb, 0xb5cc, 0xb5cd, 0xb5ce, 0xb5cf, 0xb5d0, 0xb5d1, 0xb5d2,
  0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, 0xb5d8, 0xb5d9, 0xb5da, 0xb5db, 0xb5dc,
  0xb5dd, 0xb5de, 0xb5df, 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6,
  0xb5e7, 0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec, 0xb5ed, 0xb5ee, 0xb5ef, 0xb5f0,
  0xb5f1, 0xb5f2, 0xb5f3, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7, 0xb5f8, 0xb5f9, 0xb5fa,
  0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a4, 0xb6a5, 0xb6a6,
  0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa, 0xb6ab, 0xb6ac, 0xb6ad, 0xb6ae, 0xb6af, 0xb6b0,
  0xb6b1, 0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, 0xb6b8, 0xb6b9, 0xb6ba,
  0xb6bb, 0xb6bc, 0xb6bd, 0xb6be, 0xb6bf, 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4,
  0xb6c5, 0xb6c6, 0xb6c7, 0xb6c8, 0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd, 0xb6ce,
  0xb6cf, 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0xb6d4, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8,
  0xb6d9, 0xb6da, 0xb6db, 0xb6dc, 0xb6dd, 0xb6de, 0xb6df, 0xb6e0, 0xb6e1, 0xb6e2,
  0xb6e3, 0xb6e4, 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, 0xb6ea, 0xb6eb, 0xb6ec,
  0xb6ed, 0xb6ee, 0xb6ef, 0xb6f0, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f4, 0xb6f5, 0xb6f6,
  0xb6f7, 0xb6f8, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd, 0xb6fe, 0xb7a1, 0xb7a2,
  0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6, 0xb7a7, 0xb7a8, 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac,
  0xb7ad, 0xb7ae, 0xb7af, 0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0xb7b4, 0xb7b5, 0xb7b6,
  0xb7b7, 0xb7b8, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf, 0xb7c0,
  0xb7c1, 0xb7c2, 0xb7c3, 0xb7c4, 0xb7c5, 0xb7c6, 0xb7c7, 0xb7c8, 0xb7c9, 0xb7ca,
  0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, 0xb7d0, 0xb7d1, 0xb7d2, 0xb7d3, 0xb7d4,
  0xb7d5, 0xb7d6, 0xb7d7, 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de,
  0xb7df, 0xb7e0, 0xb7e1, 0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5, 0xb7e6, 0xb7e7, 0xb7e8,
  0xb7e9, 0xb7ea, 0xb7eb, 0xb7ec, 0xb7ed, 0xb7ee, 0xb7ef, 0xb7f0, 0xb7f1, 0xb7f2,
  0xb7f3, 0xb7f4, 0xb7f5, 0xb7f6, 0xb7f7, 0xb7f8, 0xb7f9, 0xb7fa, 0xb7fb, 0xb7fc,
  0xb7fd, 0xb7fe, 0xb8a1, 0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a8,
  0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0xb8b0, 0xb8b1, 0xb8b2,
  0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6, 0xb8b7, 0xb8b8, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc,
  0xb8bd, 0xb8be, 0xb8bf, 0xb8c0, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4, 0xb8c5, 0xb8c6,
  0xb8c7, 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cc, 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d0,
  0xb8d1, 0xb8d2, 0xb8d3, 0xb8d4, 0xb8d5, 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9, 0xb8da,
  0xb8db, 0xb8dc, 0xb8dd, 0xb8de, 0xb8df, 0xb8e0, 0xb8e1, 0xb8e2, 0xb8e3, 0xb8e4,
  0xb8e5, 0xb8e6, 0xb8e7, 0xb8e8, 0xb8e9, 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee,
  0xb8ef, 0xb8f0, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, 0xb8f8,
  0xb8f9, 0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd, 0xb8fe, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4,
  0xb9a5, 0xb9a6, 0xb9a7, 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ac, 0xb9ad, 0xb9ae,
  0xb9af, 0xb9b0, 0xb9b1, 0xb9b2, 0xb9b3, 0xb9b4, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8,
  0xb9b9, 0xb9ba, 0xb9bb, 0xb9bc, 0xb9bd, 0xb9be, 0xb9bf, 0xb9c0, 0xb9c1, 0xb9c2,
  0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc,
  0xb9cd, 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d3, 0xb9d4, 0xb9d5, 0xb9d6,
  0xb9d7, 0xb9d8, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd, 0xb9de, 0xb9df, 0xb9e0,
  0xb9e1, 0xb9e2, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e6, 0xb9e7, 0xb9e8, 0xb9e9, 0xb9ea,
  0xb9eb, 0xb9ec, 0xb9ed, 0xb9ee, 0xb9ef, 0xb9f0, 0xb9f1, 0xb9f2, 0xb9f3, 0xb9f4,
  0xb9f5, 0xb9f6, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe,
  0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0xbaa8, 0xbaa9, 0xbaaa,
  0xbaab, 0xbaac, 0xbaad, 0xbaae, 0xbaaf, 0xbab0, 0xbab1, 0xbab2, 0xbab3, 0xbab4,
  0xbab5, 0xbab6, 0xbab7, 0xbab8, 0xbab9, 0xbaba, 0xbabb, 0xbabc, 0xbabd, 0xbabe,
  0xbabf, 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0xbac4, 0xbac5, 0xbac6, 0xbac7, 0xbac8,
  0xbac9, 0xbaca, 0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad2,
  0xbad3, 0xbad4, 0xbad5, 0xbad6, 0xbad7, 0xbad8, 0xbad9, 0xbada, 0xbadb, 0xbadc,
  0xbadd, 0xbade, 0xbadf, 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6,
  0xbae7, 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, 0xbaf0,
  0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5, 0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9, 0xbafa,
  0xbafb, 0xbafc, 0xbafd, 0xbafe, 0xbba1, 0xbba2, 0xbba3, 0xbba4, 0xbba5, 0xbba6,
  0xbba7, 0xbba8, 0xbba9, 0xbbaa, 0xbbab, 0xbbac, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0,
  0xbbb1, 0xbbb2, 0xbbb3, 0xbbb4, 0xbbb5, 0xbbb6, 0xbbb7, 0xbbb8, 0xbbb9, 0xbbba,
  0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, 0xbbc0, 0xbbc1, 0xbbc2, 0xbbc3, 0xbbc4,
  0xbbc5, 0xbbc6, 0xbbc7, 0xbbc8, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce,
  0xbbcf, 0xbbd0, 0xbbd1, 0xbbd2, 0xbbd3, 0xbbd4, 0xbbd5, 0xbbd6, 0xbbd7, 0xbbd8,
  0xbbd9, 0xbbda, 0xbbdb, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf, 0xbbe0, 0xbbe1, 0xbbe2,
  0xbbe3, 0xbbe4, 0xbbe5, 0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9, 0xbbea, 0xbbeb, 0xbbec,
  0xbbed, 0xbbee, 0xbbef, 0xbbf0, 0xbbf1, 0xbbf2, 0xbbf3, 0xbbf4, 0xbbf5, 0xbbf6,
  0xbbf7, 0xbbf8, 0xbbf9, 0xbbfa, 0xbbfb, 0xbbfc, 0xbbfd, 0xbbfe, 0xbca1, 0xbca2,
  0xbca3, 0xbca4, 0xbca5, 0xbca6, 0xbca7, 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac,
  0xbcad, 0xbcae, 0xbcaf, 0xbcb0, 0xbcb1, 0xbcb2, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcb6,
  0xbcb7, 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0xbcbc, 0xbcbd, 0xbcbe, 0xbcbf, 0xbcc0,
  0xbcc1, 0xbcc2, 0xbcc3, 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9, 0xbcca,
  0xbccb, 0xbccc, 0xbccd, 0xbcce, 0xbccf, 0xbcd0, 0xbcd1, 0xbcd2, 0xbcd3, 0xbcd4,
  0xbcd5, 0xbcd6, 0xbcd7, 0xbcd8, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbcde,
  0xbcdf, 0xbce0, 0xbce1, 0xbce2, 0xbce3, 0xbce4, 0xbce5, 0xbce6, 0xbce7, 0xbce8,
  0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced, 0xbcee, 0xbcef, 0xbcf0, 0xbcf1, 0xbcf2,
  0xbcf3, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf7, 0xbcf8, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfc,
  0xbcfd, 0xbcfe, 0xbda1, 0xbda2, 0xbda3, 0xbda4, 0xbda5, 0xbda6, 0xbda7, 0xbda8,
  0xbda9, 0xbdaa, 0xbdab, 0xbdac, 0xbdad, 0xbdae, 0xbdaf, 0xbdb0, 0xbdb1, 0xbdb2,
  0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, 0xbdb8, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc,
  0xbdbd, 0xbdbe, 0xbdbf, 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6,
  0xbdc7, 0xbdc8, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd, 0xbdce, 0xbdcf, 0xbdd0,
  0xbdd1, 0xbdd2, 0xbdd3, 0xbdd4, 0xbdd5, 0xbdd6, 0xbdd7, 0xbdd8, 0xbdd9, 0xbdda,
  0xbddb, 0xbddc, 0xbddd, 0xbdde, 0xbddf, 0xbde0, 0xbde1, 0xbde2, 0xbde3, 0xbde4,
  0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbde9, 0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee,
  0xbdef, 0xbdf0, 0xbdf1, 0xbdf2, 0xbdf3, 0xbdf4, 0xbdf5, 0xbdf6, 0xbdf7, 0xbdf8,
  0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, 0xbea1, 0xbea2, 0xbea3, 0xbea4,
  0xbea5, 0xbea6, 0xbea7, 0xbea8, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, 0xbeae,
  0xbeaf, 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0xbeb4, 0xbeb5, 0xbeb6, 0xbeb7, 0xbeb8,
  0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf, 0xbec0, 0xbec1, 0xbec2,
  0xbec3, 0xbec4, 0xbec5, 0xbec6, 0xbec7, 0xbec8, 0xbec9, 0xbeca, 0xbecb, 0xbecc,
  0xbecd, 0xbece, 0xbecf, 0xbed0, 0xbed1, 0xbed2, 0xbed3, 0xbed4, 0xbed5, 0xbed6,
  0xbed7, 0xbed8, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede, 0xbedf, 0xbee0,
  0xbee1, 0xbee2, 0xbee3, 0xbee4, 0xbee5, 0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea,
  0xbeeb, 0xbeec, 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef2, 0xbef3, 0xbef4,
  0xbef5, 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa, 0xbefb, 0xbefc, 0xbefd, 0xbefe,
  0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4, 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, 0xbfaa,
  0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf, 0xbfb0, 0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4,
  0xbfb5, 0xbfb6, 0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe,
  0xbfbf, 0xbfc0, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc5, 0xbfc6, 0xbfc7, 0xbfc8,
  0xbfc9, 0xbfca, 0xbfcb, 0xbfcc, 0xbfcd, 0xbfce, 0xbfcf, 0xbfd0, 0xbfd1, 0xbfd2,
  0xbfd3, 0xbfd4, 0xbfd5, 0xbfd6, 0xbfd7, 0xbfd8, 0xbfd9, 0xbfda, 0xbfdb, 0xbfdc,
  0xbfdd, 0xbfde, 0xbfdf, 0xbfe0, 0xbfe1, 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5, 0xbfe6,
  0xbfe7, 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, 0xbfef, 0xbff0,
  0xbff1, 0xbff2, 0xbff3, 0xbff4, 0xbff5, 0xbff6, 0xbff7, 0xbff8, 0xbff9, 0xbffa,
  0xbffb, 0xbffc, 0xbffd, 0xbffe, 0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5, 0xc0a6,
  0xc0a7, 0xc0a8, 0xc0a9, 0xc0aa, 0xc0ab, 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af, 0xc0b0,
  0xc0b1, 0xc0b2, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7, 0xc0b8, 0xc0b9, 0xc0ba,
  0xc0bb, 0xc0bc, 0xc0bd, 0xc0be, 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c2, 0xc0c3, 0xc0c4,
  0xc0c5, 0xc0c6, 0xc0c7, 0xc0c8, 0xc0c9, 0xc0ca, 0xc0cb, 0xc0cc, 0xc0cd, 0xc0ce,
  0xc0cf, 0xc0d0, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, 0xc0d7, 0xc0d8,
  0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd, 0xc0de, 0xc0df, 0xc0e0, 0xc0e1, 0xc0e2,
  0xc0e3, 0xc0e4, 0xc0e5, 0xc0e6, 0xc0e7, 0xc0e8, 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ec,
  0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0, 0xc0f1, 0xc0f2, 0xc0f3, 0xc0f4, 0xc0f5, 0xc0f6,
  0xc0f7, 0xc0f8, 0xc0f9, 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc1a1, 0xc1a2,
  0xc1a3, 0xc1a4, 0xc1a5, 0xc1a6, 0xc1a7, 0xc1a8, 0xc1a9, 0xc1aa, 0xc1ab, 0xc1ac,
  0xc1ad, 0xc1ae, 0xc1af, 0xc1b0, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6,
  0xc1b7, 0xc1b8, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd, 0xc1be, 0xc1bf, 0xc1c0,
  0xc1c1, 0xc1c2, 0xc1c3, 0xc1c4, 0xc1c5, 0xc1c6, 0xc1c7, 0xc1c8, 0xc1c9, 0xc1ca,
  0xc1cb, 0xc1cc, 0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d2, 0xc1d3, 0xc1d4,
  0xc1d5, 0xc1d6, 0xc1d7, 0xc1d8, 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de,
  0xc1df, 0xc1e0, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6, 0xc1e7, 0xc1e8,
  0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, 0xc1f0, 0xc1f1, 0xc1f2,
  0xc1f3, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0xc1fc,
  0xc1fd, 0xc1fe, 0xc2a1, 0xc2a2, 0xc2a3, 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7, 0xc2a8,
  0xc2a9, 0xc2aa, 0xc2ab, 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af, 0xc2b0, 0xc2b1, 0xc2b2,
  0xc2b3, 0xc2b4, 0xc2b5, 0xc2b6, 0xc2b7, 0xc2b8, 0xc2b9, 0xc2ba, 0xc2bb, 0xc2bc,
  0xc2bd, 0xc2be, 0xc2bf, 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6,
  0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce, 0xc2cf, 0xc2d0,
  0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5, 0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da,
  0xc2db, 0xc2dc, 0xc2dd, 0xc2de, 0xc2df, 0xc2e0, 0xc2e1, 0xc2e2, 0xc2e3, 0xc2e4,
  0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9, 0xc2ea, 0xc2eb, 0xc2ec, 0xc2ed, 0xc2ee,
  0xc2ef, 0xc2f0, 0xc2f1, 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f6, 0xc2f7, 0xc2f8,
  0xc2f9, 0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc2fe, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4,
  0xc3a5, 0xc3a6, 0xc3a7, 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae,
  0xc3af, 0xc3b0, 0xc3b1, 0xc3b2, 0xc3b3, 0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, 0xc3b8,
  0xc3b9, 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, 0xc3c0, 0xc3c1, 0xc3c2,
  0xc3c3, 0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9, 0xc3ca, 0xc3cb, 0xc3cc,
  0xc3cd, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1, 0xc3d2, 0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6,
  0xc3d7, 0xc3d8, 0xc3d9, 0xc3da, 0xc3db, 0xc3dc, 0xc3dd, 0xc3de, 0xc3df, 0xc3e0,
  0xc3e1, 0xc3e2, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6, 0xc3e7, 0xc3e8, 0xc3e9, 0xc3ea,
  0xc3eb, 0xc3ec, 0xc3ed, 0xc3ee, 0xc3ef, 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0xc3f4,
  0xc3f5, 0xc3f6, 0xc3f7, 0xc3f8, 0xc3f9, 0xc3fa, 0xc3fb, 0xc3fc, 0xc3fd, 0xc3fe,
  0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, 0xc4a5, 0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa,
  0xc4ab, 0xc4ac, 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1, 0xc4b2, 0xc4b3, 0xc4b4,
  0xc4b5, 0xc4b6, 0xc4b7, 0xc4b8, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd, 0xc4be,
  0xc4bf, 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6, 0xc4c7, 0xc4c8,
  0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, 0xc4d0, 0xc4d1, 0xc4d2,
  0xc4d3, 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, 0xc4da, 0xc4db, 0xc4dc,
  0xc4dd, 0xc4de, 0xc4df, 0xc4e0, 0xc4e1, 0xc4e2, 0xc4e3, 0xc4e4, 0xc4e5, 0xc4e6,
  0xc4e7, 0xc4e8, 0xc4e9, 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, 0xc4f0,
  0xc4f1, 0xc4f2, 0xc4f3, 0xc4f4, 0xc4f5, 0xc4f6, 0xc4f7, 0xc4f8, 0xc4f9, 0xc4fa,
  0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6,
  0xc5a7, 0xc5a8, 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, 0xc5ae, 0xc5af, 0xc5b0,
  0xc5b1, 0xc5b2, 0xc5b3, 0xc5b4, 0xc5b5, 0xc5b6, 0xc5b7, 0xc5b8, 0xc5b9, 0xc5ba,
  0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5bf, 0xc5c0, 0xc5c1, 0xc5c2, 0xc5c3, 0xc5c4,
  0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cb, 0xc5cc, 0xc5cd, 0xc5ce,
  0xc5cf, 0xc5d0, 0xc5d1, 0xc5d2, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6, 0xc5d7, 0xc5d8,
  0xc5d9, 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5de, 0xc5df, 0xc5e0, 0xc5e1, 0xc5e2,
  0xc5e3, 0xc5e4, 0xc5e5, 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ec,
  0xc5ed, 0xc5ee, 0xc5ef, 0xc5f0, 0xc5f1, 0xc5f2, 0xc5f3, 0xc5f4, 0xc5f5, 0xc5f6,
  0xc5f7, 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc5fc, 0xc5fd, 0xc5fe, 0xc6a1, 0xc6a2,
  0xc6a3, 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab, 0xc6ac,
  0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3, 0xc6b4, 0xc6b5, 0xc6b6,
  0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0,
  0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca,
  0xc6cb, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3, 0xc6d4,
  0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6dc, 0xc6dd, 0xc6de,
  0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8,
  0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2,
  0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc,
  0xc6fd, 0xc6fe, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8,
  0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2,
  0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc,
  0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6,
  0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce, 0xc7cf, 0xc7d0,
  0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da,
  0xc7db, 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4,
  0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee,
  0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8,
  0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc8a1, 0xc8a2, 0xc8a3, 0xc8a4,
  0xc8a5, 0xc8a6, 0xc8a7, 0xc8a8, 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae,
  0xc8af, 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8,
  0xc8b9, 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1, 0xc8c2,
  0xc8c3, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9, 0xc8ca, 0xc8cb, 0xc8cc,
  0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d2, 0xc8d3, 0xc8d4, 0xc8d5, 0xc8d6,
  0xc8d7, 0xc8d8, 0xc8d9, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xc8e0,
  0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea,
  0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1, 0xc8f2, 0xc8f3, 0xc8f4,
  0xc8f5, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc8fe,
  0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8, 0xc9a9, 0xc9aa,
  0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0, 0xc9b1, 0xc9b2, 0xc9b3, 0xc9b4,
  0xc9b5, 0xc9b6, 0xc9b7, 0xc9b8, 0xc9b9, 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be,
  0xc9bf, 0xc9c0, 0xc9c1, 0xc9c2, 0xc9c3, 0xc9c4, 0xc9c5, 0xc9c6, 0xc9c7, 0xc9c8,
  0xc9c9, 0xc9ca, 0xc9cb, 0xc9cc, 0xc9cd, 0xc9ce, 0xc9cf, 0xc9d0, 0xc9d1, 0xc9d2,
  0xc9d3, 0xc9d4, 0xc9d5, 0xc9d6, 0xc9d7, 0xc9d8, 0xc9d9, 0xc9da, 0xc9db, 0xc9dc,
  0xc9dd, 0xc9de, 0xc9df, 0xc9e0, 0xc9e1, 0xc9e2, 0xc9e3, 0xc9e4, 0xc9e5, 0xc9e6,
  0xc9e7, 0xc9e8, 0xc9e9, 0xc9ea, 0xc9eb, 0xc9ec, 0xc9ed, 0xc9ee, 0xc9ef, 0xc9f0,
  0xc9f1, 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0xc9f8, 0xc9f9, 0xc9fa,
  0xc9fb, 0xc9fc, 0xc9fd, 0xc9fe, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6,
  0xcaa7, 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae, 0xcaaf, 0xcab0,
  0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, 0xcab8, 0xcab9, 0xcaba,
  0xcabb, 0xcabc, 0xcabd, 0xcabe, 0xcabf, 0xcac0, 0xcac1, 0xcac2, 0xcac3, 0xcac4,
  0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcacc, 0xcacd, 0xcace,
  0xcacf, 0xcad0, 0xcad1, 0xcad2, 0xcad3, 0xcad4, 0xcad5, 0xcad6, 0xcad7, 0xcad8,
  0xcad9, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade, 0xcadf, 0xcae0, 0xcae1, 0xcae2,
  0xcae3, 0xcae4, 0xcae5, 0xcae6, 0xcae7, 0xcae8, 0xcae9, 0xcaea, 0xcaeb, 0xcaec,
  0xcaed, 0xcaee, 0xcaef, 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0xcaf4, 0xcaf5, 0xcaf6,
  0xcaf7, 0xcaf8, 0xcaf9, 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcba1, 0xcba2,
  0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, 0xcba9, 0xcbaa, 0xcbab, 0xcbac,
  0xcbad, 0xcbae, 0xcbaf, 0xcbb0, 0xcbb1, 0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6,
  0xcbb7, 0xcbb8, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcbbe, 0xcbbf, 0xcbc0,
  0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6, 0xcbc7, 0xcbc8, 0xcbc9, 0xcbca,
  0xcbcb, 0xcbcc, 0xcbcd, 0xcbce, 0xcbcf, 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0xcbd4,
  0xcbd5, 0xcbd6, 0xcbd7, 0xcbd8, 0xcbd9, 0xcbda, 0xcbdb, 0xcbdc, 0xcbdd, 0xcbde,
  0xcbdf, 0xcbe0, 0xcbe1, 0xcbe2, 0xcbe3, 0xcbe4, 0xcbe5, 0xcbe6, 0xcbe7, 0xcbe8,
  0xcbe9, 0xcbea, 0xcbeb, 0xcbec, 0xcbed, 0xcbee, 0xcbef, 0xcbf0, 0xcbf1, 0xcbf2,
  0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, 0xcbf7, 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc,
  0xcbfd, 0xcbfe, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6, 0xcca7, 0xcca8,
  0xcca9, 0xccaa, 0xccab, 0xccac, 0xccad, 0xccae, 0xccaf, 0xccb0, 0xccb1, 0xccb2,
  0xccb3, 0xccb4, 0xccb5, 0xccb6, 0xccb7, 0xccb8, 0xccb9, 0xccba, 0xccbb, 0xccbc,
  0xccbd, 0xccbe, 0xccbf, 0xccc0, 0xccc1, 0xccc2, 0xccc3, 0xccc4, 0xccc5, 0xccc6,
  0xccc7, 0xccc8, 0xccc9, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0xccd0,
  0xccd1, 0xccd2, 0xccd3, 0xccd4, 0xccd5, 0xccd6, 0xccd7, 0xccd8, 0xccd9, 0xccda,
  0xccdb, 0xccdc, 0xccdd, 0xccde, 0xccdf, 0xcce0, 0xcce1, 0xcce2, 0xcce3, 0xcce4,
  0xcce5, 0xcce6, 0xcce7, 0xcce8, 0xcce9, 0xccea, 0xcceb, 0xccec, 0xcced, 0xccee,
  0xccef, 0xccf0, 0xccf1, 0xccf2, 0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7, 0xccf8,
  0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd, 0xccfe, 0xcda1, 0xcda2, 0xcda3, 0xcda4,
  0xcda5, 0xcda6, 0xcda7, 0xcda8, 0xcda9, 0xcdaa, 0xcdab, 0xcdac, 0xcdad, 0xcdae,
  0xcdaf, 0xcdb0, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6, 0xcdb7, 0xcdb8,
  0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd, 0xcdbe, 0xcdbf, 0xcdc0, 0xcdc1, 0xcdc2,
  0xcdc3, 0xcdc4, 0xcdc5, 0xcdc6, 0xcdc7, 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0xcdcc,
  0xcdcd, 0xcdce, 0xcdcf, 0xcdd0, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6,
  0xcdd7, 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xcddd, 0xcdde, 0xcddf, 0xcde0,
  0xcde1, 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, 0xcde8, 0xcde9, 0xcdea,
  0xcdeb, 0xcdec, 0xcded, 0xcdee, 0xcdef, 0xcdf0, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4,
  0xcdf5, 0xcdf6, 0xcdf7, 0xcdf8, 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd, 0xcdfe,
  0xcea1, 0xcea2, 0xcea3, 0xcea4, 0xcea5, 0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa,
  0xceab, 0xceac, 0xcead, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb2, 0xceb3, 0xceb4,
  0xceb5, 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd, 0xcebe,
  0xcebf, 0xcec0, 0xcec1, 0xcec2, 0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, 0xcec8,
  0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, 0xced0, 0xced1, 0xced2,
  0xced3, 0xced4, 0xced5, 0xced6, 0xced7, 0xced8, 0xced9, 0xceda, 0xcedb, 0xcedc,
  0xcedd, 0xcede, 0xcedf, 0xcee0, 0xcee1, 0xcee2, 0xcee3, 0xcee4, 0xcee5, 0xcee6,
  0xcee7, 0xcee8, 0xcee9, 0xceea, 0xceeb, 0xceec, 0xceed, 0xceee, 0xceef, 0xcef0,
  0xcef1, 0xcef2, 0xcef3, 0xcef4, 0xcef5, 0xcef6, 0xcef7, 0xcef8, 0xcef9, 0xcefa,
  0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xcfa1, 0xcfa2, 0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6,
  0xcfa7, 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, 0xcfaf, 0xcfb0,
  0xcfb1, 0xcfb2, 0xcfb3, 0xcfb4, 0xcfb5, 0xcfb6, 0xcfb7, 0xcfb8, 0xcfb9, 0xcfba,
  0xcfbb, 0xcfbc, 0xcfbd, 0xcfbe, 0xcfbf, 0xcfc0, 0xcfc1, 0xcfc2, 0xcfc3, 0xcfc4,
  0xcfc5, 0xcfc6, 0xcfc7, 0xcfc8, 0xcfc9, 0xcfca, 0xcfcb, 0xcfcc, 0xcfcd, 0xcfce,
  0xcfcf, 0xcfd0, 0xcfd1, 0xcfd2, 0xcfd3, 0xcfd4, 0xcfd5, 0xcfd6, 0xcfd7, 0xcfd8,
  0xcfd9, 0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, 0xcfe0, 0xcfe1, 0xcfe2,
  0xcfe3, 0xcfe4, 0xcfe5, 0xcfe6, 0xcfe7, 0xcfe8, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec,
  0xcfed, 0xcfee, 0xcfef, 0xcff0, 0xcff1, 0xcff2, 0xcff3, 0xcff4, 0xcff5, 0xcff6,
  0xcff7, 0xcff8, 0xcff9, 0xcffa, 0xcffb, 0xcffc, 0xcffd, 0xcffe, 0xd0a1, 0xd0a2,
  0xd0a3, 0xd0a4, 0xd0a5, 0xd0a6, 0xd0a7, 0xd0a8, 0xd0a9, 0xd0aa, 0xd0ab, 0xd0ac,
  0xd0ad, 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b2, 0xd0b3, 0xd0b4, 0xd0b5, 0xd0b6,
  0xd0b7, 0xd0b8, 0xd0b9, 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be, 0xd0bf, 0xd0c0,
  0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4, 0xd0c5, 0xd0c6, 0xd0c7, 0xd0c8, 0xd0c9, 0xd0ca,
  0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, 0xd0cf, 0xd0d0, 0xd0d1, 0xd0d2, 0xd0d3, 0xd0d4,
  0xd0d5, 0xd0d6, 0xd0d7, 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0dc, 0xd0dd, 0xd0de,
  0xd0df, 0xd0e0, 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8,
  0xd0e9, 0xd0ea, 0xd0eb, 0xd0ec, 0xd0ed, 0xd0ee, 0xd0ef, 0xd0f0, 0xd0f1, 0xd0f2,
  0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0xd0f8, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc,
  0xd0fd, 0xd0fe, 0xd1a1, 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6, 0xd1a7, 0xd1a8,
  0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, 0xd1b0, 0xd1b1, 0xd1b2,
  0xd1b3, 0xd1b4, 0xd1b5, 0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, 0xd1ba, 0xd1bb, 0xd1bc,
  0xd1bd, 0xd1be, 0xd1bf, 0xd1c0, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6,
  0xd1c7, 0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0,
  0xd1d1, 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6, 0xd1d7, 0xd1d8, 0xd1d9, 0xd1da,
  0xd1db, 0xd1dc, 0xd1dd, 0xd1de, 0xd1df, 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4,
  0xd1e5, 0xd1e6, 0xd1e7, 0xd1e8, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee,
  0xd1ef, 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7, 0xd1f8,
  0xd1f9, 0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd2a1, 0xd2a2, 0xd2a3, 0xd2a4,
  0xd2a5, 0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ac, 0xd2ad, 0xd2ae,
  0xd2af, 0xd2b0, 0xd2b1, 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7, 0xd2b8,
  0xd2b9, 0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2be, 0xd2bf, 0xd2c0, 0xd2c1, 0xd2c2,
  0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6, 0xd2c7, 0xd2c8, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc,
  0xd2cd, 0xd2ce, 0xd2cf, 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0xd2d4, 0xd2d5, 0xd2d6,
  0xd2d7, 0xd2d8, 0xd2d9, 0xd2da, 0xd2db, 0xd2dc, 0xd2dd, 0xd2de, 0xd2df, 0xd2e0,
  0xd2e1, 0xd2e2, 0xd2e3, 0xd2e4, 0xd2e5, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9, 0xd2ea,
  0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0xd2f0, 0xd2f1, 0xd2f2, 0xd2f3, 0xd2f4,
  0xd2f5, 0xd2f6, 0xd2f7, 0xd2f8, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe,
  0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6, 0xd3a7, 0xd3a8, 0xd3a9, 0xd3aa,
  0xd3ab, 0xd3ac, 0xd3ad, 0xd3ae, 0xd3af, 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0xd3b4,
  0xd3b5, 0xd3b6, 0xd3b7, 0xd3b8, 0xd3b9, 0xd3ba, 0xd3bb, 0xd3bc, 0xd3bd, 0xd3be,
  0xd3bf, 0xd3c0, 0xd3c1, 0xd3c2, 0xd3c3, 0xd3c4, 0xd3c5, 0xd3c6, 0xd3c7, 0xd3c8,
  0xd3c9, 0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd, 0xd3ce, 0xd3cf, 0xd3d0, 0xd3d1, 0xd3d2,
  0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6, 0xd3d7, 0xd3d8, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc,
  0xd3dd, 0xd3de, 0xd3df, 0xd3e0, 0xd3e1, 0xd3e2, 0xd3e3, 0xd3e4, 0xd3e5, 0xd3e6,
  0xd3e7, 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0xd3ec, 0xd3ed, 0xd3ee, 0xd3ef, 0xd3f0,
  0xd3f1, 0xd3f2, 0xd3f3, 0xd3f4, 0xd3f5, 0xd3f6, 0xd3f7, 0xd3f8, 0xd3f9, 0xd3fa,
  0xd3fb, 0xd3fc, 0xd3fd, 0xd3fe, 0xd4a1, 0xd4a2, 0xd4a3, 0xd4a4, 0xd4a5, 0xd4a6,
  0xd4a7, 0xd4a8, 0xd4a9, 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af, 0xd4b0,
  0xd4b1, 0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6, 0xd4b7, 0xd4b8, 0xd4b9, 0xd4ba,
  0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, 0xd4bf, 0xd4c0, 0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4,
  0xd4c5, 0xd4c6, 0xd4c7, 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0xd4cc, 0xd4cd, 0xd4ce,
  0xd4cf, 0xd4d0, 0xd4d1, 0xd4d2, 0xd4d3, 0xd4d4, 0xd4d5, 0xd4d6, 0xd4d7, 0xd4d8,
  0xd4d9, 0xd4da, 0xd4db, 0xd4dc, 0xd4dd, 0xd4de, 0xd4df, 0xd4e0, 0xd4e1, 0xd4e2,
  0xd4e3, 0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7, 0xd4e8, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ec,
  0xd4ed, 0xd4ee, 0xd4ef, 0xd4f0, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5, 0xd4f6,
  0xd4f7, 0xd4f8, 0xd4f9, 0xd4fa, 0xd4fb, 0xd4fc, 0xd4fd, 0xd4fe, 0xd5a1, 0xd5a2,
  0xd5a3, 0xd5a4, 0xd5a5, 0xd5a6, 0xd5a7, 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0xd5ac,
  0xd5ad, 0xd5ae, 0xd5af, 0xd5b0, 0xd5b1, 0xd5b2, 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6,
  0xd5b7, 0xd5b8, 0xd5b9, 0xd5ba, 0xd5bb, 0xd5bc, 0xd5bd, 0xd5be, 0xd5bf, 0xd5c0,
  0xd5c1, 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, 0xd5c8, 0xd5c9, 0xd5ca,
  0xd5cb, 0xd5cc, 0xd5cd, 0xd5ce, 0xd5cf, 0xd5d0, 0xd5d1, 0xd5d2, 0xd5d3, 0xd5d4,
  0xd5d5, 0xd5d6, 0xd5d7, 0xd5d8, 0xd5d9, 0xd5da, 0xd5db, 0xd5dc, 0xd5dd, 0xd5de,
  0xd5df, 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0xd5e4, 0xd5e5, 0xd5e6, 0xd5e7, 0xd5e8,
  0xd5e9, 0xd5ea, 0xd5eb, 0xd5ec, 0xd5ed, 0xd5ee, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f2,
  0xd5f3, 0xd5f4, 0xd5f5, 0xd5f6, 0xd5f7, 0xd5f8, 0xd5f9, 0xd5fa, 0xd5fb, 0xd5fc,
  0xd5fd, 0xd5fe, 0xd6a1, 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, 0xd6a8,
  0xd6a9, 0xd6aa, 0xd6ab, 0xd6ac, 0xd6ad, 0xd6ae, 0xd6af, 0xd6b0, 0xd6b1, 0xd6b2,
  0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6, 0xd6b7, 0xd6b8, 0xd6b9, 0xd6ba, 0xd6bb, 0xd6bc,
  0xd6bd, 0xd6be, 0xd6bf, 0xd6c0, 0xd6c1, 0xd6c2, 0xd6c3, 0xd6c4, 0xd6c5, 0xd6c6,
  0xd6c7, 0xd6c8, 0xd6c9, 0xd6ca, 0xd6cb, 0xd6cc, 0xd6cd, 0xd6ce, 0xd6cf, 0xd6d0,
  0xd6d1, 0xd6d2, 0xd6d3, 0xd6d4, 0xd6d5, 0xd6d6, 0xd6d7, 0xd6d8, 0xd6d9, 0xd6da,
  0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df, 0xd6e0, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e4,
  0xd6e5, 0xd6e6, 0xd6e7, 0xd6e8, 0xd6e9, 0xd6ea, 0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee,
  0xd6ef, 0xd6f0, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f5, 0xd6f6, 0xd6f7, 0xd6f8,
  0xd6f9, 0xd6fa, 0xd6fb, 0xd6fc, 0xd6fd, 0xd6fe, 0xd7a1, 0xd7a2, 0xd7a3, 0xd7a4,
  0xd7a5, 0xd7a6, 0xd7a7, 0xd7a8, 0xd7a9, 0xd7aa, 0xd7ab, 0xd7ac, 0xd7ad, 0xd7ae,
  0xd7af, 0xd7b0, 0xd7b1, 0xd7b2, 0xd7b3, 0xd7b4, 0xd7b5, 0xd7b6, 0xd7b7, 0xd7b8,
  0xd7b9, 0xd7ba, 0xd7bb, 0xd7bc, 0xd7bd, 0xd7be, 0xd7bf, 0xd7c0, 0xd7c1, 0xd7c2,
  0xd7c3, 0xd7c4, 0xd7c5, 0xd7c6, 0xd7c7, 0xd7c8, 0xd7c9, 0xd7ca, 0xd7cb, 0xd7cc,
  0xd7cd, 0xd7ce, 0xd7cf, 0xd7d0, 0xd7d1, 0xd7d2, 0xd7d3, 0xd7d4, 0xd7d5, 0xd7d6,
  0xd7d7, 0xd7d8, 0xd7d9, 0xd7da, 0xd7db, 0xd7dc, 0xd7dd, 0xd7de, 0xd7df, 0xd7e0,
  0xd7e1, 0xd7e2, 0xd7e3, 0xd7e4, 0xd7e5, 0xd7e6, 0xd7e7, 0xd7e8, 0xd7e9, 0xd7ea,
  0xd7eb, 0xd7ec, 0xd7ed, 0xd7ee, 0xd7ef, 0xd7f0, 0xd7f1, 0xd7f2, 0xd7f3, 0xd7f4,
  0xd7f5, 0xd7f6, 0xd7f7, 0xd7f8, 0xd7f9};

int gblookup[]={
  0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, 0xb0a8, 0xb0a9, 0xb0aa,
  0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af, 0xb0b0, 0xb0b1, 0xb0b2, 0xb0b3, 0xb0b4,
  0xb0b5, 0xb0b6, 0xb0b7, 0xb0b8, 0xb0b9, 0xb0ba, 0xb0bb, 0xb0bc, 0xb0bd, 0xb0be,
  0xb0bf, 0xb0c0, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c4, 0xb0c5, 0xb0c6, 0xb0c7, 0xb0c8,
  0xb0c9, 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf, 0xb0d0, 0xb0d1, 0xb0d2,
  0xb0d3, 0xb0d4, 0xb0d5, 0xb0d6, 0xb0d7, 0xb0d8, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc,
  0xb0dd, 0xb0de, 0xb0df, 0xb0e0, 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5, 0xb0e6,
  0xb0e7, 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0,
  0xb0f1, 0xb0f2, 0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, 0xb0fa,
  0xb0fb, 0xb0fc, 0xb0fd, 0xb0fe, 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6,
  0xb1a7, 0xb1a8, 0xb1a9, 0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0xb1b0,
  0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, 0xb1b8, 0xb1b9, 0xb1ba,
  0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0xb1bf, 0xb1c0, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4,
  0xb1c5, 0xb1c6, 0xb1c7, 0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0xb1cc, 0xb1cd, 0xb1ce,
  0xb1cf, 0xb1d0, 0xb1d1, 0xb1d2, 0xb1d3, 0xb1d4, 0xb1d5, 0xb1d6, 0xb1d7, 0xb1d8,
  0xb1d9, 0xb1da, 0xb1db, 0xb1dc, 0xb1dd, 0xb1de, 0xb1df, 0xb1e0, 0xb1e1, 0xb1e2,
  0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0xb1e8, 0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec,
  0xb1ed, 0xb1ee, 0xb1ef, 0xb1f0, 0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6,
  0xb1f7, 0xb1f8, 0xb1f9, 0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd, 0xb1fe, 0xb2a1, 0xb2a2,
  0xb2a3, 0xb2a4, 0xb2a5, 0xb2a6, 0xb2a7, 0xb2a8, 0xb2a9, 0xb2aa, 0xb2ab, 0xb2ac,
  0xb2ad, 0xb2ae, 0xb2af, 0xb2b0, 0xb2b1, 0xb2b2, 0xb2b3, 0xb2b4, 0xb2b5, 0xb2b6,
  0xb2b7, 0xb2b8, 0xb2b9, 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2be, 0xb2bf, 0xb2c0,
  0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, 0xb2c8, 0xb2c9, 0xb2ca,
  0xb2cb, 0xb2cc, 0xb2cd, 0xb2ce, 0xb2cf, 0xb2d0, 0xb2d1, 0xb2d2, 0xb2d3, 0xb2d4,
  0xb2d5, 0xb2d6, 0xb2d7, 0xb2d8, 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd, 0xb2de,
  0xb2df, 0xb2e0, 0xb2e1, 0xb2e2, 0xb2e3, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7, 0xb2e8,
  0xb2e9, 0xb2ea, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f0, 0xb2f1, 0xb2f2,
  0xb2f3, 0xb2f4, 0xb2f5, 0xb2f6, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa, 0xb2fb, 0xb2fc,
  0xb2fd, 0xb2fe, 0xb3a1, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, 0xb3a8,
  0xb3a9, 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae, 0xb3af, 0xb3b0, 0xb3b1, 0xb3b2,
  0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6, 0xb3b7, 0xb3b8, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc,
  0xb3bd, 0xb3be, 0xb3bf, 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0xb3c4, 0xb3c5, 0xb3c6,
  0xb3c7, 0xb3c8, 0xb3c9, 0xb3ca, 0xb3cb, 0xb3cc, 0xb3cd, 0xb3ce, 0xb3cf, 0xb3d0,
  0xb3d1, 0xb3d2, 0xb3d3, 0xb3d4, 0xb3d5, 0xb3d6, 0xb3d7, 0xb3d8, 0xb3d9, 0xb3da,
  0xb3db, 0xb3dc, 0xb3dd, 0xb3de, 0xb3df, 0xb3e0, 0xb3e1, 0xb3e2, 0xb3e3, 0xb3e4,
  0xb3e5, 0xb3e6, 0xb3e7, 0xb3e8, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee,
  0xb3ef, 0xb3f0, 0xb3f1, 0xb3f2, 0xb3f3, 0xb3f4, 0xb3f5, 0xb3f6, 0xb3f7, 0xb3f8,
  0xb3f9, 0xb3fa, 0xb3fb, 0xb3fc, 0xb3fd, 0xb3fe, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a4,
  0xb4a5, 0xb4a6, 0xb4a7, 0xb4a8, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ac, 0xb4ad, 0xb4ae,
  0xb4af, 0xb4b0, 0xb4b1, 0xb4b2, 0xb4b3, 0xb4b4, 0xb4b5, 0xb4b6, 0xb4b7, 0xb4b8,
  0xb4b9, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, 0xb4c0, 0xb4c1, 0xb4c2,
  0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6, 0xb4c7, 0xb4c8, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc,
  0xb4cd, 0xb4ce, 0xb4cf, 0xb4d0, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d5, 0xb4d6,
  0xb4d7, 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0xb4dc, 0xb4dd, 0xb4de, 0xb4df, 0xb4e0,
  0xb4e1, 0xb4e2, 0xb4e3, 0xb4e4, 0xb4e5, 0xb4e6, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea,
  0xb4eb, 0xb4ec, 0xb4ed, 0xb4ee, 0xb4ef, 0xb4f0, 0xb4f1, 0xb4f2, 0xb4f3, 0xb4f4,
  0xb4f5, 0xb4f6, 0xb4f7, 0xb4f8, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe,
  0xb5a1, 0xb5a2, 0xb5a3, 0xb5a4, 0xb5a5, 0xb5a6, 0xb5a7, 0xb5a8, 0xb5a9, 0xb5aa,
  0xb5ab, 0xb5ac, 0xb5ad, 0xb5ae, 0xb5af, 0xb5b0, 0xb5b1, 0xb5b2, 0xb5b3, 0xb5b4,
  0xb5b5, 0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5be,
  0xb5bf, 0xb5c0, 0xb5c1, 0xb5c2, 0xb5c3, 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8,
  0xb5c9, 0xb5ca, 0xb5cb, 0xb5cc, 0xb5cd, 0xb5ce, 0xb5cf, 0xb5d0, 0xb5d1, 0xb5d2,
  0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, 0xb5d8, 0xb5d9, 0xb5da, 0xb5db, 0xb5dc,
  0xb5dd, 0xb5de, 0xb5df, 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6,
  0xb5e7, 0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec, 0xb5ed, 0xb5ee, 0xb5ef, 0xb5f0,
  0xb5f1, 0xb5f2, 0xb5f3, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7, 0xb5f8, 0xb5f9, 0xb5fa,
  0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a4, 0xb6a5, 0xb6a6,
  0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa, 0xb6ab, 0xb6ac, 0xb6ad, 0xb6ae, 0xb6af, 0xb6b0,
  0xb6b1, 0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, 0xb6b8, 0xb6b9, 0xb6ba,
  0xb6bb, 0xb6bc, 0xb6bd, 0xb6be, 0xb6bf, 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4,
  0xb6c5, 0xb6c6, 0xb6c7, 0xb6c8, 0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd, 0xb6ce,
  0xb6cf, 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0xb6d4, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8,
  0xb6d9, 0xb6da, 0xb6db, 0xb6dc, 0xb6dd, 0xb6de, 0xb6df, 0xb6e0, 0xb6e1, 0xb6e2,
  0xb6e3, 0xb6e4, 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, 0xb6ea, 0xb6eb, 0xb6ec,
  0xb6ed, 0xb6ee, 0xb6ef, 0xb6f0, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f4, 0xb6f5, 0xb6f6,
  0xb6f7, 0xb6f8, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd, 0xb6fe, 0xb7a1, 0xb7a2,
  0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6, 0xb7a7, 0xb7a8, 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac,
  0xb7ad, 0xb7ae, 0xb7af, 0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0xb7b4, 0xb7b5, 0xb7b6,
  0xb7b7, 0xb7b8, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf, 0xb7c0,
  0xb7c1, 0xb7c2, 0xb7c3, 0xb7c4, 0xb7c5, 0xb7c6, 0xb7c7, 0xb7c8, 0xb7c9, 0xb7ca,
  0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, 0xb7d0, 0xb7d1, 0xb7d2, 0xb7d3, 0xb7d4,
  0xb7d5, 0xb7d6, 0xb7d7, 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de,
  0xb7df, 0xb7e0, 0xb7e1, 0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5, 0xb7e6, 0xb7e7, 0xb7e8,
  0xb7e9, 0xb7ea, 0xb7eb, 0xb7ec, 0xb7ed, 0xb7ee, 0xb7ef, 0xb7f0, 0xb7f1, 0xb7f2,
  0xb7f3, 0xb7f4, 0xb7f5, 0xb7f6, 0xb7f7, 0xb7f8, 0xb7f9, 0xb7fa, 0xb7fb, 0xb7fc,
  0xb7fd, 0xb7fe, 0xb8a1, 0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a8,
  0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0xb8b0, 0xb8b1, 0xb8b2,
  0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6, 0xb8b7, 0xb8b8, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc,
  0xb8bd, 0xb8be, 0xb8bf, 0xb8c0, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4, 0xb8c5, 0xb8c6,
  0xb8c7, 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cc, 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d0,
  0xb8d1, 0xb8d2, 0xb8d3, 0xb8d4, 0xb8d5, 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9, 0xb8da,
  0xb8db, 0xb8dc, 0xb8dd, 0xb8de, 0xb8df, 0xb8e0, 0xb8e1, 0xb8e2, 0xb8e3, 0xb8e4,
  0xb8e5, 0xb8e6, 0xb8e7, 0xb8e8, 0xb8e9, 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee,
  0xb8ef, 0xb8f0, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, 0xb8f8,
  0xb8f9, 0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd, 0xb8fe, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4,
  0xb9a5, 0xb9a6, 0xb9a7, 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ac, 0xb9ad, 0xb9ae,
  0xb9af, 0xb9b0, 0xb9b1, 0xb9b2, 0xb9b3, 0xb9b4, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8,
  0xb9b9, 0xb9ba, 0xb9bb, 0xb9bc, 0xb9bd, 0xb9be, 0xb9bf, 0xb9c0, 0xb9c1, 0xb9c2,
  0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc,
  0xb9cd, 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d3, 0xb9d4, 0xb9d5, 0xb9d6,
  0xb9d7, 0xb9d8, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd, 0xb9de, 0xb9df, 0xb9e0,
  0xb9e1, 0xb9e2, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e6, 0xb9e7, 0xb9e8, 0xb9e9, 0xb9ea,
  0xb9eb, 0xb9ec, 0xb9ed, 0xb9ee, 0xb9ef, 0xb9f0, 0xb9f1, 0xb9f2, 0xb9f3, 0xb9f4,
  0xb9f5, 0xb9f6, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe,
  0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0xbaa8, 0xbaa9, 0xbaaa,
  0xbaab, 0xbaac, 0xbaad, 0xbaae, 0xbaaf, 0xbab0, 0xbab1, 0xbab2, 0xbab3, 0xbab4,
  0xbab5, 0xbab6, 0xbab7, 0xbab8, 0xbab9, 0xbaba, 0xbabb, 0xbabc, 0xbabd, 0xbabe,
  0xbabf, 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0xbac4, 0xbac5, 0xbac6, 0xbac7, 0xbac8,
  0xbac9, 0xbaca, 0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad2,
  0xbad3, 0xbad4, 0xbad5, 0xbad6, 0xbad7, 0xbad8, 0xbad9, 0xbada, 0xbadb, 0xbadc,
  0xbadd, 0xbade, 0xbadf, 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6,
  0xbae7, 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, 0xbaf0,
  0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5, 0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9, 0xbafa,
  0xbafb, 0xbafc, 0xbafd, 0xbafe, 0xbba1, 0xbba2, 0xbba3, 0xbba4, 0xbba5, 0xbba6,
  0xbba7, 0xbba8, 0xbba9, 0xbbaa, 0xbbab, 0xbbac, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0,
  0xbbb1, 0xbbb2, 0xbbb3, 0xbbb4, 0xbbb5, 0xbbb6, 0xbbb7, 0xbbb8, 0xbbb9, 0xbbba,
  0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, 0xbbc0, 0xbbc1, 0xbbc2, 0xbbc3, 0xbbc4,
  0xbbc5, 0xbbc6, 0xbbc7, 0xbbc8, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce,
  0xbbcf, 0xbbd0, 0xbbd1, 0xbbd2, 0xbbd3, 0xbbd4, 0xbbd5, 0xbbd6, 0xbbd7, 0xbbd8,
  0xbbd9, 0xbbda, 0xbbdb, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf, 0xbbe0, 0xbbe1, 0xbbe2,
  0xbbe3, 0xbbe4, 0xbbe5, 0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9, 0xbbea, 0xbbeb, 0xbbec,
  0xbbed, 0xbbee, 0xbbef, 0xbbf0, 0xbbf1, 0xbbf2, 0xbbf3, 0xbbf4, 0xbbf5, 0xbbf6,
  0xbbf7, 0xbbf8, 0xbbf9, 0xbbfa, 0xbbfb, 0xbbfc, 0xbbfd, 0xbbfe, 0xbca1, 0xbca2,
  0xbca3, 0xbca4, 0xbca5, 0xbca6, 0xbca7, 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac,
  0xbcad, 0xbcae, 0xbcaf, 0xbcb0, 0xbcb1, 0xbcb2, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcb6,
  0xbcb7, 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0xbcbc, 0xbcbd, 0xbcbe, 0xbcbf, 0xbcc0,
  0xbcc1, 0xbcc2, 0xbcc3, 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9, 0xbcca,
  0xbccb, 0xbccc, 0xbccd, 0xbcce, 0xbccf, 0xbcd0, 0xbcd1, 0xbcd2, 0xbcd3, 0xbcd4,
  0xbcd5, 0xbcd6, 0xbcd7, 0xbcd8, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbcde,
  0xbcdf, 0xbce0, 0xbce1, 0xbce2, 0xbce3, 0xbce4, 0xbce5, 0xbce6, 0xbce7, 0xbce8,
  0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced, 0xbcee, 0xbcef, 0xbcf0, 0xbcf1, 0xbcf2,
  0xbcf3, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf7, 0xbcf8, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfc,
  0xbcfd, 0xbcfe, 0xbda1, 0xbda2, 0xbda3, 0xbda4, 0xbda5, 0xbda6, 0xbda7, 0xbda8,
  0xbda9, 0xbdaa, 0xbdab, 0xbdac, 0xbdad, 0xbdae, 0xbdaf, 0xbdb0, 0xbdb1, 0xbdb2,
  0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, 0xbdb8, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc,
  0xbdbd, 0xbdbe, 0xbdbf, 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6,
  0xbdc7, 0xbdc8, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd, 0xbdce, 0xbdcf, 0xbdd0,
  0xbdd1, 0xbdd2, 0xbdd3, 0xbdd4, 0xbdd5, 0xbdd6, 0xbdd7, 0xbdd8, 0xbdd9, 0xbdda,
  0xbddb, 0xbddc, 0xbddd, 0xbdde, 0xbddf, 0xbde0, 0xbde1, 0xbde2, 0xbde3, 0xbde4,
  0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbde9, 0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee,
  0xbdef, 0xbdf0, 0xbdf1, 0xbdf2, 0xbdf3, 0xbdf4, 0xbdf5, 0xbdf6, 0xbdf7, 0xbdf8,
  0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, 0xbea1, 0xbea2, 0xbea3, 0xbea4,
  0xbea5, 0xbea6, 0xbea7, 0xbea8, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, 0xbeae,
  0xbeaf, 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0xbeb4, 0xbeb5, 0xbeb6, 0xbeb7, 0xbeb8,
  0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf, 0xbec0, 0xbec1, 0xbec2,
  0xbec3, 0xbec4, 0xbec5, 0xbec6, 0xbec7, 0xbec8, 0xbec9, 0xbeca, 0xbecb, 0xbecc,
  0xbecd, 0xbece, 0xbecf, 0xbed0, 0xbed1, 0xbed2, 0xbed3, 0xbed4, 0xbed5, 0xbed6,
  0xbed7, 0xbed8, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede, 0xbedf, 0xbee0,
  0xbee1, 0xbee2, 0xbee3, 0xbee4, 0xbee5, 0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea,
  0xbeeb, 0xbeec, 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef2, 0xbef3, 0xbef4,
  0xbef5, 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa, 0xbefb, 0xbefc, 0xbefd, 0xbefe,
  0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4, 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, 0xbfaa,
  0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf, 0xbfb0, 0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4,
  0xbfb5, 0xbfb6, 0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe,
  0xbfbf, 0xbfc0, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc5, 0xbfc6, 0xbfc7, 0xbfc8,
  0xbfc9, 0xbfca, 0xbfcb, 0xbfcc, 0xbfcd, 0xbfce, 0xbfcf, 0xbfd0, 0xbfd1, 0xbfd2,
  0xbfd3, 0xbfd4, 0xbfd5, 0xbfd6, 0xbfd7, 0xbfd8, 0xbfd9, 0xbfda, 0xbfdb, 0xbfdc,
  0xbfdd, 0xbfde, 0xbfdf, 0xbfe0, 0xbfe1, 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5, 0xbfe6,
  0xbfe7, 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, 0xbfef, 0xbff0,
  0xbff1, 0xbff2, 0xbff3, 0xbff4, 0xbff5, 0xbff6, 0xbff7, 0xbff8, 0xbff9, 0xbffa,
  0xbffb, 0xbffc, 0xbffd, 0xbffe, 0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5, 0xc0a6,
  0xc0a7, 0xc0a8, 0xc0a9, 0xc0aa, 0xc0ab, 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af, 0xc0b0,
  0xc0b1, 0xc0b2, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7, 0xc0b8, 0xc0b9, 0xc0ba,
  0xc0bb, 0xc0bc, 0xc0bd, 0xc0be, 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c2, 0xc0c3, 0xc0c4,
  0xc0c5, 0xc0c6, 0xc0c7, 0xc0c8, 0xc0c9, 0xc0ca, 0xc0cb, 0xc0cc, 0xc0cd, 0xc0ce,
  0xc0cf, 0xc0d0, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, 0xc0d7, 0xc0d8,
  0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd, 0xc0de, 0xc0df, 0xc0e0, 0xc0e1, 0xc0e2,
  0xc0e3, 0xc0e4, 0xc0e5, 0xc0e6, 0xc0e7, 0xc0e8, 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ec,
  0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0, 0xc0f1, 0xc0f2, 0xc0f3, 0xc0f4, 0xc0f5, 0xc0f6,
  0xc0f7, 0xc0f8, 0xc0f9, 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc1a1, 0xc1a2,
  0xc1a3, 0xc1a4, 0xc1a5, 0xc1a6, 0xc1a7, 0xc1a8, 0xc1a9, 0xc1aa, 0xc1ab, 0xc1ac,
  0xc1ad, 0xc1ae, 0xc1af, 0xc1b0, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6,
  0xc1b7, 0xc1b8, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd, 0xc1be, 0xc1bf, 0xc1c0,
  0xc1c1, 0xc1c2, 0xc1c3, 0xc1c4, 0xc1c5, 0xc1c6, 0xc1c7, 0xc1c8, 0xc1c9, 0xc1ca,
  0xc1cb, 0xc1cc, 0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d2, 0xc1d3, 0xc1d4,
  0xc1d5, 0xc1d6, 0xc1d7, 0xc1d8, 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de,
  0xc1df, 0xc1e0, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6, 0xc1e7, 0xc1e8,
  0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, 0xc1f0, 0xc1f1, 0xc1f2,
  0xc1f3, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0xc1fc,
  0xc1fd, 0xc1fe, 0xc2a1, 0xc2a2, 0xc2a3, 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7, 0xc2a8,
  0xc2a9, 0xc2aa, 0xc2ab, 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af, 0xc2b0, 0xc2b1, 0xc2b2,
  0xc2b3, 0xc2b4, 0xc2b5, 0xc2b6, 0xc2b7, 0xc2b8, 0xc2b9, 0xc2ba, 0xc2bb, 0xc2bc,
  0xc2bd, 0xc2be, 0xc2bf, 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6,
  0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce, 0xc2cf, 0xc2d0,
  0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5, 0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da,
  0xc2db, 0xc2dc, 0xc2dd, 0xc2de, 0xc2df, 0xc2e0, 0xc2e1, 0xc2e2, 0xc2e3, 0xc2e4,
  0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9, 0xc2ea, 0xc2eb, 0xc2ec, 0xc2ed, 0xc2ee,
  0xc2ef, 0xc2f0, 0xc2f1, 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f6, 0xc2f7, 0xc2f8,
  0xc2f9, 0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc2fe, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4,
  0xc3a5, 0xc3a6, 0xc3a7, 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae,
  0xc3af, 0xc3b0, 0xc3b1, 0xc3b2, 0xc3b3, 0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, 0xc3b8,
  0xc3b9, 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, 0xc3c0, 0xc3c1, 0xc3c2,
  0xc3c3, 0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9, 0xc3ca, 0xc3cb, 0xc3cc,
  0xc3cd, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1, 0xc3d2, 0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6,
  0xc3d7, 0xc3d8, 0xc3d9, 0xc3da, 0xc3db, 0xc3dc, 0xc3dd, 0xc3de, 0xc3df, 0xc3e0,
  0xc3e1, 0xc3e2, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6, 0xc3e7, 0xc3e8, 0xc3e9, 0xc3ea,
  0xc3eb, 0xc3ec, 0xc3ed, 0xc3ee, 0xc3ef, 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0xc3f4,
  0xc3f5, 0xc3f6, 0xc3f7, 0xc3f8, 0xc3f9, 0xc3fa, 0xc3fb, 0xc3fc, 0xc3fd, 0xc3fe,
  0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, 0xc4a5, 0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa,
  0xc4ab, 0xc4ac, 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1, 0xc4b2, 0xc4b3, 0xc4b4,
  0xc4b5, 0xc4b6, 0xc4b7, 0xc4b8, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd, 0xc4be,
  0xc4bf, 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6, 0xc4c7, 0xc4c8,
  0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, 0xc4d0, 0xc4d1, 0xc4d2,
  0xc4d3, 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, 0xc4da, 0xc4db, 0xc4dc,
  0xc4dd, 0xc4de, 0xc4df, 0xc4e0, 0xc4e1, 0xc4e2, 0xc4e3, 0xc4e4, 0xc4e5, 0xc4e6,
  0xc4e7, 0xc4e8, 0xc4e9, 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, 0xc4f0,
  0xc4f1, 0xc4f2, 0xc4f3, 0xc4f4, 0xc4f5, 0xc4f6, 0xc4f7, 0xc4f8, 0xc4f9, 0xc4fa,
  0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6,
  0xc5a7, 0xc5a8, 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, 0xc5ae, 0xc5af, 0xc5b0,
  0xc5b1, 0xc5b2, 0xc5b3, 0xc5b4, 0xc5b5, 0xc5b6, 0xc5b7, 0xc5b8, 0xc5b9, 0xc5ba,
  0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5bf, 0xc5c0, 0xc5c1, 0xc5c2, 0xc5c3, 0xc5c4,
  0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cb, 0xc5cc, 0xc5cd, 0xc5ce,
  0xc5cf, 0xc5d0, 0xc5d1, 0xc5d2, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6, 0xc5d7, 0xc5d8,
  0xc5d9, 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5de, 0xc5df, 0xc5e0, 0xc5e1, 0xc5e2,
  0xc5e3, 0xc5e4, 0xc5e5, 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ec,
  0xc5ed, 0xc5ee, 0xc5ef, 0xc5f0, 0xc5f1, 0xc5f2, 0xc5f3, 0xc5f4, 0xc5f5, 0xc5f6,
  0xc5f7, 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc5fc, 0xc5fd, 0xc5fe, 0xc6a1, 0xc6a2,
  0xc6a3, 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab, 0xc6ac,
  0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3, 0xc6b4, 0xc6b5, 0xc6b6,
  0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0,
  0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca,
  0xc6cb, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3, 0xc6d4,
  0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6dc, 0xc6dd, 0xc6de,
  0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8,
  0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2,
  0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc,
  0xc6fd, 0xc6fe, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8,
  0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2,
  0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc,
  0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6,
  0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce, 0xc7cf, 0xc7d0,
  0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da,
  0xc7db, 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4,
  0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee,
  0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8,
  0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc8a1, 0xc8a2, 0xc8a3, 0xc8a4,
  0xc8a5, 0xc8a6, 0xc8a7, 0xc8a8, 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae,
  0xc8af, 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8,
  0xc8b9, 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1, 0xc8c2,
  0xc8c3, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9, 0xc8ca, 0xc8cb, 0xc8cc,
  0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d2, 0xc8d3, 0xc8d4, 0xc8d5, 0xc8d6,
  0xc8d7, 0xc8d8, 0xc8d9, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xc8e0,
  0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea,
  0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1, 0xc8f2, 0xc8f3, 0xc8f4,
  0xc8f5, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc8fe,
  0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8, 0xc9a9, 0xc9aa,
  0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0, 0xc9b1, 0xc9b2, 0xc9b3, 0xc9b4,
  0xc9b5, 0xc9b6, 0xc9b7, 0xc9b8, 0xc9b9, 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be,
  0xc9bf, 0xc9c0, 0xc9c1, 0xc9c2, 0xc9c3, 0xc9c4, 0xc9c5, 0xc9c6, 0xc9c7, 0xc9c8,
  0xc9c9, 0xc9ca, 0xc9cb, 0xc9cc, 0xc9cd, 0xc9ce, 0xc9cf, 0xc9d0, 0xc9d1, 0xc9d2,
  0xc9d3, 0xc9d4, 0xc9d5, 0xc9d6, 0xc9d7, 0xc9d8, 0xc9d9, 0xc9da, 0xc9db, 0xc9dc,
  0xc9dd, 0xc9de, 0xc9df, 0xc9e0, 0xc9e1, 0xc9e2, 0xc9e3, 0xc9e4, 0xc9e5, 0xc9e6,
  0xc9e7, 0xc9e8, 0xc9e9, 0xc9ea, 0xc9eb, 0xc9ec, 0xc9ed, 0xc9ee, 0xc9ef, 0xc9f0,
  0xc9f1, 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0xc9f8, 0xc9f9, 0xc9fa,
  0xc9fb, 0xc9fc, 0xc9fd, 0xc9fe, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6,
  0xcaa7, 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae, 0xcaaf, 0xcab0,
  0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, 0xcab8, 0xcab9, 0xcaba,
  0xcabb, 0xcabc, 0xcabd, 0xcabe, 0xcabf, 0xcac0, 0xcac1, 0xcac2, 0xcac3, 0xcac4,
  0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcacc, 0xcacd, 0xcace,
  0xcacf, 0xcad0, 0xcad1, 0xcad2, 0xcad3, 0xcad4, 0xcad5, 0xcad6, 0xcad7, 0xcad8,
  0xcad9, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade, 0xcadf, 0xcae0, 0xcae1, 0xcae2,
  0xcae3, 0xcae4, 0xcae5, 0xcae6, 0xcae7, 0xcae8, 0xcae9, 0xcaea, 0xcaeb, 0xcaec,
  0xcaed, 0xcaee, 0xcaef, 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0xcaf4, 0xcaf5, 0xcaf6,
  0xcaf7, 0xcaf8, 0xcaf9, 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcba1, 0xcba2,
  0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, 0xcba9, 0xcbaa, 0xcbab, 0xcbac,
  0xcbad, 0xcbae, 0xcbaf, 0xcbb0, 0xcbb1, 0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6,
  0xcbb7, 0xcbb8, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcbbe, 0xcbbf, 0xcbc0,
  0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6, 0xcbc7, 0xcbc8, 0xcbc9, 0xcbca,
  0xcbcb, 0xcbcc, 0xcbcd, 0xcbce, 0xcbcf, 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0xcbd4,
  0xcbd5, 0xcbd6, 0xcbd7, 0xcbd8, 0xcbd9, 0xcbda, 0xcbdb, 0xcbdc, 0xcbdd, 0xcbde,
  0xcbdf, 0xcbe0, 0xcbe1, 0xcbe2, 0xcbe3, 0xcbe4, 0xcbe5, 0xcbe6, 0xcbe7, 0xcbe8,
  0xcbe9, 0xcbea, 0xcbeb, 0xcbec, 0xcbed, 0xcbee, 0xcbef, 0xcbf0, 0xcbf1, 0xcbf2,
  0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, 0xcbf7, 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc,
  0xcbfd, 0xcbfe, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6, 0xcca7, 0xcca8,
  0xcca9, 0xccaa, 0xccab, 0xccac, 0xccad, 0xccae, 0xccaf, 0xccb0, 0xccb1, 0xccb2,
  0xccb3, 0xccb4, 0xccb5, 0xccb6, 0xccb7, 0xccb8, 0xccb9, 0xccba, 0xccbb, 0xccbc,
  0xccbd, 0xccbe, 0xccbf, 0xccc0, 0xccc1, 0xccc2, 0xccc3, 0xccc4, 0xccc5, 0xccc6,
  0xccc7, 0xccc8, 0xccc9, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0xccd0,
  0xccd1, 0xccd2, 0xccd3, 0xccd4, 0xccd5, 0xccd6, 0xccd7, 0xccd8, 0xccd9, 0xccda,
  0xccdb, 0xccdc, 0xccdd, 0xccde, 0xccdf, 0xcce0, 0xcce1, 0xcce2, 0xcce3, 0xcce4,
  0xcce5, 0xcce6, 0xcce7, 0xcce8, 0xcce9, 0xccea, 0xcceb, 0xccec, 0xcced, 0xccee,
  0xccef, 0xccf0, 0xccf1, 0xccf2, 0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7, 0xccf8,
  0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd, 0xccfe, 0xcda1, 0xcda2, 0xcda3, 0xcda4,
  0xcda5, 0xcda6, 0xcda7, 0xcda8, 0xcda9, 0xcdaa, 0xcdab, 0xcdac, 0xcdad, 0xcdae,
  0xcdaf, 0xcdb0, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6, 0xcdb7, 0xcdb8,
  0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd, 0xcdbe, 0xcdbf, 0xcdc0, 0xcdc1, 0xcdc2,
  0xcdc3, 0xcdc4, 0xcdc5, 0xcdc6, 0xcdc7, 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0xcdcc,
  0xcdcd, 0xcdce, 0xcdcf, 0xcdd0, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6,
  0xcdd7, 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xcddd, 0xcdde, 0xcddf, 0xcde0,
  0xcde1, 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, 0xcde8, 0xcde9, 0xcdea,
  0xcdeb, 0xcdec, 0xcded, 0xcdee, 0xcdef, 0xcdf0, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4,
  0xcdf5, 0xcdf6, 0xcdf7, 0xcdf8, 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd, 0xcdfe,
  0xcea1, 0xcea2, 0xcea3, 0xcea4, 0xcea5, 0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa,
  0xceab, 0xceac, 0xcead, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb2, 0xceb3, 0xceb4,
  0xceb5, 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd, 0xcebe,
  0xcebf, 0xcec0, 0xcec1, 0xcec2, 0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, 0xcec8,
  0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, 0xced0, 0xced1, 0xced2,
  0xced3, 0xced4, 0xced5, 0xced6, 0xced7, 0xced8, 0xced9, 0xceda, 0xcedb, 0xcedc,
  0xcedd, 0xcede, 0xcedf, 0xcee0, 0xcee1, 0xcee2, 0xcee3, 0xcee4, 0xcee5, 0xcee6,
  0xcee7, 0xcee8, 0xcee9, 0xceea, 0xceeb, 0xceec, 0xceed, 0xceee, 0xceef, 0xcef0,
  0xcef1, 0xcef2, 0xcef3, 0xcef4, 0xcef5, 0xcef6, 0xcef7, 0xcef8, 0xcef9, 0xcefa,
  0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xcfa1, 0xcfa2, 0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6,
  0xcfa7, 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, 0xcfaf, 0xcfb0,
  0xcfb1, 0xcfb2, 0xcfb3, 0xcfb4, 0xcfb5, 0xcfb6, 0xcfb7, 0xcfb8, 0xcfb9, 0xcfba,
  0xcfbb, 0xcfbc, 0xcfbd, 0xcfbe, 0xcfbf, 0xcfc0, 0xcfc1, 0xcfc2, 0xcfc3, 0xcfc4,
  0xcfc5, 0xcfc6, 0xcfc7, 0xcfc8, 0xcfc9, 0xcfca, 0xcfcb, 0xcfcc, 0xcfcd, 0xcfce,
  0xcfcf, 0xcfd0, 0xcfd1, 0xcfd2, 0xcfd3, 0xcfd4, 0xcfd5, 0xcfd6, 0xcfd7, 0xcfd8,
  0xcfd9, 0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, 0xcfe0, 0xcfe1, 0xcfe2,
  0xcfe3, 0xcfe4, 0xcfe5, 0xcfe6, 0xcfe7, 0xcfe8, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec,
  0xcfed, 0xcfee, 0xcfef, 0xcff0, 0xcff1, 0xcff2, 0xcff3, 0xcff4, 0xcff5, 0xcff6,
  0xcff7, 0xcff8, 0xcff9, 0xcffa, 0xcffb, 0xcffc, 0xcffd, 0xcffe, 0xd0a1, 0xd0a2,
  0xd0a3, 0xd0a4, 0xd0a5, 0xd0a6, 0xd0a7, 0xd0a8, 0xd0a9, 0xd0aa, 0xd0ab, 0xd0ac,
  0xd0ad, 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b2, 0xd0b3, 0xd0b4, 0xd0b5, 0xd0b6,
  0xd0b7, 0xd0b8, 0xd0b9, 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be, 0xd0bf, 0xd0c0,
  0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4, 0xd0c5, 0xd0c6, 0xd0c7, 0xd0c8, 0xd0c9, 0xd0ca,
  0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, 0xd0cf, 0xd0d0, 0xd0d1, 0xd0d2, 0xd0d3, 0xd0d4,
  0xd0d5, 0xd0d6, 0xd0d7, 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0dc, 0xd0dd, 0xd0de,
  0xd0df, 0xd0e0, 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8,
  0xd0e9, 0xd0ea, 0xd0eb, 0xd0ec, 0xd0ed, 0xd0ee, 0xd0ef, 0xd0f0, 0xd0f1, 0xd0f2,
  0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0xd0f8, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc,
  0xd0fd, 0xd0fe, 0xd1a1, 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6, 0xd1a7, 0xd1a8,
  0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, 0xd1b0, 0xd1b1, 0xd1b2,
  0xd1b3, 0xd1b4, 0xd1b5, 0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, 0xd1ba, 0xd1bb, 0xd1bc,
  0xd1bd, 0xd1be, 0xd1bf, 0xd1c0, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6,
  0xd1c7, 0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0,
  0xd1d1, 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6, 0xd1d7, 0xd1d8, 0xd1d9, 0xd1da,
  0xd1db, 0xd1dc, 0xd1dd, 0xd1de, 0xd1df, 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4,
  0xd1e5, 0xd1e6, 0xd1e7, 0xd1e8, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee,
  0xd1ef, 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7, 0xd1f8,
  0xd1f9, 0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd2a1, 0xd2a2, 0xd2a3, 0xd2a4,
  0xd2a5, 0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ac, 0xd2ad, 0xd2ae,
  0xd2af, 0xd2b0, 0xd2b1, 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7, 0xd2b8,
  0xd2b9, 0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2be, 0xd2bf, 0xd2c0, 0xd2c1, 0xd2c2,
  0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6, 0xd2c7, 0xd2c8, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc,
  0xd2cd, 0xd2ce, 0xd2cf, 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0xd2d4, 0xd2d5, 0xd2d6,
  0xd2d7, 0xd2d8, 0xd2d9, 0xd2da, 0xd2db, 0xd2dc, 0xd2dd, 0xd2de, 0xd2df, 0xd2e0,
  0xd2e1, 0xd2e2, 0xd2e3, 0xd2e4, 0xd2e5, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9, 0xd2ea,
  0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0xd2f0, 0xd2f1, 0xd2f2, 0xd2f3, 0xd2f4,
  0xd2f5, 0xd2f6, 0xd2f7, 0xd2f8, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe,
  0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6, 0xd3a7, 0xd3a8, 0xd3a9, 0xd3aa,
  0xd3ab, 0xd3ac, 0xd3ad, 0xd3ae, 0xd3af, 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0xd3b4,
  0xd3b5, 0xd3b6, 0xd3b7, 0xd3b8, 0xd3b9, 0xd3ba, 0xd3bb, 0xd3bc, 0xd3bd, 0xd3be,
  0xd3bf, 0xd3c0, 0xd3c1, 0xd3c2, 0xd3c3, 0xd3c4, 0xd3c5, 0xd3c6, 0xd3c7, 0xd3c8,
  0xd3c9, 0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd, 0xd3ce, 0xd3cf, 0xd3d0, 0xd3d1, 0xd3d2,
  0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6, 0xd3d7, 0xd3d8, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc,
  0xd3dd, 0xd3de, 0xd3df, 0xd3e0, 0xd3e1, 0xd3e2, 0xd3e3, 0xd3e4, 0xd3e5, 0xd3e6,
  0xd3e7, 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0xd3ec, 0xd3ed, 0xd3ee, 0xd3ef, 0xd3f0,
  0xd3f1, 0xd3f2, 0xd3f3, 0xd3f4, 0xd3f5, 0xd3f6, 0xd3f7, 0xd3f8, 0xd3f9, 0xd3fa,
  0xd3fb, 0xd3fc, 0xd3fd, 0xd3fe, 0xd4a1, 0xd4a2, 0xd4a3, 0xd4a4, 0xd4a5, 0xd4a6,
  0xd4a7, 0xd4a8, 0xd4a9, 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af, 0xd4b0,
  0xd4b1, 0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6, 0xd4b7, 0xd4b8, 0xd4b9, 0xd4ba,
  0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, 0xd4bf, 0xd4c0, 0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4,
  0xd4c5, 0xd4c6, 0xd4c7, 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0xd4cc, 0xd4cd, 0xd4ce,
  0xd4cf, 0xd4d0, 0xd4d1, 0xd4d2, 0xd4d3, 0xd4d4, 0xd4d5, 0xd4d6, 0xd4d7, 0xd4d8,
  0xd4d9, 0xd4da, 0xd4db, 0xd4dc, 0xd4dd, 0xd4de, 0xd4df, 0xd4e0, 0xd4e1, 0xd4e2,
  0xd4e3, 0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7, 0xd4e8, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ec,
  0xd4ed, 0xd4ee, 0xd4ef, 0xd4f0, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5, 0xd4f6,
  0xd4f7, 0xd4f8, 0xd4f9, 0xd4fa, 0xd4fb, 0xd4fc, 0xd4fd, 0xd4fe, 0xd5a1, 0xd5a2,
  0xd5a3, 0xd5a4, 0xd5a5, 0xd5a6, 0xd5a7, 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0xd5ac,
  0xd5ad, 0xd5ae, 0xd5af, 0xd5b0, 0xd5b1, 0xd5b2, 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6,
  0xd5b7, 0xd5b8, 0xd5b9, 0xd5ba, 0xd5bb, 0xd5bc, 0xd5bd, 0xd5be, 0xd5bf, 0xd5c0,
  0xd5c1, 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, 0xd5c8, 0xd5c9, 0xd5ca,
  0xd5cb, 0xd5cc, 0xd5cd, 0xd5ce, 0xd5cf, 0xd5d0, 0xd5d1, 0xd5d2, 0xd5d3, 0xd5d4,
  0xd5d5, 0xd5d6, 0xd5d7, 0xd5d8, 0xd5d9, 0xd5da, 0xd5db, 0xd5dc, 0xd5dd, 0xd5de,
  0xd5df, 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0xd5e4, 0xd5e5, 0xd5e6, 0xd5e7, 0xd5e8,
  0xd5e9, 0xd5ea, 0xd5eb, 0xd5ec, 0xd5ed, 0xd5ee, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f2,
  0xd5f3, 0xd5f4, 0xd5f5, 0xd5f6, 0xd5f7, 0xd5f8, 0xd5f9, 0xd5fa, 0xd5fb, 0xd5fc,
  0xd5fd, 0xd5fe, 0xd6a1, 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, 0xd6a8,
  0xd6a9, 0xd6aa, 0xd6ab, 0xd6ac, 0xd6ad, 0xd6ae, 0xd6af, 0xd6b0, 0xd6b1, 0xd6b2,
  0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6, 0xd6b7, 0xd6b8, 0xd6b9, 0xd6ba, 0xd6bb, 0xd6bc,
  0xd6bd, 0xd6be, 0xd6bf, 0xd6c0, 0xd6c1, 0xd6c2, 0xd6c3, 0xd6c4, 0xd6c5, 0xd6c6,
  0xd6c7, 0xd6c8, 0xd6c9, 0xd6ca, 0xd6cb, 0xd6cc, 0xd6cd, 0xd6ce, 0xd6cf, 0xd6d0,
  0xd6d1, 0xd6d2, 0xd6d3, 0xd6d4, 0xd6d5, 0xd6d6, 0xd6d7, 0xd6d8, 0xd6d9, 0xd6da,
  0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df, 0xd6e0, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e4,
  0xd6e5, 0xd6e6, 0xd6e7, 0xd6e8, 0xd6e9, 0xd6ea, 0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee,
  0xd6ef, 0xd6f0, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f5, 0xd6f6, 0xd6f7, 0xd6f8,
  0xd6f9, 0xd6fa, 0xd6fb, 0xd6fc, 0xd6fd, 0xd6fe, 0xd7a1, 0xd7a2, 0xd7a3, 0xd7a4,
  0xd7a5, 0xd7a6, 0xd7a7, 0xd7a8, 0xd7a9, 0xd7aa, 0xd7ab, 0xd7ac, 0xd7ad, 0xd7ae,
  0xd7af, 0xd7b0, 0xd7b1, 0xd7b2, 0xd7b3, 0xd7b4, 0xd7b5, 0xd7b6, 0xd7b7, 0xd7b8,
  0xd7b9, 0xd7ba, 0xd7bb, 0xd7bc, 0xd7bd, 0xd7be, 0xd7bf, 0xd7c0, 0xd7c1, 0xd7c2,
  0xd7c3, 0xd7c4, 0xd7c5, 0xd7c6, 0xd7c7, 0xd7c8, 0xd7c9, 0xd7ca, 0xd7cb, 0xd7cc,
  0xd7cd, 0xd7ce, 0xd7cf, 0xd7d0, 0xd7d1, 0xd7d2, 0xd7d3, 0xd7d4, 0xd7d5, 0xd7d6,
  0xd7d7, 0xd7d8, 0xd7d9, 0xd7da, 0xd7db, 0xd7dc, 0xd7dd, 0xd7de, 0xd7df, 0xd7e0,
  0xd7e1, 0xd7e2, 0xd7e3, 0xd7e4, 0xd7e5, 0xd7e6, 0xd7e7, 0xd7e8, 0xd7e9, 0xd7ea,
  0xd7eb, 0xd7ec, 0xd7ed, 0xd7ee, 0xd7ef, 0xd7f0, 0xd7f1, 0xd7f2, 0xd7f3, 0xd7f4,
  0xd7f5, 0xd7f6, 0xd7f7, 0xd7f8, 0xd7f9, 0xd8a1, 0xd8a2, 0xd8a3, 0xd8a4, 0xd8a5,
  0xd8a6, 0xd8a7, 0xd8a8, 0xd8a9, 0xd8aa, 0xd8ab, 0xd8ac, 0xd8ad, 0xd8ae, 0xd8af,
  0xd8b0, 0xd8b1, 0xd8b2, 0xd8b3, 0xd8b4, 0xd8b5, 0xd8b6, 0xd8b7, 0xd8b8, 0xd8b9,
  0xd8ba, 0xd8bb, 0xd8bc, 0xd8bd, 0xd8be, 0xd8bf, 0xd8c0, 0xd8c1, 0xd8c2, 0xd8c3,
  0xd8c4, 0xd8c5, 0xd8c6, 0xd8c7, 0xd8c8, 0xd8c9, 0xd8ca, 0xd8cb, 0xd8cc, 0xd8cd,
  0xd8ce, 0xd8cf, 0xd8d0, 0xd8d1, 0xd8d2, 0xd8d3, 0xd8d4, 0xd8d5, 0xd8d6, 0xd8d7,
  0xd8d8, 0xd8d9, 0xd8da, 0xd8db, 0xd8dc, 0xd8dd, 0xd8de, 0xd8df, 0xd8e0, 0xd8e1,
  0xd8e2, 0xd8e3, 0xd8e4, 0xd8e5, 0xd8e6, 0xd8e7, 0xd8e8, 0xd8e9, 0xd8ea, 0xd8eb,
  0xd8ec, 0xd8ed, 0xd8ee, 0xd8ef, 0xd8f0, 0xd8f1, 0xd8f2, 0xd8f3, 0xd8f4, 0xd8f5,
  0xd8f6, 0xd8f7, 0xd8f8, 0xd8f9, 0xd8fa, 0xd8fb, 0xd8fc, 0xd8fd, 0xd8fe, 0xd9a1,
  0xd9a2, 0xd9a3, 0xd9a4, 0xd9a5, 0xd9a6, 0xd9a7, 0xd9a8, 0xd9a9, 0xd9aa, 0xd9ab,
  0xd9ac, 0xd9ad, 0xd9ae, 0xd9af, 0xd9b0, 0xd9b1, 0xd9b2, 0xd9b3, 0xd9b4, 0xd9b5,
  0xd9b6, 0xd9b7, 0xd9b8, 0xd9b9, 0xd9ba, 0xd9bb, 0xd9bc, 0xd9bd, 0xd9be, 0xd9bf,
  0xd9c0, 0xd9c1, 0xd9c2, 0xd9c3, 0xd9c4, 0xd9c5, 0xd9c6, 0xd9c7, 0xd9c8, 0xd9c9,
  0xd9ca, 0xd9cb, 0xd9cc, 0xd9cd, 0xd9ce, 0xd9cf, 0xd9d0, 0xd9d1, 0xd9d2, 0xd9d3,
  0xd9d4, 0xd9d5, 0xd9d6, 0xd9d7, 0xd9d8, 0xd9d9, 0xd9da, 0xd9db, 0xd9dc, 0xd9dd,
  0xd9de, 0xd9df, 0xd9e0, 0xd9e1, 0xd9e2, 0xd9e3, 0xd9e4, 0xd9e5, 0xd9e6, 0xd9e7,
  0xd9e8, 0xd9e9, 0xd9ea, 0xd9eb, 0xd9ec, 0xd9ed, 0xd9ee, 0xd9ef, 0xd9f0, 0xd9f1,
  0xd9f2, 0xd9f3, 0xd9f4, 0xd9f5, 0xd9f6, 0xd9f7, 0xd9f8, 0xd9f9, 0xd9fa, 0xd9fb,
  0xd9fc, 0xd9fd, 0xd9fe, 0xdaa1, 0xdaa2, 0xdaa3, 0xdaa4, 0xdaa5, 0xdaa6, 0xdaa7,
  0xdaa8, 0xdaa9, 0xdaaa, 0xdaab, 0xdaac, 0xdaad, 0xdaae, 0xdaaf, 0xdab0, 0xdab1,
  0xdab2, 0xdab3, 0xdab4, 0xdab5, 0xdab6, 0xdab7, 0xdab8, 0xdab9, 0xdaba, 0xdabb,
  0xdabc, 0xdabd, 0xdabe, 0xdabf, 0xdac0, 0xdac1, 0xdac2, 0xdac3, 0xdac4, 0xdac5,
  0xdac6, 0xdac7, 0xdac8, 0xdac9, 0xdaca, 0xdacb, 0xdacc, 0xdacd, 0xdace, 0xdacf,
  0xdad0, 0xdad1, 0xdad2, 0xdad3, 0xdad4, 0xdad5, 0xdad6, 0xdad7, 0xdad8, 0xdad9,
  0xdada, 0xdadb, 0xdadc, 0xdadd, 0xdade, 0xdadf, 0xdae0, 0xdae1, 0xdae2, 0xdae3,
  0xdae4, 0xdae5, 0xdae6, 0xdae7, 0xdae8, 0xdae9, 0xdaea, 0xdaeb, 0xdaec, 0xdaed,
  0xdaee, 0xdaef, 0xdaf0, 0xdaf1, 0xdaf2, 0xdaf3, 0xdaf4, 0xdaf5, 0xdaf6, 0xdaf7,
  0xdaf8, 0xdaf9, 0xdafa, 0xdafb, 0xdafc, 0xdafd, 0xdafe, 0xdba1, 0xdba2, 0xdba3,
  0xdba4, 0xdba5, 0xdba6, 0xdba7, 0xdba8, 0xdba9, 0xdbaa, 0xdbab, 0xdbac, 0xdbad,
  0xdbae, 0xdbaf, 0xdbb0, 0xdbb1, 0xdbb2, 0xdbb3, 0xdbb4, 0xdbb5, 0xdbb6, 0xdbb7,
  0xdbb8, 0xdbb9, 0xdbba, 0xdbbb, 0xdbbc, 0xdbbd, 0xdbbe, 0xdbbf, 0xdbc0, 0xdbc1,
  0xdbc2, 0xdbc3, 0xdbc4, 0xdbc5, 0xdbc6, 0xdbc7, 0xdbc8, 0xdbc9, 0xdbca, 0xdbcb,
  0xdbcc, 0xdbcd, 0xdbce, 0xdbcf, 0xdbd0, 0xdbd1, 0xdbd2, 0xdbd3, 0xdbd4, 0xdbd5,
  0xdbd6, 0xdbd7, 0xdbd8, 0xdbd9, 0xdbda, 0xdbdb, 0xdbdc, 0xdbdd, 0xdbde, 0xdbdf,
  0xdbe0, 0xdbe1, 0xdbe2, 0xdbe3, 0xdbe4, 0xdbe5, 0xdbe6, 0xdbe7, 0xdbe8, 0xdbe9,
  0xdbea, 0xdbeb, 0xdbec, 0xdbed, 0xdbee, 0xdbef, 0xdbf0, 0xdbf1, 0xdbf2, 0xdbf3,
  0xdbf4, 0xdbf5, 0xdbf6, 0xdbf7, 0xdbf8, 0xdbf9, 0xdbfa, 0xdbfb, 0xdbfc, 0xdbfd,
  0xdbfe, 0xdca1, 0xdca2, 0xdca3, 0xdca4, 0xdca5, 0xdca6, 0xdca7, 0xdca8, 0xdca9,
  0xdcaa, 0xdcab, 0xdcac, 0xdcad, 0xdcae, 0xdcaf, 0xdcb0, 0xdcb1, 0xdcb2, 0xdcb3,
  0xdcb4, 0xdcb5, 0xdcb6, 0xdcb7, 0xdcb8, 0xdcb9, 0xdcba, 0xdcbb, 0xdcbc, 0xdcbd,
  0xdcbe, 0xdcbf, 0xdcc0, 0xdcc1, 0xdcc2, 0xdcc3, 0xdcc4, 0xdcc5, 0xdcc6, 0xdcc7,
  0xdcc8, 0xdcc9, 0xdcca, 0xdccb, 0xdccc, 0xdccd, 0xdcce, 0xdccf, 0xdcd0, 0xdcd1,
  0xdcd2, 0xdcd3, 0xdcd4, 0xdcd5, 0xdcd6, 0xdcd7, 0xdcd8, 0xdcd9, 0xdcda, 0xdcdb,
  0xdcdc, 0xdcdd, 0xdcde, 0xdcdf, 0xdce0, 0xdce1, 0xdce2, 0xdce3, 0xdce4, 0xdce5,
  0xdce6, 0xdce7, 0xdce8, 0xdce9, 0xdcea, 0xdceb, 0xdcec, 0xdced, 0xdcee, 0xdcef,
  0xdcf0, 0xdcf1, 0xdcf2, 0xdcf3, 0xdcf4, 0xdcf5, 0xdcf6, 0xdcf7, 0xdcf8, 0xdcf9,
  0xdcfa, 0xdcfb, 0xdcfc, 0xdcfd, 0xdcfe, 0xdda1, 0xdda2, 0xdda3, 0xdda4, 0xdda5,
  0xdda6, 0xdda7, 0xdda8, 0xdda9, 0xddaa, 0xddab, 0xddac, 0xddad, 0xddae, 0xddaf,
  0xddb0, 0xddb1, 0xddb2, 0xddb3, 0xddb4, 0xddb5, 0xddb6, 0xddb7, 0xddb8, 0xddb9,
  0xddba, 0xddbb, 0xddbc, 0xddbd, 0xddbe, 0xddbf, 0xddc0, 0xddc1, 0xddc2, 0xddc3,
  0xddc4, 0xddc5, 0xddc6, 0xddc7, 0xddc8, 0xddc9, 0xddca, 0xddcb, 0xddcc, 0xddcd,
  0xddce, 0xddcf, 0xddd0, 0xddd1, 0xddd2, 0xddd3, 0xddd4, 0xddd5, 0xddd6, 0xddd7,
  0xddd8, 0xddd9, 0xddda, 0xdddb, 0xdddc, 0xdddd, 0xddde, 0xdddf, 0xdde0, 0xdde1,
  0xdde2, 0xdde3, 0xdde4, 0xdde5, 0xdde6, 0xdde7, 0xdde8, 0xdde9, 0xddea, 0xddeb,
  0xddec, 0xdded, 0xddee, 0xddef, 0xddf0, 0xddf1, 0xddf2, 0xddf3, 0xddf4, 0xddf5,
  0xddf6, 0xddf7, 0xddf8, 0xddf9, 0xddfa, 0xddfb, 0xddfc, 0xddfd, 0xddfe, 0xdea1,
  0xdea2, 0xdea3, 0xdea4, 0xdea5, 0xdea6, 0xdea7, 0xdea8, 0xdea9, 0xdeaa, 0xdeab,
  0xdeac, 0xdead, 0xdeae, 0xdeaf, 0xdeb0, 0xdeb1, 0xdeb2, 0xdeb3, 0xdeb4, 0xdeb5,
  0xdeb6, 0xdeb7, 0xdeb8, 0xdeb9, 0xdeba, 0xdebb, 0xdebc, 0xdebd, 0xdebe, 0xdebf,
  0xdec0, 0xdec1, 0xdec2, 0xdec3, 0xdec4, 0xdec5, 0xdec6, 0xdec7, 0xdec8, 0xdec9,
  0xdeca, 0xdecb, 0xdecc, 0xdecd, 0xdece, 0xdecf, 0xded0, 0xded1, 0xded2, 0xded3,
  0xded4, 0xded5, 0xded6, 0xded7, 0xded8, 0xded9, 0xdeda, 0xdedb, 0xdedc, 0xdedd,
  0xdede, 0xdedf, 0xdee0, 0xdee1, 0xdee2, 0xdee3, 0xdee4, 0xdee5, 0xdee6, 0xdee7,
  0xdee8, 0xdee9, 0xdeea, 0xdeeb, 0xdeec, 0xdeed, 0xdeee, 0xdeef, 0xdef0, 0xdef1,
  0xdef2, 0xdef3, 0xdef4, 0xdef5, 0xdef6, 0xdef7, 0xdef8, 0xdef9, 0xdefa, 0xdefb,
  0xdefc, 0xdefd, 0xdefe, 0xdfa1, 0xdfa2, 0xdfa3, 0xdfa4, 0xdfa5, 0xdfa6, 0xdfa7,
  0xdfa8, 0xdfa9, 0xdfaa, 0xdfab, 0xdfac, 0xdfad, 0xdfae, 0xdfaf, 0xdfb0, 0xdfb1,
  0xdfb2, 0xdfb3, 0xdfb4, 0xdfb5, 0xdfb6, 0xdfb7, 0xdfb8, 0xdfb9, 0xdfba, 0xdfbb,
  0xdfbc, 0xdfbd, 0xdfbe, 0xdfbf, 0xdfc0, 0xdfc1, 0xdfc2, 0xdfc3, 0xdfc4, 0xdfc5,
  0xdfc6, 0xdfc7, 0xdfc8, 0xdfc9, 0xdfca, 0xdfcb, 0xdfcc, 0xdfcd, 0xdfce, 0xdfcf,
  0xdfd0, 0xdfd1, 0xdfd2, 0xdfd3, 0xdfd4, 0xdfd5, 0xdfd6, 0xdfd7, 0xdfd8, 0xdfd9,
  0xdfda, 0xdfdb, 0xdfdc, 0xdfdd, 0xdfde, 0xdfdf, 0xdfe0, 0xdfe1, 0xdfe2, 0xdfe3,
  0xdfe4, 0xdfe5, 0xdfe6, 0xdfe7, 0xdfe8, 0xdfe9, 0xdfea, 0xdfeb, 0xdfec, 0xdfed,
  0xdfee, 0xdfef, 0xdff0, 0xdff1, 0xdff2, 0xdff3, 0xdff4, 0xdff5, 0xdff6, 0xdff7,
  0xdff8, 0xdff9, 0xdffa, 0xdffb, 0xdffc, 0xdffd, 0xdffe, 0xe0a1, 0xe0a2, 0xe0a3,
  0xe0a4, 0xe0a5, 0xe0a6, 0xe0a7, 0xe0a8, 0xe0a9, 0xe0aa, 0xe0ab, 0xe0ac, 0xe0ad,
  0xe0ae, 0xe0af, 0xe0b0, 0xe0b1, 0xe0b2, 0xe0b3, 0xe0b4, 0xe0b5, 0xe0b6, 0xe0b7,
  0xe0b8, 0xe0b9, 0xe0ba, 0xe0bb, 0xe0bc, 0xe0bd, 0xe0be, 0xe0bf, 0xe0c0, 0xe0c1,
  0xe0c2, 0xe0c3, 0xe0c4, 0xe0c5, 0xe0c6, 0xe0c7, 0xe0c8, 0xe0c9, 0xe0ca, 0xe0cb,
  0xe0cc, 0xe0cd, 0xe0ce, 0xe0cf, 0xe0d0, 0xe0d1, 0xe0d2, 0xe0d3, 0xe0d4, 0xe0d5,
  0xe0d6, 0xe0d7, 0xe0d8, 0xe0d9, 0xe0da, 0xe0db, 0xe0dc, 0xe0dd, 0xe0de, 0xe0df,
  0xe0e0, 0xe0e1, 0xe0e2, 0xe0e3, 0xe0e4, 0xe0e5, 0xe0e6, 0xe0e7, 0xe0e8, 0xe0e9,
  0xe0ea, 0xe0eb, 0xe0ec, 0xe0ed, 0xe0ee, 0xe0ef, 0xe0f0, 0xe0f1, 0xe0f2, 0xe0f3,
  0xe0f4, 0xe0f5, 0xe0f6, 0xe0f7, 0xe0f8, 0xe0f9, 0xe0fa, 0xe0fb, 0xe0fc, 0xe0fd,
  0xe0fe, 0xe1a1, 0xe1a2, 0xe1a3, 0xe1a4, 0xe1a5, 0xe1a6, 0xe1a7, 0xe1a8, 0xe1a9,
  0xe1aa, 0xe1ab, 0xe1ac, 0xe1ad, 0xe1ae, 0xe1af, 0xe1b0, 0xe1b1, 0xe1b2, 0xe1b3,
  0xe1b4, 0xe1b5, 0xe1b6, 0xe1b7, 0xe1b8, 0xe1b9, 0xe1ba, 0xe1bb, 0xe1bc, 0xe1bd,
  0xe1be, 0xe1bf, 0xe1c0, 0xe1c1, 0xe1c2, 0xe1c3, 0xe1c4, 0xe1c5, 0xe1c6, 0xe1c7,
  0xe1c8, 0xe1c9, 0xe1ca, 0xe1cb, 0xe1cc, 0xe1cd, 0xe1ce, 0xe1cf, 0xe1d0, 0xe1d1,
  0xe1d2, 0xe1d3, 0xe1d4, 0xe1d5, 0xe1d6, 0xe1d7, 0xe1d8, 0xe1d9, 0xe1da, 0xe1db,
  0xe1dc, 0xe1dd, 0xe1de, 0xe1df, 0xe1e0, 0xe1e1, 0xe1e2, 0xe1e3, 0xe1e4, 0xe1e5,
  0xe1e6, 0xe1e7, 0xe1e8, 0xe1e9, 0xe1ea, 0xe1eb, 0xe1ec, 0xe1ed, 0xe1ee, 0xe1ef,
  0xe1f0, 0xe1f1, 0xe1f2, 0xe1f3, 0xe1f4, 0xe1f5, 0xe1f6, 0xe1f7, 0xe1f8, 0xe1f9,
  0xe1fa, 0xe1fb, 0xe1fc, 0xe1fd, 0xe1fe, 0xe2a1, 0xe2a2, 0xe2a3, 0xe2a4, 0xe2a5,
  0xe2a6, 0xe2a7, 0xe2a8, 0xe2a9, 0xe2aa, 0xe2ab, 0xe2ac, 0xe2ad, 0xe2ae, 0xe2af,
  0xe2b0, 0xe2b1, 0xe2b2, 0xe2b3, 0xe2b4, 0xe2b5, 0xe2b6, 0xe2b7, 0xe2b8, 0xe2b9,
  0xe2ba, 0xe2bb, 0xe2bc, 0xe2bd, 0xe2be, 0xe2bf, 0xe2c0, 0xe2c1, 0xe2c2, 0xe2c3,
  0xe2c4, 0xe2c5, 0xe2c6, 0xe2c7, 0xe2c8, 0xe2c9, 0xe2ca, 0xe2cb, 0xe2cc, 0xe2cd,
  0xe2ce, 0xe2cf, 0xe2d0, 0xe2d1, 0xe2d2, 0xe2d3, 0xe2d4, 0xe2d5, 0xe2d6, 0xe2d7,
  0xe2d8, 0xe2d9, 0xe2da, 0xe2db, 0xe2dc, 0xe2dd, 0xe2de, 0xe2df, 0xe2e0, 0xe2e1,
  0xe2e2, 0xe2e3, 0xe2e4, 0xe2e5, 0xe2e6, 0xe2e7, 0xe2e8, 0xe2e9, 0xe2ea, 0xe2eb,
  0xe2ec, 0xe2ed, 0xe2ee, 0xe2ef, 0xe2f0, 0xe2f1, 0xe2f2, 0xe2f3, 0xe2f4, 0xe2f5,
  0xe2f6, 0xe2f7, 0xe2f8, 0xe2f9, 0xe2fa, 0xe2fb, 0xe2fc, 0xe2fd, 0xe2fe, 0xe3a1,
  0xe3a2, 0xe3a3, 0xe3a4, 0xe3a5, 0xe3a6, 0xe3a7, 0xe3a8, 0xe3a9, 0xe3aa, 0xe3ab,
  0xe3ac, 0xe3ad, 0xe3ae, 0xe3af, 0xe3b0, 0xe3b1, 0xe3b2, 0xe3b3, 0xe3b4, 0xe3b5,
  0xe3b6, 0xe3b7, 0xe3b8, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd, 0xe3be, 0xe3bf,
  0xe3c0, 0xe3c1, 0xe3c2, 0xe3c3, 0xe3c4, 0xe3c5, 0xe3c6, 0xe3c7, 0xe3c8, 0xe3c9,
  0xe3ca, 0xe3cb, 0xe3cc, 0xe3cd, 0xe3ce, 0xe3cf, 0xe3d0, 0xe3d1, 0xe3d2, 0xe3d3,
  0xe3d4, 0xe3d5, 0xe3d6, 0xe3d7, 0xe3d8, 0xe3d9, 0xe3da, 0xe3db, 0xe3dc, 0xe3dd,
  0xe3de, 0xe3df, 0xe3e0, 0xe3e1, 0xe3e2, 0xe3e3, 0xe3e4, 0xe3e5, 0xe3e6, 0xe3e7,
  0xe3e8, 0xe3e9, 0xe3ea, 0xe3eb, 0xe3ec, 0xe3ed, 0xe3ee, 0xe3ef, 0xe3f0, 0xe3f1,
  0xe3f2, 0xe3f3, 0xe3f4, 0xe3f5, 0xe3f6, 0xe3f7, 0xe3f8, 0xe3f9, 0xe3fa, 0xe3fb,
  0xe3fc, 0xe3fd, 0xe3fe, 0xe4a1, 0xe4a2, 0xe4a3, 0xe4a4, 0xe4a5, 0xe4a6, 0xe4a7,
  0xe4a8, 0xe4a9, 0xe4aa, 0xe4ab, 0xe4ac, 0xe4ad, 0xe4ae, 0xe4af, 0xe4b0, 0xe4b1,
  0xe4b2, 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, 0xe4b8, 0xe4b9, 0xe4ba, 0xe4bb,
  0xe4bc, 0xe4bd, 0xe4be, 0xe4bf, 0xe4c0, 0xe4c1, 0xe4c2, 0xe4c3, 0xe4c4, 0xe4c5,
  0xe4c6, 0xe4c7, 0xe4c8, 0xe4c9, 0xe4ca, 0xe4cb, 0xe4cc, 0xe4cd, 0xe4ce, 0xe4cf,
  0xe4d0, 0xe4d1, 0xe4d2, 0xe4d3, 0xe4d4, 0xe4d5, 0xe4d6, 0xe4d7, 0xe4d8, 0xe4d9,
  0xe4da, 0xe4db, 0xe4dc, 0xe4dd, 0xe4de, 0xe4df, 0xe4e0, 0xe4e1, 0xe4e2, 0xe4e3,
  0xe4e4, 0xe4e5, 0xe4e6, 0xe4e7, 0xe4e8, 0xe4e9, 0xe4ea, 0xe4eb, 0xe4ec, 0xe4ed,
  0xe4ee, 0xe4ef, 0xe4f0, 0xe4f1, 0xe4f2, 0xe4f3, 0xe4f4, 0xe4f5, 0xe4f6, 0xe4f7,
  0xe4f8, 0xe4f9, 0xe4fa, 0xe4fb, 0xe4fc, 0xe4fd, 0xe4fe, 0xe5a1, 0xe5a2, 0xe5a3,
  0xe5a4, 0xe5a5, 0xe5a6, 0xe5a7, 0xe5a8, 0xe5a9, 0xe5aa, 0xe5ab, 0xe5ac, 0xe5ad,
  0xe5ae, 0xe5af, 0xe5b0, 0xe5b1, 0xe5b2, 0xe5b3, 0xe5b4, 0xe5b5, 0xe5b6, 0xe5b7,
  0xe5b8, 0xe5b9, 0xe5ba, 0xe5bb, 0xe5bc, 0xe5bd, 0xe5be, 0xe5bf, 0xe5c0, 0xe5c1,
  0xe5c2, 0xe5c3, 0xe5c4, 0xe5c5, 0xe5c6, 0xe5c7, 0xe5c8, 0xe5c9, 0xe5ca, 0xe5cb,
  0xe5cc, 0xe5cd, 0xe5ce, 0xe5cf, 0xe5d0, 0xe5d1, 0xe5d2, 0xe5d3, 0xe5d4, 0xe5d5,
  0xe5d6, 0xe5d7, 0xe5d8, 0xe5d9, 0xe5da, 0xe5db, 0xe5dc, 0xe5dd, 0xe5de, 0xe5df,
  0xe5e0, 0xe5e1, 0xe5e2, 0xe5e3, 0xe5e4, 0xe5e5, 0xe5e6, 0xe5e7, 0xe5e8, 0xe5e9,
  0xe5ea, 0xe5eb, 0xe5ec, 0xe5ed, 0xe5ee, 0xe5ef, 0xe5f0, 0xe5f1, 0xe5f2, 0xe5f3,
  0xe5f4, 0xe5f5, 0xe5f6, 0xe5f7, 0xe5f8, 0xe5f9, 0xe5fa, 0xe5fb, 0xe5fc, 0xe5fd,
  0xe5fe, 0xe6a1, 0xe6a2, 0xe6a3, 0xe6a4, 0xe6a5, 0xe6a6, 0xe6a7, 0xe6a8, 0xe6a9,
  0xe6aa, 0xe6ab, 0xe6ac, 0xe6ad, 0xe6ae, 0xe6af, 0xe6b0, 0xe6b1, 0xe6b2, 0xe6b3,
  0xe6b4, 0xe6b5, 0xe6b6, 0xe6b7, 0xe6b8, 0xe6b9, 0xe6ba, 0xe6bb, 0xe6bc, 0xe6bd,
  0xe6be, 0xe6bf, 0xe6c0, 0xe6c1, 0xe6c2, 0xe6c3, 0xe6c4, 0xe6c5, 0xe6c6, 0xe6c7,
  0xe6c8, 0xe6c9, 0xe6ca, 0xe6cb, 0xe6cc, 0xe6cd, 0xe6ce, 0xe6cf, 0xe6d0, 0xe6d1,
  0xe6d2, 0xe6d3, 0xe6d4, 0xe6d5, 0xe6d6, 0xe6d7, 0xe6d8, 0xe6d9, 0xe6da, 0xe6db,
  0xe6dc, 0xe6dd, 0xe6de, 0xe6df, 0xe6e0, 0xe6e1, 0xe6e2, 0xe6e3, 0xe6e4, 0xe6e5,
  0xe6e6, 0xe6e7, 0xe6e8, 0xe6e9, 0xe6ea, 0xe6eb, 0xe6ec, 0xe6ed, 0xe6ee, 0xe6ef,
  0xe6f0, 0xe6f1, 0xe6f2, 0xe6f3, 0xe6f4, 0xe6f5, 0xe6f6, 0xe6f7, 0xe6f8, 0xe6f9,
  0xe6fa, 0xe6fb, 0xe6fc, 0xe6fd, 0xe6fe, 0xe7a1, 0xe7a2, 0xe7a3, 0xe7a4, 0xe7a5,
  0xe7a6, 0xe7a7, 0xe7a8, 0xe7a9, 0xe7aa, 0xe7ab, 0xe7ac, 0xe7ad, 0xe7ae, 0xe7af,
  0xe7b0, 0xe7b1, 0xe7b2, 0xe7b3, 0xe7b4, 0xe7b5, 0xe7b6, 0xe7b7, 0xe7b8, 0xe7b9,
  0xe7ba, 0xe7bb, 0xe7bc, 0xe7bd, 0xe7be, 0xe7bf, 0xe7c0, 0xe7c1, 0xe7c2, 0xe7c3,
  0xe7c4, 0xe7c5, 0xe7c6, 0xe7c7, 0xe7c8, 0xe7c9, 0xe7ca, 0xe7cb, 0xe7cc, 0xe7cd,
  0xe7ce, 0xe7cf, 0xe7d0, 0xe7d1, 0xe7d2, 0xe7d3, 0xe7d4, 0xe7d5, 0xe7d6, 0xe7d7,
  0xe7d8, 0xe7d9, 0xe7da, 0xe7db, 0xe7dc, 0xe7dd, 0xe7de, 0xe7df, 0xe7e0, 0xe7e1,
  0xe7e2, 0xe7e3, 0xe7e4, 0xe7e5, 0xe7e6, 0xe7e7, 0xe7e8, 0xe7e9, 0xe7ea, 0xe7eb,
  0xe7ec, 0xe7ed, 0xe7ee, 0xe7ef, 0xe7f0, 0xe7f1, 0xe7f2, 0xe7f3, 0xe7f4, 0xe7f5,
  0xe7f6, 0xe7f7, 0xe7f8, 0xe7f9, 0xe7fa, 0xe7fb, 0xe7fc, 0xe7fd, 0xe7fe, 0xe8a1,
  0xe8a2, 0xe8a3, 0xe8a4, 0xe8a5, 0xe8a6, 0xe8a7, 0xe8a8, 0xe8a9, 0xe8aa, 0xe8ab,
  0xe8ac, 0xe8ad, 0xe8ae, 0xe8af, 0xe8b0, 0xe8b1, 0xe8b2, 0xe8b3, 0xe8b4, 0xe8b5,
  0xe8b6, 0xe8b7, 0xe8b8, 0xe8b9, 0xe8ba, 0xe8bb, 0xe8bc, 0xe8bd, 0xe8be, 0xe8bf,
  0xe8c0, 0xe8c1, 0xe8c2, 0xe8c3, 0xe8c4, 0xe8c5, 0xe8c6, 0xe8c7, 0xe8c8, 0xe8c9,
  0xe8ca, 0xe8cb, 0xe8cc, 0xe8cd, 0xe8ce, 0xe8cf, 0xe8d0, 0xe8d1, 0xe8d2, 0xe8d3,
  0xe8d4, 0xe8d5, 0xe8d6, 0xe8d7, 0xe8d8, 0xe8d9, 0xe8da, 0xe8db, 0xe8dc, 0xe8dd,
  0xe8de, 0xe8df, 0xe8e0, 0xe8e1, 0xe8e2, 0xe8e3, 0xe8e4, 0xe8e5, 0xe8e6, 0xe8e7,
  0xe8e8, 0xe8e9, 0xe8ea, 0xe8eb, 0xe8ec, 0xe8ed, 0xe8ee, 0xe8ef, 0xe8f0, 0xe8f1,
  0xe8f2, 0xe8f3, 0xe8f4, 0xe8f5, 0xe8f6, 0xe8f7, 0xe8f8, 0xe8f9, 0xe8fa, 0xe8fb,
  0xe8fc, 0xe8fd, 0xe8fe, 0xe9a1, 0xe9a2, 0xe9a3, 0xe9a4, 0xe9a5, 0xe9a6, 0xe9a7,
  0xe9a8, 0xe9a9, 0xe9aa, 0xe9ab, 0xe9ac, 0xe9ad, 0xe9ae, 0xe9af, 0xe9b0, 0xe9b1,
  0xe9b2, 0xe9b3, 0xe9b4, 0xe9b5, 0xe9b6, 0xe9b7, 0xe9b8, 0xe9b9, 0xe9ba, 0xe9bb,
  0xe9bc, 0xe9bd, 0xe9be, 0xe9bf, 0xe9c0, 0xe9c1, 0xe9c2, 0xe9c3, 0xe9c4, 0xe9c5,
  0xe9c6, 0xe9c7, 0xe9c8, 0xe9c9, 0xe9ca, 0xe9cb, 0xe9cc, 0xe9cd, 0xe9ce, 0xe9cf,
  0xe9d0, 0xe9d1, 0xe9d2, 0xe9d3, 0xe9d4, 0xe9d5, 0xe9d6, 0xe9d7, 0xe9d8, 0xe9d9,
  0xe9da, 0xe9db, 0xe9dc, 0xe9dd, 0xe9de, 0xe9df, 0xe9e0, 0xe9e1, 0xe9e2, 0xe9e3,
  0xe9e4, 0xe9e5, 0xe9e6, 0xe9e7, 0xe9e8, 0xe9e9, 0xe9ea, 0xe9eb, 0xe9ec, 0xe9ed,
  0xe9ee, 0xe9ef, 0xe9f0, 0xe9f1, 0xe9f2, 0xe9f3, 0xe9f4, 0xe9f5, 0xe9f6, 0xe9f7,
  0xe9f8, 0xe9f9, 0xe9fa, 0xe9fb, 0xe9fc, 0xe9fd, 0xe9fe, 0xeaa1, 0xeaa2, 0xeaa3,
  0xeaa4, 0xeaa5, 0xeaa6, 0xeaa7, 0xeaa8, 0xeaa9, 0xeaaa, 0xeaab, 0xeaac, 0xeaad,
  0xeaae, 0xeaaf, 0xeab0, 0xeab1, 0xeab2, 0xeab3, 0xeab4, 0xeab5, 0xeab6, 0xeab7,
  0xeab8, 0xeab9, 0xeaba, 0xeabb, 0xeabc, 0xeabd, 0xeabe, 0xeabf, 0xeac0, 0xeac1,
  0xeac2, 0xeac3, 0xeac4, 0xeac5, 0xeac6, 0xeac7, 0xeac8, 0xeac9, 0xeaca, 0xeacb,
  0xeacc, 0xeacd, 0xeace, 0xeacf, 0xead0, 0xead1, 0xead2, 0xead3, 0xead4, 0xead5,
  0xead6, 0xead7, 0xead8, 0xead9, 0xeada, 0xeadb, 0xeadc, 0xeadd, 0xeade, 0xeadf,
  0xeae0, 0xeae1, 0xeae2, 0xeae3, 0xeae4, 0xeae5, 0xeae6, 0xeae7, 0xeae8, 0xeae9,
  0xeaea, 0xeaeb, 0xeaec, 0xeaed, 0xeaee, 0xeaef, 0xeaf0, 0xeaf1, 0xeaf2, 0xeaf3,
  0xeaf4, 0xeaf5, 0xeaf6, 0xeaf7, 0xeaf8, 0xeaf9, 0xeafa, 0xeafb, 0xeafc, 0xeafd,
  0xeafe, 0xeba1, 0xeba2, 0xeba3, 0xeba4, 0xeba5, 0xeba6, 0xeba7, 0xeba8, 0xeba9,
  0xebaa, 0xebab, 0xebac, 0xebad, 0xebae, 0xebaf, 0xebb0, 0xebb1, 0xebb2, 0xebb3,
  0xebb4, 0xebb5, 0xebb6, 0xebb7, 0xebb8, 0xebb9, 0xebba, 0xebbb, 0xebbc, 0xebbd,
  0xebbe, 0xebbf, 0xebc0, 0xebc1, 0xebc2, 0xebc3, 0xebc4, 0xebc5, 0xebc6, 0xebc7,
  0xebc8, 0xebc9, 0xebca, 0xebcb, 0xebcc, 0xebcd, 0xebce, 0xebcf, 0xebd0, 0xebd1,
  0xebd2, 0xebd3, 0xebd4, 0xebd5, 0xebd6, 0xebd7, 0xebd8, 0xebd9, 0xebda, 0xebdb,
  0xebdc, 0xebdd, 0xebde, 0xebdf, 0xebe0, 0xebe1, 0xebe2, 0xebe3, 0xebe4, 0xebe5,
  0xebe6, 0xebe7, 0xebe8, 0xebe9, 0xebea, 0xebeb, 0xebec, 0xebed, 0xebee, 0xebef,
  0xebf0, 0xebf1, 0xebf2, 0xebf3, 0xebf4, 0xebf5, 0xebf6, 0xebf7, 0xebf8, 0xebf9,
  0xebfa, 0xebfb, 0xebfc, 0xebfd, 0xebfe, 0xeca1, 0xeca2, 0xeca3, 0xeca4, 0xeca5,
  0xeca6, 0xeca7, 0xeca8, 0xeca9, 0xecaa, 0xecab, 0xecac, 0xecad, 0xecae, 0xecaf,
  0xecb0, 0xecb1, 0xecb2, 0xecb3, 0xecb4, 0xecb5, 0xecb6, 0xecb7, 0xecb8, 0xecb9,
  0xecba, 0xecbb, 0xecbc, 0xecbd, 0xecbe, 0xecbf, 0xecc0, 0xecc1, 0xecc2, 0xecc3,
  0xecc4, 0xecc5, 0xecc6, 0xecc7, 0xecc8, 0xecc9, 0xecca, 0xeccb, 0xeccc, 0xeccd,
  0xecce, 0xeccf, 0xecd0, 0xecd1, 0xecd2, 0xecd3, 0xecd4, 0xecd5, 0xecd6, 0xecd7,
  0xecd8, 0xecd9, 0xecda, 0xecdb, 0xecdc, 0xecdd, 0xecde, 0xecdf, 0xece0, 0xece1,
  0xece2, 0xece3, 0xece4, 0xece5, 0xece6, 0xece7, 0xece8, 0xece9, 0xecea, 0xeceb,
  0xecec, 0xeced, 0xecee, 0xecef, 0xecf0, 0xecf1, 0xecf2, 0xecf3, 0xecf4, 0xecf5,
  0xecf6, 0xecf7, 0xecf8, 0xecf9, 0xecfa, 0xecfb, 0xecfc, 0xecfd, 0xecfe, 0xeda1,
  0xeda2, 0xeda3, 0xeda4, 0xeda5, 0xeda6, 0xeda7, 0xeda8, 0xeda9, 0xedaa, 0xedab,
  0xedac, 0xedad, 0xedae, 0xedaf, 0xedb0, 0xedb1, 0xedb2, 0xedb3, 0xedb4, 0xedb5,
  0xedb6, 0xedb7, 0xedb8, 0xedb9, 0xedba, 0xedbb, 0xedbc, 0xedbd, 0xedbe, 0xedbf,
  0xedc0, 0xedc1, 0xedc2, 0xedc3, 0xedc4, 0xedc5, 0xedc6, 0xedc7, 0xedc8, 0xedc9,
  0xedca, 0xedcb, 0xedcc, 0xedcd, 0xedce, 0xedcf, 0xedd0, 0xedd1, 0xedd2, 0xedd3,
  0xedd4, 0xedd5, 0xedd6, 0xedd7, 0xedd8, 0xedd9, 0xedda, 0xeddb, 0xeddc, 0xeddd,
  0xedde, 0xeddf, 0xede0, 0xede1, 0xede2, 0xede3, 0xede4, 0xede5, 0xede6, 0xede7,
  0xede8, 0xede9, 0xedea, 0xedeb, 0xedec, 0xeded, 0xedee, 0xedef, 0xedf0, 0xedf1,
  0xedf2, 0xedf3, 0xedf4, 0xedf5, 0xedf6, 0xedf7, 0xedf8, 0xedf9, 0xedfa, 0xedfb,
  0xedfc, 0xedfd, 0xedfe, 0xeea1, 0xeea2, 0xeea3, 0xeea4, 0xeea5, 0xeea6, 0xeea7,
  0xeea8, 0xeea9, 0xeeaa, 0xeeab, 0xeeac, 0xeead, 0xeeae, 0xeeaf, 0xeeb0, 0xeeb1,
  0xeeb2, 0xeeb3, 0xeeb4, 0xeeb5, 0xeeb6, 0xeeb7, 0xeeb8, 0xeeb9, 0xeeba, 0xeebb,
  0xeebc, 0xeebd, 0xeebe, 0xeebf, 0xeec0, 0xeec1, 0xeec2, 0xeec3, 0xeec4, 0xeec5,
  0xeec6, 0xeec7, 0xeec8, 0xeec9, 0xeeca, 0xeecb, 0xeecc, 0xeecd, 0xeece, 0xeecf,
  0xeed0, 0xeed1, 0xeed2, 0xeed3, 0xeed4, 0xeed5, 0xeed6, 0xeed7, 0xeed8, 0xeed9,
  0xeeda, 0xeedb, 0xeedc, 0xeedd, 0xeede, 0xeedf, 0xeee0, 0xeee1, 0xeee2, 0xeee3,
  0xeee4, 0xeee5, 0xeee6, 0xeee7, 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xeeed,
  0xeeee, 0xeeef, 0xeef0, 0xeef1, 0xeef2, 0xeef3, 0xeef4, 0xeef5, 0xeef6, 0xeef7,
  0xeef8, 0xeef9, 0xeefa, 0xeefb, 0xeefc, 0xeefd, 0xeefe, 0xefa1, 0xefa2, 0xefa3,
  0xefa4, 0xefa5, 0xefa6, 0xefa7, 0xefa8, 0xefa9, 0xefaa, 0xefab, 0xefac, 0xefad,
  0xefae, 0xefaf, 0xefb0, 0xefb1, 0xefb2, 0xefb3, 0xefb4, 0xefb5, 0xefb6, 0xefb7,
  0xefb8, 0xefb9, 0xefba, 0xefbb, 0xefbc, 0xefbd, 0xefbe, 0xefbf, 0xefc0, 0xefc1,
  0xefc2, 0xefc3, 0xefc4, 0xefc5, 0xefc6, 0xefc7, 0xefc8, 0xefc9, 0xefca, 0xefcb,
  0xefcc, 0xefcd, 0xefce, 0xefcf, 0xefd0, 0xefd1, 0xefd2, 0xefd3, 0xefd4, 0xefd5,
  0xefd6, 0xefd7, 0xefd8, 0xefd9, 0xefda, 0xefdb, 0xefdc, 0xefdd, 0xefde, 0xefdf,
  0xefe0, 0xefe1, 0xefe2, 0xefe3, 0xefe4, 0xefe5, 0xefe6, 0xefe7, 0xefe8, 0xefe9,
  0xefea, 0xefeb, 0xefec, 0xefed, 0xefee, 0xefef, 0xeff0, 0xeff1, 0xeff2, 0xeff3,
  0xeff4, 0xeff5, 0xeff6, 0xeff7, 0xeff8, 0xeff9, 0xeffa, 0xeffb, 0xeffc, 0xeffd,
  0xeffe, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6, 0xf0a7, 0xf0a8, 0xf0a9,
  0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae, 0xf0af, 0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3,
  0xf0b4, 0xf0b5, 0xf0b6, 0xf0b7, 0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd,
  0xf0be, 0xf0bf, 0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6, 0xf0c7,
  0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce, 0xf0cf, 0xf0d0, 0xf0d1,
  0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d7, 0xf0d8, 0xf0d9, 0xf0da, 0xf0db,
  0xf0dc, 0xf0dd, 0xf0de, 0xf0df, 0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5,
  0xf0e6, 0xf0e7, 0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee, 0xf0ef,
  0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6, 0xf0f7, 0xf0f8, 0xf0f9,
  0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe, 0xf1a1, 0xf1a2, 0xf1a3, 0xf1a4, 0xf1a5,
  0xf1a6, 0xf1a7, 0xf1a8, 0xf1a9, 0xf1aa, 0xf1ab, 0xf1ac, 0xf1ad, 0xf1ae, 0xf1af,
  0xf1b0, 0xf1b1, 0xf1b2, 0xf1b3, 0xf1b4, 0xf1b5, 0xf1b6, 0xf1b7, 0xf1b8, 0xf1b9,
  0xf1ba, 0xf1bb, 0xf1bc, 0xf1bd, 0xf1be, 0xf1bf, 0xf1c0, 0xf1c1, 0xf1c2, 0xf1c3,
  0xf1c4, 0xf1c5, 0xf1c6, 0xf1c7, 0xf1c8, 0xf1c9, 0xf1ca, 0xf1cb, 0xf1cc, 0xf1cd,
  0xf1ce, 0xf1cf, 0xf1d0, 0xf1d1, 0xf1d2, 0xf1d3, 0xf1d4, 0xf1d5, 0xf1d6, 0xf1d7,
  0xf1d8, 0xf1d9, 0xf1da, 0xf1db, 0xf1dc, 0xf1dd, 0xf1de, 0xf1df, 0xf1e0, 0xf1e1,
  0xf1e2, 0xf1e3, 0xf1e4, 0xf1e5, 0xf1e6, 0xf1e7, 0xf1e8, 0xf1e9, 0xf1ea, 0xf1eb,
  0xf1ec, 0xf1ed, 0xf1ee, 0xf1ef, 0xf1f0, 0xf1f1, 0xf1f2, 0xf1f3, 0xf1f4, 0xf1f5,
  0xf1f6, 0xf1f7, 0xf1f8, 0xf1f9, 0xf1fa, 0xf1fb, 0xf1fc, 0xf1fd, 0xf1fe, 0xf2a1,
  0xf2a2, 0xf2a3, 0xf2a4, 0xf2a5, 0xf2a6, 0xf2a7, 0xf2a8, 0xf2a9, 0xf2aa, 0xf2ab,
  0xf2ac, 0xf2ad, 0xf2ae, 0xf2af, 0xf2b0, 0xf2b1, 0xf2b2, 0xf2b3, 0xf2b4, 0xf2b5,
  0xf2b6, 0xf2b7, 0xf2b8, 0xf2b9, 0xf2ba, 0xf2bb, 0xf2bc, 0xf2bd, 0xf2be, 0xf2bf,
  0xf2c0, 0xf2c1, 0xf2c2, 0xf2c3, 0xf2c4, 0xf2c5, 0xf2c6, 0xf2c7, 0xf2c8, 0xf2c9,
  0xf2ca, 0xf2cb, 0xf2cc, 0xf2cd, 0xf2ce, 0xf2cf, 0xf2d0, 0xf2d1, 0xf2d2, 0xf2d3,
  0xf2d4, 0xf2d5, 0xf2d6, 0xf2d7, 0xf2d8, 0xf2d9, 0xf2da, 0xf2db, 0xf2dc, 0xf2dd,
  0xf2de, 0xf2df, 0xf2e0, 0xf2e1, 0xf2e2, 0xf2e3, 0xf2e4, 0xf2e5, 0xf2e6, 0xf2e7,
  0xf2e8, 0xf2e9, 0xf2ea, 0xf2eb, 0xf2ec, 0xf2ed, 0xf2ee, 0xf2ef, 0xf2f0, 0xf2f1,
  0xf2f2, 0xf2f3, 0xf2f4, 0xf2f5, 0xf2f6, 0xf2f7, 0xf2f8, 0xf2f9, 0xf2fa, 0xf2fb,
  0xf2fc, 0xf2fd, 0xf2fe, 0xf3a1, 0xf3a2, 0xf3a3, 0xf3a4, 0xf3a5, 0xf3a6, 0xf3a7,
  0xf3a8, 0xf3a9, 0xf3aa, 0xf3ab, 0xf3ac, 0xf3ad, 0xf3ae, 0xf3af, 0xf3b0, 0xf3b1,
  0xf3b2, 0xf3b3, 0xf3b4, 0xf3b5, 0xf3b6, 0xf3b7, 0xf3b8, 0xf3b9, 0xf3ba, 0xf3bb,
  0xf3bc, 0xf3bd, 0xf3be, 0xf3bf, 0xf3c0, 0xf3c1, 0xf3c2, 0xf3c3, 0xf3c4, 0xf3c5,
  0xf3c6, 0xf3c7, 0xf3c8, 0xf3c9, 0xf3ca, 0xf3cb, 0xf3cc, 0xf3cd, 0xf3ce, 0xf3cf,
  0xf3d0, 0xf3d1, 0xf3d2, 0xf3d3, 0xf3d4, 0xf3d5, 0xf3d6, 0xf3d7, 0xf3d8, 0xf3d9,
  0xf3da, 0xf3db, 0xf3dc, 0xf3dd, 0xf3de, 0xf3df, 0xf3e0, 0xf3e1, 0xf3e2, 0xf3e3,
  0xf3e4, 0xf3e5, 0xf3e6, 0xf3e7, 0xf3e8, 0xf3e9, 0xf3ea, 0xf3eb, 0xf3ec, 0xf3ed,
  0xf3ee, 0xf3ef, 0xf3f0, 0xf3f1, 0xf3f2, 0xf3f3, 0xf3f4, 0xf3f5, 0xf3f6, 0xf3f7,
  0xf3f8, 0xf3f9, 0xf3fa, 0xf3fb, 0xf3fc, 0xf3fd, 0xf3fe, 0xf4a1, 0xf4a2, 0xf4a3,
  0xf4a4, 0xf4a5, 0xf4a6, 0xf4a7, 0xf4a8, 0xf4a9, 0xf4aa, 0xf4ab, 0xf4ac, 0xf4ad,
  0xf4ae, 0xf4af, 0xf4b0, 0xf4b1, 0xf4b2, 0xf4b3, 0xf4b4, 0xf4b5, 0xf4b6, 0xf4b7,
  0xf4b8, 0xf4b9, 0xf4ba, 0xf4bb, 0xf4bc, 0xf4bd, 0xf4be, 0xf4bf, 0xf4c0, 0xf4c1,
  0xf4c2, 0xf4c3, 0xf4c4, 0xf4c5, 0xf4c6, 0xf4c7, 0xf4c8, 0xf4c9, 0xf4ca, 0xf4cb,
  0xf4cc, 0xf4cd, 0xf4ce, 0xf4cf, 0xf4d0, 0xf4d1, 0xf4d2, 0xf4d3, 0xf4d4, 0xf4d5,
  0xf4d6, 0xf4d7, 0xf4d8, 0xf4d9, 0xf4da, 0xf4db, 0xf4dc, 0xf4dd, 0xf4de, 0xf4df,
  0xf4e0, 0xf4e1, 0xf4e2, 0xf4e3, 0xf4e4, 0xf4e5, 0xf4e6, 0xf4e7, 0xf4e8, 0xf4e9,
  0xf4ea, 0xf4eb, 0xf4ec, 0xf4ed, 0xf4ee, 0xf4ef, 0xf4f0, 0xf4f1, 0xf4f2, 0xf4f3,
  0xf4f4, 0xf4f5, 0xf4f6, 0xf4f7, 0xf4f8, 0xf4f9, 0xf4fa, 0xf4fb, 0xf4fc, 0xf4fd,
  0xf4fe, 0xf5a1, 0xf5a2, 0xf5a3, 0xf5a4, 0xf5a5, 0xf5a6, 0xf5a7, 0xf5a8, 0xf5a9,
  0xf5aa, 0xf5ab, 0xf5ac, 0xf5ad, 0xf5ae, 0xf5af, 0xf5b0, 0xf5b1, 0xf5b2, 0xf5b3,
  0xf5b4, 0xf5b5, 0xf5b6, 0xf5b7, 0xf5b8, 0xf5b9, 0xf5ba, 0xf5bb, 0xf5bc, 0xf5bd,
  0xf5be, 0xf5bf, 0xf5c0, 0xf5c1, 0xf5c2, 0xf5c3, 0xf5c4, 0xf5c5, 0xf5c6, 0xf5c7,
  0xf5c8, 0xf5c9, 0xf5ca, 0xf5cb, 0xf5cc, 0xf5cd, 0xf5ce, 0xf5cf, 0xf5d0, 0xf5d1,
  0xf5d2, 0xf5d3, 0xf5d4, 0xf5d5, 0xf5d6, 0xf5d7, 0xf5d8, 0xf5d9, 0xf5da, 0xf5db,
  0xf5dc, 0xf5dd, 0xf5de, 0xf5df, 0xf5e0, 0xf5e1, 0xf5e2, 0xf5e3, 0xf5e4, 0xf5e5,
  0xf5e6, 0xf5e7, 0xf5e8, 0xf5e9, 0xf5ea, 0xf5eb, 0xf5ec, 0xf5ed, 0xf5ee, 0xf5ef,
  0xf5f0, 0xf5f1, 0xf5f2, 0xf5f3, 0xf5f4, 0xf5f5, 0xf5f6, 0xf5f7, 0xf5f8, 0xf5f9,
  0xf5fa, 0xf5fb, 0xf5fc, 0xf5fd, 0xf5fe, 0xf6a1, 0xf6a2, 0xf6a3, 0xf6a4, 0xf6a5,
  0xf6a6, 0xf6a7, 0xf6a8, 0xf6a9, 0xf6aa, 0xf6ab, 0xf6ac, 0xf6ad, 0xf6ae, 0xf6af,
  0xf6b0, 0xf6b1, 0xf6b2, 0xf6b3, 0xf6b4, 0xf6b5, 0xf6b6, 0xf6b7, 0xf6b8, 0xf6b9,
  0xf6ba, 0xf6bb, 0xf6bc, 0xf6bd, 0xf6be, 0xf6bf, 0xf6c0, 0xf6c1, 0xf6c2, 0xf6c3,
  0xf6c4, 0xf6c5, 0xf6c6, 0xf6c7, 0xf6c8, 0xf6c9, 0xf6ca, 0xf6cb, 0xf6cc, 0xf6cd,
  0xf6ce, 0xf6cf, 0xf6d0, 0xf6d1, 0xf6d2, 0xf6d3, 0xf6d4, 0xf6d5, 0xf6d6, 0xf6d7,
  0xf6d8, 0xf6d9, 0xf6da, 0xf6db, 0xf6dc, 0xf6dd, 0xf6de, 0xf6df, 0xf6e0, 0xf6e1,
  0xf6e2, 0xf6e3, 0xf6e4, 0xf6e5, 0xf6e6, 0xf6e7, 0xf6e8, 0xf6e9, 0xf6ea, 0xf6eb,
  0xf6ec, 0xf6ed, 0xf6ee, 0xf6ef, 0xf6f0, 0xf6f1, 0xf6f2, 0xf6f3, 0xf6f4, 0xf6f5,
  0xf6f6, 0xf6f7, 0xf6f8, 0xf6f9, 0xf6fa, 0xf6fb, 0xf6fc, 0xf6fd, 0xf6fe, 0xf7a1,
  0xf7a2, 0xf7a3, 0xf7a4, 0xf7a5, 0xf7a6, 0xf7a7, 0xf7a8, 0xf7a9, 0xf7aa, 0xf7ab,
  0xf7ac, 0xf7ad, 0xf7ae, 0xf7af, 0xf7b0, 0xf7b1, 0xf7b2, 0xf7b3, 0xf7b4, 0xf7b5,
  0xf7b6, 0xf7b7, 0xf7b8, 0xf7b9, 0xf7ba, 0xf7bb, 0xf7bc, 0xf7bd, 0xf7be, 0xf7bf,
  0xf7c0, 0xf7c1, 0xf7c2, 0xf7c3, 0xf7c4, 0xf7c5, 0xf7c6, 0xf7c7, 0xf7c8, 0xf7c9,
  0xf7ca, 0xf7cb, 0xf7cc, 0xf7cd, 0xf7ce, 0xf7cf, 0xf7d0, 0xf7d1, 0xf7d2, 0xf7d3,
  0xf7d4, 0xf7d5, 0xf7d6, 0xf7d7, 0xf7d8, 0xf7d9, 0xf7da, 0xf7db, 0xf7dc, 0xf7dd,
  0xf7de, 0xf7df, 0xf7e0, 0xf7e1, 0xf7e2, 0xf7e3, 0xf7e4, 0xf7e5, 0xf7e6, 0xf7e7,
  0xf7e8, 0xf7e9, 0xf7ea, 0xf7eb, 0xf7ec, 0xf7ed, 0xf7ee, 0xf7ef, 0xf7f0, 0xf7f1,
  0xf7f2, 0xf7f3, 0xf7f4, 0xf7f5, 0xf7f6, 0xf7f7, 0xf7f8, 0xf7f9, 0xf7fa, 0xf7fb,
  0xf7fc, 0xf7fd, 0xf7fe};


================================================
FILE: gradient.cpp
================================================
#include "gradient.h"
#include "OfflineGridUBytePicture.h"
//judge the gradient area in terms of (x,y)
template <typename _T>
int Judge( _T x, _T y)    //
{
 if( x==0&&y==0 )
   return 0;
 if ( x>0&&y==0 )
   return 0;
 if ( y>0&&x>y )
   return 1;
 if ( x>0&&y==x )
   return 2;
 if ( x>0&&x<y )
   return 3;
 if ( x==0&&y>0 )
   return 4;
 if ( x<0&&y>(abs(x)) )
   return 5;
 if ( x<0&&y==(abs(x)))
   return 6;
 if ( x<0&&y<(abs(x))&&y>0 )
   return 7;
 if ( y==0&&x<0 )
   return 8;
 if ( y<0&&y>x )
   return 9;
 if ( x<0&&y==x )
   return 10;
 if ( x<0&&y<x )
   return 11;
 if ( x==0&&y<0 )
   return 12;
 if ( y<0&&x<(abs(y))&&x>0 )
   return 13;
 if ( y<0&&x==(abs(y)) )
   return 14;
 if ( y<0&&x>(abs(y)) )
   return 15;
 else
   return 0;
}

void FeaExtractByGradient(cv::Mat img, vector<cv::Mat> &featureMaps)
{
	float Gx;
	float Gy;
	int us_direction=8;
	int imgHeight=img.rows;
	int imgWidth=img.cols;
	int v_gx [maskHeight][maskWidth]={};
	int v_gy [maskHeight][maskWidth]={};
	int image[maskHeight][maskWidth]={};
	//make some confirm
	for(int i=0;i<maskHeight;i++){
		for(int j=0;j<maskWidth;j++){
			image[i][j]=img.at<uchar>(i,j);
		}
	}
	//Use Sobel to compute the gradient value of each pixel
	for(int i=0;i<maskHeight;i++)
	{
		for(int j=0;j<maskWidth;j++)
		{
			if((i==maskHeight-1)||(j==maskWidth-1)||(i==0)||(j==0))
			{
				v_gx[i][j]=image[i][j];
				v_gy[i][j]=image[i][j];
			}
			else
			{
				v_gx[i][j]=image[i-1][j-1]+2*image[i-1][j]+image[i-1][j+1]-image[i+1][j-1]-2*image[i+1][j]-image[i+1][j+1];
				v_gy[i][j]=image[i-1][j-1]+2*image[i][j-1]+image[i+1][j-1]-image[i-1][j+1]-2*image[i][j+1]-image[i+1][j+1];
			}
		}
	}
	float * v_G=new float[maskHeight*maskWidth*us_direction];
	//Decompose each gradient value vector to eight directions
	for(int i=0;i<maskHeight;i++)
	{
		for(int j=0;j<maskWidth;j++)
		{
			Gx=(float)v_gx[i][j];
			Gy=(float)v_gy[i][j];
			int us_index=i*maskWidth+j;
			int Dec_Pos=Judge(Gx,Gy);
			switch(Dec_Pos)
			{
			case 0: v_G[us_index]=Gx;break;
			case 1: v_G[us_index]=Gx-Gy;v_G[maskHeight*maskWidth+us_index]=(float)1.414214*Gy;break;
			case 2: v_G[maskHeight*maskWidth+us_index]=(float)1.414214*Gy;break;
			case 3: v_G[maskHeight*maskWidth+us_index]=(float)1.414214*Gx;v_G[maskHeight*maskWidth*2+us_index]=Gy-Gx;break;
			case 4: v_G[maskHeight*maskWidth*2+us_index]=Gy;break;
			case 5: v_G[maskHeight*maskWidth*2+us_index]=Gx+Gy;v_G[maskHeight*maskWidth*3+us_index]=(float)1.414214*abs(Gx);break;//abs(1.414214*Gx);break;
			case 6: v_G[maskHeight*maskWidth*3+us_index]=(float)1.414214*Gy;break;
			case 7: v_G[maskHeight*maskWidth*3+us_index]=(float)1.414214*Gy;v_G[maskHeight*maskWidth*4+us_index]=abs(Gx+Gy);break;
			case 8: v_G[maskHeight*maskWidth*4+us_index]=abs(Gx);break;
			case 9: v_G[maskHeight*maskWidth*4+us_index]=Gy-Gx;v_G[maskHeight*maskWidth*5+us_index]=(float)1.414214*abs(Gy);break;
			case 10:v_G[maskHeight*maskWidth*5+us_index]=(float)1.414214*abs(Gy);break;
			case 11:v_G[maskHeight*maskWidth*5+us_index]=(float)1.414214*abs(Gx);v_G[maskHeight*maskWidth*6+us_index]=Gx-Gy;break;
			case 12:v_G[maskHeight*maskWidth*6+us_index]=abs(Gy);break;
			case 13:v_G[maskHeight*maskWidth*6+us_index]=abs(Gx+Gy);v_G[maskHeight*maskWidth*7+us_index]=(float)1.414214*abs(Gx);break;
			case 14:v_G[maskHeight*maskWidth*7+us_index]=(float)1.414214*Gx;break;
			case 15:v_G[maskHeight*maskWidth*7+us_index]=(float)1.414214*abs(Gy);v_G[us_index]=abs(Gx+Gy);break;
			}
		}
	}
	for(int c=0;c<us_direction;c++)
	{
		float min=9999999;
		float max=-1;
		cv::Mat graFeaMap(maskHeight,maskHeight,CV_8UC1);
		for(int i=0;i<maskHeight;i++)
		{
			for(int j=0;j<maskWidth;j++)
			{
				//make some confirm
				if(v_G[c*maskHeight*maskWidth+i*maskWidth+j]<0)
				{
					v_G[c*maskHeight*maskWidth+i*maskWidth+j]=0;
				}
				if(max<v_G[c*maskHeight*maskWidth+i*maskWidth+j])
				{
					max=v_G[c*maskHeight*maskWidth+i*maskWidth+j];
				}
				if(min>v_G[c*maskHeight*maskWidth+i*maskWidth+j])
				{
					min=v_G[c*maskHeight*maskWidth+i*maskWidth+j];
				}
			}
		}
		for(int i=0;i<maskHeight;i++)
		{
			for(int j=0;j<maskWidth;j++)
			{
				v_G[c*maskHeight*maskWidth+i*maskWidth+j]=255*((float)(v_G[c*maskHeight*maskWidth+i*maskWidth+j]-min))/(max-min);// confirm 0-255
				graFeaMap.at<uchar>(i,j)=(uchar)v_G[c*maskHeight*maskWidth+i*maskWidth+j];
			}
		}
		GaussianBlur(graFeaMap,graFeaMap,Size(3, 3),0,0);
		featureMaps.push_back(graFeaMap);
		graFeaMap.release();
	}
	delete[]v_G;
}


================================================
FILE: gradient.h
================================================
#include <string>
#include <vector>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;
using namespace std;

//judge the gradient area in terms of (x,y)
template <typename _T>
int Judge( _T x, _T y);

void FeaExtractByGradient(cv::Mat img,vector<cv::Mat> &featureMaps);


================================================
FILE: main.cpp
================================================
#include "gbcodes3755.h"
#include "OfflineGridUBytePicture.h"
#include "gabor.h"
#include "gradient.h"

#define gradient
//#define gabor

void readGNTFile(vector<OfflineGridUBytePicture*> &characters,
		const char* filename) {
	ifstream file(filename, ios::in | ios::binary);
	if (!file) {
		cout << "Cannot find " << filename << endl;
		exit (EXIT_FAILURE);
	}
	cout << "\n" << filename << endl;
	gntCharacterHeader gCH;
	while (file.read((char*) &gCH,
			(sizeof(gCH.sampleSize) + sizeof(gCH.height) + sizeof(gCH.width)
					+ sizeof(gCH.label)))) {
		OfflineGridUBytePicture* character = new OfflineGridUBytePicture(
				gCH.width, gCH.height, gCH.label);
		unsigned char *bitmap;
		try {
			bitmap = new unsigned char[gCH.width * gCH.height];
		} catch (bad_alloc ex) {
			cout << "\nException:" << ex.what() << " " << filename << endl;
			cout << gCH.width << " " << gCH.height << endl;
			exit(-1);

		}
		file.read((char *) bitmap, gCH.width * gCH.height);
		for (int i = 0; i < gCH.width * gCH.height; i++) { //Black (0) background, white (255) ink
			//opposite the color
			character->bitmap[i] = 255 - bitmap[i];
		}	
		character->label = find(gbcodesCRO, gbcodesCRO + 3755,
			character->label) - gbcodesCRO;
		if (character->label < nCharacters)
		{
			characters.push_back(character);
		}
		else
		{
			delete character;
		}	
		delete[] bitmap;
	}
	file.close();
}

cv::Mat maskCharacter(cv::Mat ResizedwordImg, int temp, bool flag) {
	cv::Mat maskImg=cv::Mat::zeros(maskHeight,maskWidth,CV_8UC1);
	int row = 0;
	int col = 0;
	if (flag == true) {
		row = int((maskHeight - characterHeight) / 2);
		col = int(std::floor((maskWidth - temp) / 2))+1;
	} else {
		row = int(std::floor((maskHeight - temp) / 2))+1;
		col = int((maskWidth - characterWidth) / 2);
	}
	for (int i = row; i < (maskHeight - row); i++) {
		for (int j = col; j < (maskWidth - col); j++) {
			maskImg.at<uchar>(i,j) = ResizedwordImg.at<uchar>(i - row, j - col);
		}
	}
	return maskImg;
}

cv::Mat resizeCharacter(OfflineGridUBytePicture *character) {

	int srcwidth = character->width;
	int srcheight = character->height;

	cv::Mat img=cv::Mat::zeros(srcheight,srcwidth,CV_8U);
	for (int m = 0; m < srcheight; m++) {
		for (int n = 0; n < srcwidth; n++) {
			img.at<uchar>(m,n) = character->bitmap[m * srcwidth + n];
		}
	}
	if(srcheight>srcwidth)
	{
		double ratio = (double) characterHeight / srcheight;
		int width = min(int(std::floor(ratio * srcwidth)), characterWidth);
		cv::Mat img_resize=cv::Mat::zeros(characterHeight,width,CV_8UC1);
		resize(img, img_resize, cvSize(width,characterHeight),0,0,CV_INTER_LINEAR);
		cv::Mat maskImg=maskCharacter(img_resize, width, true);
		img.release();
		img_resize.release();
		return maskImg;
	}
	else
	{
		double ratio = (double) characterWidth / srcwidth;
		int height = min(int(std::floor(ratio * srcheight)), characterHeight);
		cv::Mat img_resize=cv::Mat::zeros(characterWidth,height,CV_8UC1);
		resize(img, img_resize, cvSize(characterWidth,height),0,0,CV_INTER_LINEAR);
		cv::Mat maskImg = maskCharacter(img_resize, height, false);
		img.release();
		img_resize.release();
		return maskImg;
	}
}

int main()
{
	const char* filename="1001-c.gnt";
	vector<OfflineGridUBytePicture*> characters;
	readGNTFile(characters,filename);
	int characterNum=characters.size();
	char outfilename[100];
	char filenameAFormat[]=".\\featureMap\\%04d_%01d.png";
	cout<<" character number: "<<characterNum<<endl;
	for(int i=0;i<characterNum;i++)
	{
		cv::Mat img=resizeCharacter(characters[i]);
		vector<cv::Mat> featureMaps;
#ifdef gabor
		gabor_filter(img,featureMaps);
#endif
#ifdef gradient
		 FeaExtractByGradient(img,featureMaps);
#endif
		int featureMapNum=featureMaps.size();
		for(int c=0;c<featureMapNum;c++)
		{
			sprintf(outfilename,filenameAFormat,characters[i]->label,c);
			imwrite(outfilename,featureMaps[c]);
			featureMaps[c].release();
		}
		featureMaps.clear();
		img.release();
		characters[i]->bitmap.clear();
		cout<<i<<"th character has done, total character number is: "<<characterNum<<endl;
	}
	characters.clear();
}



Download .txt
gitextract_kzcmmpk0/

├── OfflineGridUBytePicture.h
├── README.md
├── casia_googleNet_train_val.prototxt
├── casia_solver.prototxt
├── gabor.cpp
├── gabor.h
├── gbcodes3755.h
├── gradient.cpp
├── gradient.h
└── main.cpp
Download .txt
SYMBOL INDEX (10 symbols across 4 files)

FILE: OfflineGridUBytePicture.h
  function class (line 20) | class OfflineGridUBytePicture {
  type gntCharacterHeader (line 37) | struct gntCharacterHeader {

FILE: gabor.cpp
  function getMyGabor (line 3) | cv::Mat getMyGabor(int width, int height, int U, int V, double Kmax, dou...
  function gabor_filter (line 44) | void gabor_filter(cv::Mat& img,vector<cv::Mat> &featureMaps)

FILE: gradient.cpp
  function Judge (line 5) | int Judge( _T x, _T y)    //
  function FeaExtractByGradient (line 45) | void FeaExtractByGradient(cv::Mat img, vector<cv::Mat> &featureMaps)

FILE: main.cpp
  function readGNTFile (line 9) | void readGNTFile(vector<OfflineGridUBytePicture*> &characters,
  function maskCharacter (line 52) | cv::Mat maskCharacter(cv::Mat ResizedwordImg, int temp, bool flag) {
  function resizeCharacter (line 71) | cv::Mat resizeCharacter(OfflineGridUBytePicture *character) {
  function main (line 106) | int main()
Condensed preview — 10 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (154K chars).
[
  {
    "path": "OfflineGridUBytePicture.h",
    "chars": 833,
    "preview": "#include <iostream>\n#include <string.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string>\n#include <fstream>\n#inc"
  },
  {
    "path": "README.md",
    "chars": 1608,
    "preview": "### High Performance Offline Handwritten Chinese Character Recognition Using GoogLeNet and Feature Maps\n\nby Zhuoyao Zhon"
  },
  {
    "path": "casia_googleNet_train_val.prototxt",
    "chars": 17394,
    "preview": "name: \"GoogleNet\"\nlayers {\n  name: \"data\"\n  type: DATA\n  top: \"data\"\n  top: \"label\"\n  data_param {\n    source: \"/home/dp"
  },
  {
    "path": "casia_solver.prototxt",
    "chars": 355,
    "preview": "net: \"casia_googleNet_train_val.prototxt\"\ntest_iter: 458\ntest_interval: 5000\nbase_lr: 0.01\nlr_policy: \"step\"\ngamma: 0.1\n"
  },
  {
    "path": "gabor.cpp",
    "chars": 2548,
    "preview": "#include \"gabor.h\"\n\ncv::Mat getMyGabor(int width, int height, int U, int V, double Kmax, double f,\n\t\t\t   double sigma, i"
  },
  {
    "path": "gabor.h",
    "chars": 427,
    "preview": "#include <string>\n#include <vector>\n#include <opencv2/highgui/highgui.hpp>\n#include <opencv2/highgui/highgui_c.h>\n#inclu"
  },
  {
    "path": "gbcodes3755.h",
    "chars": 117512,
    "preview": "//CASIA: To read  a POT file, use gbcodesPOT: A1B0 on disk is read to hex integer 0xb0a1\n//                             "
  },
  {
    "path": "gradient.cpp",
    "chars": 4468,
    "preview": "#include \"gradient.h\"\n#include \"OfflineGridUBytePicture.h\"\n//judge the gradient area in terms of (x,y)\ntemplate <typenam"
  },
  {
    "path": "gradient.h",
    "chars": 357,
    "preview": "#include <string>\n#include <vector>\n#include <opencv2/highgui/highgui.hpp>\n#include <opencv2/highgui/highgui_c.h>\n#inclu"
  },
  {
    "path": "main.cpp",
    "chars": 4064,
    "preview": "#include \"gbcodes3755.h\"\n#include \"OfflineGridUBytePicture.h\"\n#include \"gabor.h\"\n#include \"gradient.h\"\n\n#define gradient"
  }
]

About this extraction

This page contains the full source code of the zhongzhuoyao/HCCR-GoogLeNet GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 10 files (146.1 KB), approximately 103.4k tokens, and a symbol index with 10 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!