From a10d81953f8d4fe1651b10f350d8808366584ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20L=C3=BCtke=20Dreimann?= Date: Fri, 26 Aug 2022 17:02:32 +0200 Subject: [PATCH] added more benchmarks --- .../src/hello_gpgpu/benchmark/adi/adi.cc | 522 ++++++ .../src/hello_gpgpu/benchmark/adi/adi.cl | 92 ++ .../src/hello_gpgpu/benchmark/adi/adi.h | 61 + .../hello_gpgpu/benchmark/adi/adi_kernel.h | 1466 +++++++++++++++++ .../hello_gpgpu/benchmark/benchmark_extern.h | 47 +- .../benchmark/convolution-2d/2DConvolution.cc | 323 ++++ .../benchmark/convolution-2d/2DConvolution.cl | 35 + .../benchmark/convolution-2d/2DConvolution.h | 61 + .../convolution-2d/2DConvolution_kernel.h | 255 +++ .../benchmark/convolution-3d/3DConvolution.cc | 344 ++++ .../benchmark/convolution-3d/3DConvolution.cl | 46 + .../benchmark/convolution-3d/3DConvolution.h | 67 + .../convolution-3d/3DConvolution_kernel.h | 386 +++++ .../benchmark/correlation/correlation.cc | 471 ++++++ .../benchmark/correlation/correlation.cl | 95 ++ .../benchmark/correlation/correlation.h | 73 + .../correlation/correlation_kernel.h | 968 +++++++++++ .../benchmark/covariance/covariance.cc | 404 +++++ .../benchmark/covariance/covariance.cl | 67 + .../benchmark/covariance/covariance.h | 69 + .../benchmark/covariance/covariance_kernel.h | 641 +++++++ .../hello_gpgpu/benchmark/fdtd-2d/fdtd2d.cc | 406 +++++ .../hello_gpgpu/benchmark/fdtd-2d/fdtd2d.cl | 64 + .../hello_gpgpu/benchmark/fdtd-2d/fdtd2d.h | 67 + .../benchmark/fdtd-2d/fdtd2d_kernel.h | 832 ++++++++++ .../benchmark/gramschmidt/gramschmidt.cc | 410 +++++ .../benchmark/gramschmidt/gramschmidt.cl | 68 + .../benchmark/gramschmidt/gramschmidt.h | 60 + .../gramschmidt/gramschmidt_kernel.h | 694 ++++++++ .../benchmark/jacobi-1d-imper/jacobi1D.cc | 350 ++++ .../benchmark/jacobi-1d-imper/jacobi1D.cl | 37 + .../benchmark/jacobi-1d-imper/jacobi1D.h | 61 + .../jacobi-1d-imper/jacobi1D_kernel.h | 331 ++++ .../benchmark/jacobi-2d-imper/jacobi2D.cc | 388 +++++ .../benchmark/jacobi-2d-imper/jacobi2D.cl | 41 + .../benchmark/jacobi-2d-imper/jacobi2D.h | 61 + .../jacobi-2d-imper/jacobi2D_kernel.h | 410 +++++ .../src/hello_gpgpu/benchmark/lu/lu.cc | 350 ++++ .../src/hello_gpgpu/benchmark/lu/lu.cl | 41 + .../src/hello_gpgpu/benchmark/lu/lu.h | 59 + .../src/hello_gpgpu/benchmark/lu/lu_kernel.h | 346 ++++ repos/hello_gpgpu/src/hello_gpgpu/main.cc | 36 +- repos/hello_gpgpu/src/hello_gpgpu/target.mk | 28 +- 43 files changed, 11594 insertions(+), 39 deletions(-) create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.cc create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.cl create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi_kernel.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.cc create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.cl create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution_kernel.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.cc create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.cl create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution_kernel.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.cc create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.cl create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation_kernel.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.cc create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.cl create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance_kernel.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.cc create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.cl create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d_kernel.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.cc create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.cl create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt_kernel.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.cc create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.cl create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D_kernel.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.cc create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.cl create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D_kernel.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.cc create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.cl create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.h create mode 100644 repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu_kernel.h diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.cc b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.cc new file mode 100644 index 0000000000..e82238c92e --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.cc @@ -0,0 +1,522 @@ +/** + * adi.c: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#include +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#else +#include "../../CL/cl.h" +#endif + +#define POLYBENCH_TIME 1 + +//select the OpenCL device to use (can be GPU, CPU, or Accelerator such as Intel Xeon Phi) +#define OPENCL_DEVICE_SELECTION CL_DEVICE_TYPE_GPU + +#include "adi.h" +#include "../../polybench.h" + +//define the error threshold for the results "not matching" +#define PERCENT_DIFF_ERROR_THRESHOLD 10.05 + +#define GPU_DEVICE 0 + +#define MAX_SOURCE_SIZE (0x10000000) + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +namespace ns_adi { + +#include "../../polybenchUtilFuncts.h" +#include "adi_kernel.h" + + +char str_temp[1024]; + +cl_platform_id platform_id; +cl_device_id device_id; +cl_uint num_devices; +cl_uint num_platforms; +cl_int errcode; +cl_context clGPUContext; +cl_kernel clKernel1; +cl_kernel clKernel2; +cl_kernel clKernel3; +cl_kernel clKernel4; +cl_kernel clKernel5; +cl_kernel clKernel6; +cl_command_queue clCommandQue; +cl_program clProgram; +cl_mem a_mem_obj; +cl_mem b_mem_obj; +cl_mem x_mem_obj; +FILE *fp; +char *source_str; +size_t source_size; +unsigned int mem_size_A; +unsigned int mem_size_B; +unsigned int mem_size_X; + +#define RUN_ON_CPU + + +void init_array(int n, DATA_TYPE POLYBENCH_2D(A,N,N,n,n), DATA_TYPE POLYBENCH_2D(B,N,N,n,n), DATA_TYPE POLYBENCH_2D(X,N,N,n,n)) +{ + int i, j; + + for (i = 0; i < n; i++) + { + for (j = 0; j < n; j++) + { + X[i][j] = ((DATA_TYPE) i*(j+1) + 1) / N; + A[i][j] = ((DATA_TYPE) (i-1)*(j+4) + 2) / N; + B[i][j] = ((DATA_TYPE) (i+3)*(j+7) + 3) / N; + } + } +} + + +void compareResults(int n, DATA_TYPE POLYBENCH_2D(B_cpu,N,N,n,n), DATA_TYPE POLYBENCH_2D(B_fromGpu,N,N,n,n), DATA_TYPE POLYBENCH_2D(X_cpu,N,N,n,n), + DATA_TYPE POLYBENCH_2D(X_fromGpu,N,N,n,n)) +{ + int i, j, fail; + fail = 0; + + // Compare b and x output on cpu and gpu + for (i=0; i < n; i++) + { + for (j=0; j < n; j++) + { + if (percentDiff(B_cpu[i][j], B_fromGpu[i][j]) > PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + } + + for (i=0; i PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + } + + // Print results + printf("Non-Matching CPU-GPU Outputs Beyond Error Threshold of %4.2f Percent: %d\n", PERCENT_DIFF_ERROR_THRESHOLD, fail); +} + + +void read_cl_file() +{ + // Load the kernel source code into the array source_str + // fp = fopen("adi.cl", "r"); + // if (!fp) { + // fprintf(stderr, "Failed to load kernel.\n"); + // exit(1); + // } + // source_str = (char*)malloc(MAX_SOURCE_SIZE); + // source_size = fread( source_str, 1, MAX_SOURCE_SIZE, fp); + // fclose( fp ); +} + + +void cl_initialization() +{ + + // Get platform and device information + errcode = clGetPlatformIDs(1, &platform_id, &num_platforms); + if(errcode == CL_SUCCESS) printf("number of platforms is %d\n",num_platforms); + + errcode = clGetPlatformInfo(platform_id,CL_PLATFORM_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform name is %s\n",str_temp); + + errcode = clGetPlatformInfo(platform_id, CL_PLATFORM_VERSION, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform version is %s\n",str_temp); + + errcode = clGetDeviceIDs( platform_id, OPENCL_DEVICE_SELECTION, 1, &device_id, &num_devices); + if(errcode == CL_SUCCESS) printf("device id is %d\n",device_id); + + errcode = clGetDeviceInfo(device_id,CL_DEVICE_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("device name is %s\n",str_temp); + + // Create an OpenCL context + clGPUContext = clCreateContext( NULL, 1, &device_id, NULL, NULL, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating context\n"); + + //Create a command-queue + clCommandQue = clCreateCommandQueue(clGPUContext, device_id, 0, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating command queue\n"); +} + +void cl_mem_init(DATA_TYPE POLYBENCH_2D(A,N,N,n,n), DATA_TYPE POLYBENCH_2D(B,N,N,n,n), DATA_TYPE POLYBENCH_2D(X,N,N,n,n)) +{ + mem_size_A = N*N*sizeof(DATA_TYPE); + mem_size_B = N*N*sizeof(DATA_TYPE); + mem_size_X = N*N*sizeof(DATA_TYPE); + + a_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, mem_size_A, NULL, &errcode); + b_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, mem_size_B, NULL, &errcode); + x_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, mem_size_X, NULL, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating buffers\n"); + + errcode = clEnqueueWriteBuffer(clCommandQue, a_mem_obj, CL_TRUE, 0, mem_size_A, A, 0, NULL, NULL); + errcode |= clEnqueueWriteBuffer(clCommandQue, b_mem_obj, CL_TRUE, 0, mem_size_B, B, 0, NULL, NULL); + errcode |= clEnqueueWriteBuffer(clCommandQue, x_mem_obj, CL_TRUE, 0, mem_size_X, X, 0, NULL, NULL); + if(errcode != CL_SUCCESS)printf("Error in writing buffers\n"); + } + +void cl_load_prog() +{ + // Create a program from the kernel source + const size_t kernel_size = adi_Gen9core_gen_len; + const unsigned char* kernel_bin = adi_Gen9core_gen; + clProgram = clCreateProgramWithBinary(clGPUContext, 1, &device_id, &kernel_size, &kernel_bin, NULL, &errcode); + // clProgram = clCreateProgramWithSource(clGPUContext, 1, (const char **)&source_str, (const size_t *)&source_size, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating program\n"); + + // Build the program + errcode = clBuildProgram(clProgram, 1, &device_id, NULL, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in building program\n"); + + // Create the OpenCL kernel + clKernel1 = clCreateKernel(clProgram, "adi_kernel1", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel1\n"); + clKernel2 = clCreateKernel(clProgram, "adi_kernel2", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel2\n"); + clKernel3 = clCreateKernel(clProgram, "adi_kernel3", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel3\n"); + clKernel4 = clCreateKernel(clProgram, "adi_kernel4", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel4\n"); + clKernel5 = clCreateKernel(clProgram, "adi_kernel5", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel5\n"); + clKernel6 = clCreateKernel(clProgram, "adi_kernel6", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel6\n"); + clFinish(clCommandQue); +} + +void cl_launch_kernel1(int n) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = DIM_LOCAL_WORK_GROUP_Y; + globalWorkSize[0] = (size_t)ceil(((float)N) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + globalWorkSize[1] = 1; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel1, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel1, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode |= clSetKernelArg(clKernel1, 2, sizeof(cl_mem), (void *)&x_mem_obj); + errcode |= clSetKernelArg(clKernel1, 3, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel1, 1, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); +} + +void cl_launch_kernel2(int n) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = 1; + globalWorkSize[0] = (size_t)ceil(((float)N) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + globalWorkSize[1] = 1; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel2, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel2, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode |= clSetKernelArg(clKernel2, 2, sizeof(cl_mem), (void *)&x_mem_obj); + errcode |= clSetKernelArg(clKernel2, 3, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel2, 1, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); +} + +void cl_launch_kernel3(int n) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = 1; + globalWorkSize[0] = (size_t)ceil(((float)N) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + globalWorkSize[1] = 1; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel3, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel3, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode |= clSetKernelArg(clKernel3, 2, sizeof(cl_mem), (void *)&x_mem_obj); + errcode |= clSetKernelArg(clKernel3, 3, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel3, 1, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); +} + +void cl_launch_kernel4(int i, int n) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = 1; + globalWorkSize[0] = (size_t)ceil(((float)N) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + globalWorkSize[1] = 1; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel4, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel4, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode |= clSetKernelArg(clKernel4, 2, sizeof(cl_mem), (void *)&x_mem_obj); + errcode |= clSetKernelArg(clKernel4, 3, sizeof(int), (void *)&i); + errcode |= clSetKernelArg(clKernel4, 4, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel4, 1, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); +} + +void cl_launch_kernel5(int n) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = 1; + globalWorkSize[0] = (size_t)ceil(((float)N) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + globalWorkSize[1] = 1; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel5, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel5, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode |= clSetKernelArg(clKernel5, 2, sizeof(cl_mem), (void *)&x_mem_obj); + errcode |= clSetKernelArg(clKernel5, 3, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel5, 1, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); +} + +void cl_launch_kernel6(int i, int n) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = 1; + globalWorkSize[0] = (size_t)ceil(((float)N) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + globalWorkSize[1] = 1; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel6, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel6, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode |= clSetKernelArg(clKernel6, 2, sizeof(cl_mem), (void *)&x_mem_obj); + errcode |= clSetKernelArg(clKernel6, 3, sizeof(int), (void *)&i); + errcode |= clSetKernelArg(clKernel6, 4, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel6, 1, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); +} + +void cl_clean_up() +{ + // Clean up + errcode = clFlush(clCommandQue); + errcode = clFinish(clCommandQue); + errcode = clReleaseKernel(clKernel1); + errcode = clReleaseKernel(clKernel2); + errcode = clReleaseKernel(clKernel3); + errcode = clReleaseKernel(clKernel4); + errcode = clReleaseKernel(clKernel5); + errcode = clReleaseKernel(clKernel6); + errcode = clReleaseProgram(clProgram); + errcode = clReleaseMemObject(a_mem_obj); + errcode = clReleaseMemObject(b_mem_obj); + errcode = clReleaseMemObject(x_mem_obj); + errcode = clReleaseCommandQueue(clCommandQue); + errcode = clReleaseContext(clGPUContext); + if(errcode != CL_SUCCESS) printf("Error in cleanup\n"); +} + + +void adi(int tsteps, int n, DATA_TYPE POLYBENCH_2D(A,N,N,n,n), DATA_TYPE POLYBENCH_2D(B,N,N,n,n), DATA_TYPE POLYBENCH_2D(X,N,N,n,n)) +{ + int t, i1, i2; + for (t = 0; t < _PB_TSTEPS; t++) + { + for (i1 = 0; i1 < _PB_N; i1++) + { + for (i2 = 1; i2 < _PB_N; i2++) + { + X[i1][i2] = X[i1][i2] - X[i1][(i2-1)] * A[i1][i2] / B[i1][(i2-1)]; + B[i1][i2] = B[i1][i2] - A[i1][i2] * A[i1][i2] / B[i1][(i2-1)]; + } + } + + for (i1 = 0; i1 < _PB_N; i1++) + { + X[i1][(N-1)] = X[i1][(N-1)] / B[i1][(N-1)]; + } + + for (i1 = 0; i1 < _PB_N; i1++) + { + for (i2 = 0; i2 < _PB_N-2; i2++) + { + X[i1][(N-i2-2)] = (X[i1][(N-2-i2)] - X[i1][(N-2-i2-1)] * A[i1][(N-i2-3)]) / B[i1][(N-3-i2)]; + } + } + + for (i1 = 1; i1 < _PB_N; i1++) + { + for (i2 = 0; i2 < _PB_N; i2++) + { + X[i1][i2] = X[i1][i2] - X[(i1-1)][i2] * A[i1][i2] / B[(i1-1)][i2]; + B[i1][i2] = B[i1][i2] - A[i1][i2] * A[i1][i2] / B[(i1-1)][i2]; + } + } + + for (i2 = 0; i2 < _PB_N; i2++) + { + X[(N-1)][i2] = X[(N-1)][i2] / B[(N-1)][i2]; + } + + for (i1 = 0; i1 < _PB_N-2; i1++) + { + for (i2 = 0; i2 < _PB_N; i2++) + { + X[(N-2-i1)][i2] = (X[(N-2-i1)][i2] - X[(N-i1-3)][i2] * A[(N-3-i1)][i2]) / B[(N-2-i1)][i2]; + } + } + } +} + + +/* DCE code. Must scan the entire live-out data. + Can be used also to check the correctness of the output. */ +static +void print_array(int n, + DATA_TYPE POLYBENCH_2D(X,N,N,n,n)) + +{ + int i, j; + + for (i = 0; i < n; i++) + for (j = 0; j < n; j++) { + fprintf(stderr, DATA_PRINTF_MODIFIER, X[i][j]); + if ((i * N + j) % 20 == 0) fprintf(stderr, "\n"); + } + fprintf(stderr, "\n"); +} + + +int main(int argc, char *argv[]) +{ + int tsteps = TSTEPS; + int n = N; + + POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,N,N,n,n); + POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,N,N,n,n); + POLYBENCH_2D_ARRAY_DECL(B_outputFromGpu,DATA_TYPE,N,N,n,n); + POLYBENCH_2D_ARRAY_DECL(X,DATA_TYPE,N,N,n,n); + POLYBENCH_2D_ARRAY_DECL(X_outputFromGpu,DATA_TYPE,N,N,n,n); + + init_array(n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B), POLYBENCH_ARRAY(X)); + + read_cl_file(); + cl_initialization(); + cl_mem_init(POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B), POLYBENCH_ARRAY(X)); + cl_load_prog(); + + /* Start timer. */ + polybench_start_instruments; + + int t, i1; + + for (t = 0; t < _PB_TSTEPS; t++) + { + cl_launch_kernel1(n); + + cl_launch_kernel2(n); + + cl_launch_kernel3(n); + + for (i1 = 1; i1 < _PB_N; i1++) + { + cl_launch_kernel4(i1, n); + } + + cl_launch_kernel5(n); + + for (i1 = 0; i1 < _PB_N-2; i1++) + { + cl_launch_kernel6(i1, n); + } + } + + /* Stop and print timer. */ + printf("GPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + errcode = clEnqueueReadBuffer(clCommandQue, b_mem_obj, CL_TRUE, 0, mem_size_B, POLYBENCH_ARRAY(B_outputFromGpu), 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); + errcode = clEnqueueReadBuffer(clCommandQue, x_mem_obj, CL_TRUE, 0, mem_size_X, POLYBENCH_ARRAY(X_outputFromGpu), 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); + + #ifdef RUN_ON_CPU + + /* Start timer. */ + polybench_start_instruments; + + adi(tsteps, n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B), POLYBENCH_ARRAY(X)); + + /* Stop and print timer. */ + printf("CPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + compareResults(n, POLYBENCH_ARRAY(B), POLYBENCH_ARRAY(B_outputFromGpu), POLYBENCH_ARRAY(X), POLYBENCH_ARRAY(X_outputFromGpu)); + + #else //prevent dead code elimination + + polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(X_outputFromGpu))); + + #endif //RUN_ON_CPU + + cl_clean_up(); + + POLYBENCH_FREE_ARRAY(A); + POLYBENCH_FREE_ARRAY(B); + POLYBENCH_FREE_ARRAY(B_outputFromGpu); + POLYBENCH_FREE_ARRAY(X); + POLYBENCH_FREE_ARRAY(X_outputFromGpu); + + return 0; +} + +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.cl b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.cl new file mode 100644 index 0000000000..7f86817e3c --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.cl @@ -0,0 +1,92 @@ +/** + * adi.cl: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +typedef float DATA_TYPE; + + + +__kernel void adi_kernel1(__global DATA_TYPE* A, __global DATA_TYPE* B, __global DATA_TYPE* X, int n) +{ + int i1 = get_global_id(0); + int i2; + + if ((i1 < n)) + { + for (i2 = 1; i2 < n; i2++) + { + X[i1*n + i2] = X[i1*n + i2] - X[i1*n + (i2-1)] * A[i1*n + i2] / B[i1*n + (i2-1)]; + B[i1*n + i2] = B[i1*n + i2] - A[i1*n + i2] * A[i1*n + i2] / B[i1*n + (i2-1)]; + } + } +} + +__kernel void adi_kernel2(__global DATA_TYPE* A, __global DATA_TYPE* B, __global DATA_TYPE* X, int n) +{ + int i1 = get_global_id(0); + + if ((i1 < n)) + { + X[i1*n + (n-1)] = X[i1*n + (n-1)] / B[i1*n + (n-1)]; + } +} + +__kernel void adi_kernel3(__global DATA_TYPE* A, __global DATA_TYPE* B, __global DATA_TYPE* X, int n) +{ + int i1 = get_global_id(0); + int i2; + + if ((i1 < n)) + { + for (i2 = 0; i2 < n-2; i2++) + { + X[i1*n + (n-i2-2)] = (X[i1*n + (n-2-i2)] - X[i1*n + (n-2-i2-1)] * A[i1*n + (n-i2-3)]) / B[i1*n + (n-3-i2)]; + } + } +} + + + +__kernel void adi_kernel4(__global DATA_TYPE* A, __global DATA_TYPE* B, __global DATA_TYPE* X, int i1, int n) +{ + int i2 = get_global_id(0); + + if ((i2 < n)) + { + X[i1*n + i2] = X[i1*n + i2] - X[(i1-1)*n + i2] * A[i1*n + i2] / B[(i1-1)*n + i2]; + B[i1*n + i2] = B[i1*n + i2] - A[i1*n + i2] * A[i1*n + i2] / B[(i1-1)*n + i2]; + } +} + +__kernel void adi_kernel5(__global DATA_TYPE* A, __global DATA_TYPE* B, __global DATA_TYPE* X, int n) +{ + int i2 = get_global_id(0); + + if ((i2 < n)) + { + X[(n-1)*n + i2] = X[(n-1)*n + i2] / B[(n-1)*n + i2]; + } +} + +__kernel void adi_kernel6(__global DATA_TYPE* A, __global DATA_TYPE* B, __global DATA_TYPE* X, int i1, int n) +{ + int i2 = get_global_id(0); + + if ((i2 < n)) + { + X[(n-2-i1)*n + i2] = (X[(n-2-i1)*n + i2] - X[(n-i1-3)*n + i2] * A[(n-3-i1)*n + i2]) / B[(n-2-i1)*n + i2]; + } +} + diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.h new file mode 100644 index 0000000000..ffc024ebe3 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi.h @@ -0,0 +1,61 @@ +/** + * adi.h: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#ifndef ADI_H +# define ADI_H + +/* Default to STANDARD_DATASET. */ +# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET) +# define STANDARD_DATASET +# endif + +/* Do not define anything if the user manually defines the size. */ +# if !defined(TSTEPS) && !defined(N) +/* Define the possible dataset sizes. */ +# ifdef MINI_DATASET +#define TSTEPS 1 +#define N 256 +# endif + +# ifdef SMALL_DATASET +#define TSTEPS 1 +#define N 512 +# endif + +# ifdef STANDARD_DATASET /* Default if unspecified. */ +#define TSTEPS 1 +#define N 1024 +# endif + +# ifdef LARGE_DATASET +#define TSTEPS 1 +#define N 2048 +# endif + +# ifdef EXTRALARGE_DATASET +#define TSTEPS 1 +#define N 4096 +# endif +# endif /* !N */ + +# define _PB_N POLYBENCH_LOOP_BOUND(N,n) +# define _PB_TSTEPS POLYBENCH_LOOP_BOUND(TSTEPS,tsteps) + +# ifndef DATA_TYPE +# define DATA_TYPE float +# define DATA_PRINTF_MODIFIER "%0.2lf " +# endif + +/* Thread block dimensions */ +#define DIM_LOCAL_WORK_GROUP_X 256 +#define DIM_LOCAL_WORK_GROUP_Y 1 + + +#endif /* !ADI*/ \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi_kernel.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi_kernel.h new file mode 100644 index 0000000000..3c6c9dba86 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/adi/adi_kernel.h @@ -0,0 +1,1466 @@ +unsigned char adi_Gen9core_gen[] = { + 0x43, 0x54, 0x4e, 0x49, 0x39, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb0, 0xc0, 0xc0, 0x80, 0xd8, 0x3b, 0x89, 0x7a, + 0x24, 0xb9, 0x6d, 0x1f, 0x0c, 0x00, 0x00, 0x00, 0x5c, 0x05, 0x00, 0x00, + 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x70, 0x0a, 0x00, 0x00, 0x61, 0x64, 0x69, 0x5f, + 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x31, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0x80, 0x29, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x60, 0x20, + 0x28, 0x01, 0x00, 0x0a, 0x84, 0x09, 0x00, 0x00, 0x10, 0x20, 0x80, 0x03, + 0x24, 0x0a, 0x00, 0x20, 0x18, 0x01, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4c, 0x16, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x10, 0x00, 0x80, 0x03, 0x26, 0x0a, 0x00, 0x20, + 0x18, 0x01, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x21, 0x60, 0x00, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x20, 0x60, 0x00, 0x00, 0x12, + 0x20, 0x00, 0xb1, 0x00, 0x02, 0x20, 0x81, 0x00, 0x48, 0x12, 0xc0, 0x21, + 0x80, 0x01, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x29, 0x40, 0x01, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x4d, 0x04, 0x07, 0x10, 0x20, 0x80, 0x05, + 0x22, 0x0a, 0x00, 0x20, 0xe0, 0x09, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x81, 0x05, 0x22, 0x0a, 0x00, 0x20, 0xa0, 0x09, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, 0x4a, 0x12, 0xa0, 0x21, + 0x80, 0x01, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x80, 0x02, + 0x42, 0x12, 0x00, 0x20, 0xa0, 0x01, 0xb1, 0x12, 0xc0, 0x01, 0xb1, 0x00, + 0x22, 0x00, 0xa1, 0x00, 0x02, 0x0e, 0x00, 0x20, 0x60, 0x09, 0x00, 0x00, + 0x60, 0x09, 0x00, 0x00, 0x41, 0x96, 0x75, 0x20, 0x07, 0x51, 0x4d, 0x08, + 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2a, 0xe0, 0x09, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x22, + 0x18, 0x01, 0x00, 0x1e, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x4c, 0x16, 0xe0, 0x28, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x09, 0x00, 0x60, 0x00, 0x28, 0x0b, 0x60, 0x20, 0x20, 0x0a, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x10, 0x60, 0x00, 0x28, 0x0b, 0xa0, 0x20, + 0x40, 0x0a, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x60, 0x00, + 0x28, 0x0b, 0x40, 0x21, 0x60, 0x0a, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x30, 0x60, 0x00, 0x28, 0x0b, 0x80, 0x21, 0x80, 0x0a, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x00, 0x60, 0x00, 0x28, 0x0b, 0xe0, 0x22, + 0x20, 0x0a, 0x8d, 0x02, 0xc0, 0x02, 0x00, 0x00, 0x40, 0x10, 0x60, 0x00, + 0x28, 0x0b, 0x20, 0x23, 0x40, 0x0a, 0x8d, 0x02, 0xc0, 0x02, 0x00, 0x00, + 0x40, 0x20, 0x60, 0x00, 0x28, 0x0b, 0x60, 0x23, 0x60, 0x0a, 0x8d, 0x02, + 0xc0, 0x02, 0x00, 0x00, 0x40, 0x30, 0x60, 0x00, 0x28, 0x0b, 0xa0, 0x23, + 0x80, 0x0a, 0x8d, 0x02, 0xc0, 0x02, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, + 0x28, 0x4b, 0xc0, 0x21, 0x60, 0x00, 0x69, 0x4a, 0x10, 0x01, 0x00, 0x00, + 0x40, 0x00, 0x60, 0x00, 0x28, 0x4b, 0xe0, 0x26, 0x60, 0x00, 0x69, 0x4a, + 0x08, 0x01, 0x00, 0x00, 0x40, 0x10, 0x60, 0x00, 0x28, 0x4b, 0x00, 0x22, + 0xa0, 0x00, 0x69, 0x4a, 0x10, 0x01, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, + 0x28, 0x4b, 0xe0, 0x23, 0xe0, 0x02, 0x69, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x10, 0x60, 0x00, 0x28, 0x4b, 0x20, 0x24, 0x20, 0x03, 0x69, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x20, 0x60, 0x00, 0x28, 0x4b, 0x60, 0x24, + 0x60, 0x03, 0x69, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x30, 0x60, 0x00, + 0x28, 0x4b, 0xa0, 0x24, 0xa0, 0x03, 0x69, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x10, 0x60, 0x00, 0x28, 0x4b, 0x20, 0x27, 0xa0, 0x00, 0x69, 0x4a, + 0x08, 0x01, 0x00, 0x00, 0x40, 0x20, 0x60, 0x00, 0x28, 0x4b, 0x40, 0x22, + 0x40, 0x01, 0x69, 0x4a, 0x10, 0x01, 0x00, 0x00, 0x40, 0x20, 0x60, 0x00, + 0x28, 0x4b, 0x60, 0x27, 0x40, 0x01, 0x69, 0x4a, 0x08, 0x01, 0x00, 0x00, + 0x09, 0x00, 0x60, 0x00, 0x28, 0x4b, 0xe0, 0x24, 0xe0, 0x03, 0x69, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x10, 0x60, 0x00, 0x28, 0x4b, 0x20, 0x25, + 0x20, 0x04, 0x69, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x60, 0x00, + 0x28, 0x4b, 0x60, 0x25, 0x60, 0x04, 0x69, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x30, 0x60, 0x00, 0x28, 0x4b, 0xa0, 0x25, 0xa0, 0x04, 0x69, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x30, 0x60, 0x00, 0x28, 0x4b, 0x80, 0x22, + 0x80, 0x01, 0x69, 0x4a, 0x10, 0x01, 0x00, 0x00, 0x40, 0x30, 0x60, 0x00, + 0x28, 0x4b, 0xa0, 0x27, 0x80, 0x01, 0x69, 0x4a, 0x08, 0x01, 0x00, 0x00, + 0x40, 0x00, 0x60, 0x00, 0x28, 0x4b, 0xe0, 0x25, 0xe0, 0x04, 0x69, 0x4a, + 0x10, 0x01, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x28, 0x4b, 0xe0, 0x27, + 0xe0, 0x04, 0x69, 0x4a, 0x08, 0x01, 0x00, 0x00, 0x40, 0x10, 0x60, 0x00, + 0x28, 0x4b, 0x20, 0x26, 0x20, 0x05, 0x69, 0x4a, 0x10, 0x01, 0x00, 0x00, + 0x40, 0x10, 0x60, 0x00, 0x28, 0x4b, 0x20, 0x28, 0x20, 0x05, 0x69, 0x4a, + 0x08, 0x01, 0x00, 0x00, 0x40, 0x20, 0x60, 0x00, 0x28, 0x4b, 0x60, 0x26, + 0x60, 0x05, 0x69, 0x4a, 0x10, 0x01, 0x00, 0x00, 0x40, 0x20, 0x60, 0x00, + 0x28, 0x4b, 0x60, 0x28, 0x60, 0x05, 0x69, 0x4a, 0x08, 0x01, 0x00, 0x00, + 0x40, 0x30, 0x60, 0x00, 0x28, 0x4b, 0xa0, 0x26, 0xa0, 0x05, 0x69, 0x4a, + 0x10, 0x01, 0x00, 0x00, 0x40, 0x30, 0x60, 0x00, 0x28, 0x4b, 0xa0, 0x28, + 0xa0, 0x05, 0x69, 0x4a, 0x08, 0x01, 0x00, 0x00, 0x10, 0x00, 0x60, 0x05, + 0x22, 0x43, 0x00, 0x20, 0xe0, 0x06, 0x69, 0x42, 0xe0, 0x05, 0x69, 0x00, + 0x10, 0x00, 0x60, 0x05, 0x20, 0x43, 0x00, 0x20, 0xc0, 0x01, 0x69, 0x42, + 0xe0, 0x07, 0x69, 0x00, 0x10, 0x10, 0x60, 0x05, 0x22, 0x43, 0x00, 0x20, + 0x20, 0x07, 0x69, 0x42, 0x20, 0x06, 0x69, 0x00, 0x10, 0x10, 0x60, 0x05, + 0x20, 0x43, 0x00, 0x20, 0x00, 0x02, 0x69, 0x42, 0x20, 0x08, 0x69, 0x00, + 0x10, 0x20, 0x60, 0x05, 0x22, 0x43, 0x00, 0x20, 0x60, 0x07, 0x69, 0x42, + 0x60, 0x06, 0x69, 0x00, 0x10, 0x20, 0x60, 0x05, 0x20, 0x43, 0x00, 0x20, + 0x40, 0x02, 0x69, 0x42, 0x60, 0x08, 0x69, 0x00, 0x10, 0x30, 0x60, 0x05, + 0x22, 0x43, 0x00, 0x20, 0xa0, 0x07, 0x69, 0x42, 0xa0, 0x06, 0x69, 0x00, + 0x10, 0x30, 0x60, 0x05, 0x20, 0x43, 0x00, 0x20, 0x80, 0x02, 0x69, 0x42, + 0xa0, 0x08, 0x69, 0x00, 0x02, 0x00, 0x81, 0x00, 0x4a, 0x12, 0x20, 0x29, + 0xe0, 0x08, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x81, 0x00, + 0x48, 0x12, 0x00, 0x29, 0xe0, 0x08, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x20, 0x81, 0x00, 0x4a, 0x12, 0x60, 0x29, 0xe0, 0x08, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, 0x48, 0x12, 0x40, 0x29, + 0xe0, 0x08, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0xd6, 0x03, 0xe2, + 0xff, 0x00, 0x48, 0x49, 0x05, 0x20, 0x80, 0x02, 0x40, 0x12, 0x00, 0x20, + 0x40, 0x09, 0xb1, 0x12, 0x60, 0x09, 0xb1, 0x00, 0x22, 0x00, 0xa1, 0x00, + 0x00, 0x0e, 0x00, 0x20, 0x30, 0x06, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2c, 0x1e, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x03, 0x51, 0x08, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x20, 0x60, 0x0a, 0x8d, 0x0a, + 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x21, + 0x00, 0x01, 0x00, 0x0e, 0xff, 0xff, 0xff, 0x3f, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x00, 0x21, 0x00, 0x01, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, 0x60, 0x00, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x21, + 0xa0, 0x00, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x13, 0x51, 0x0e, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x22, + 0x60, 0x0a, 0x8d, 0x0a, 0xc0, 0x01, 0x00, 0x00, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x0f, 0x0a, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x22, + 0x80, 0x01, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, 0x40, 0x96, 0x79, 0x20, + 0x07, 0x1b, 0x0a, 0x08, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x22, + 0x60, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x22, 0xe0, 0x01, 0x8d, 0x1e, 0xfc, 0xff, 0xfc, 0xff, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x23, 0x80, 0x01, 0x8d, 0x0a, + 0x1c, 0x01, 0x00, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x22, + 0xa0, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x20, 0x23, 0x20, 0x02, 0x8d, 0x1e, 0xfc, 0xff, 0xfc, 0xff, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xe0, 0x24, 0x60, 0x03, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x01, 0x20, 0x07, 0x13, 0x13, 0x09, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xe0, 0x23, 0xe0, 0x02, 0x00, 0x06, + 0x02, 0x5c, 0x40, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x20, 0x25, + 0xa0, 0x03, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x22, 0xa0, 0x02, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x24, 0x20, 0x03, 0x00, 0x06, + 0x02, 0x5c, 0x40, 0x04, 0x40, 0x96, 0x01, 0x20, 0x07, 0x33, 0x0a, 0x09, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x25, 0x60, 0x02, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x26, + 0x80, 0x01, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xa0, 0x25, 0xa0, 0x02, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x27, 0x60, 0x06, 0x8d, 0x1e, + 0xfc, 0xff, 0xfc, 0xff, 0x10, 0x00, 0x80, 0x05, 0x26, 0x0a, 0x00, 0x20, + 0x00, 0x01, 0x00, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x27, 0xa0, 0x06, 0x8d, 0x1e, 0xfc, 0xff, 0xfc, 0xff, + 0x10, 0x20, 0x80, 0x05, 0x26, 0x0a, 0x00, 0x20, 0x00, 0x01, 0x00, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x41, 0x56, 0x02, 0x20, 0xe7, 0x2f, 0x1f, 0x27, + 0x41, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x20, 0x26, 0x60, 0x04, 0x8d, 0x3a, + 0x20, 0x05, 0x8d, 0x00, 0x38, 0x56, 0x02, 0x29, 0xe7, 0x2b, 0x2f, 0x2b, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0xa0, 0x25, + 0x20, 0x06, 0x8d, 0x3a, 0xa0, 0x05, 0x8d, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x56, 0x02, 0x20, 0xf7, 0x2b, 0x21, 0x2b, 0x40, 0x20, 0x80, 0x00, + 0xe8, 0x3a, 0xa0, 0x25, 0xa0, 0x04, 0x8d, 0x3a, 0xa0, 0x45, 0x8d, 0x00, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0xb0, 0x02, 0x00, 0xe2, 0x01, 0x00, 0x00, + 0x02, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0xd0, 0x02, 0x00, + 0x22, 0x02, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0xe0, 0x26, 0x60, 0x03, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x20, 0x27, 0xa0, 0x03, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xe0, 0x27, + 0x60, 0x07, 0x00, 0x06, 0x01, 0x5c, 0x40, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x60, 0x28, 0xa0, 0x07, 0x00, 0x06, 0x01, 0x5c, 0x40, 0x04, + 0x41, 0x56, 0x02, 0x20, 0xe7, 0x37, 0x37, 0x37, 0x41, 0x20, 0x80, 0x00, + 0xe8, 0x3a, 0x20, 0x27, 0x20, 0x07, 0x8d, 0x3a, 0x20, 0x07, 0x8d, 0x00, + 0x38, 0x56, 0x02, 0x29, 0xe7, 0x37, 0x37, 0x3f, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0x20, 0x27, 0x20, 0x07, 0x8d, 0x3a, + 0x60, 0x08, 0x8d, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x56, 0x02, 0x20, + 0xf7, 0x37, 0x41, 0x37, 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x20, 0x27, + 0xa0, 0x08, 0x8d, 0x3a, 0x20, 0x47, 0x8d, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0x70, 0x03, 0x00, 0x62, 0x06, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0x90, 0x03, 0x00, 0xa2, 0x06, 0x00, 0x00, + 0x01, 0x5e, 0x02, 0x04, 0x20, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x34, + 0x00, 0x14, 0x00, 0x0e, 0xf0, 0xfc, 0xff, 0xff, 0x24, 0x00, 0xa0, 0x00, + 0x00, 0x0e, 0x00, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x20, 0x20, 0x0a, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x20, + 0x60, 0x0a, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x1e, 0x04, 0x21, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x96, 0x2d, 0x20, 0x07, 0x0a, 0x03, 0x09, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x21, 0xa0, 0x00, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x03, 0x03, 0x09, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x20, 0xa0, 0x00, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xa0, 0x2a, 0x40, 0x01, 0x00, 0x06, + 0x02, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xe0, 0x2a, + 0x80, 0x01, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x20, 0x2b, 0x60, 0x00, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x2b, 0xa0, 0x00, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x2d, 0x20, 0x07, 0x03, 0x51, 0x08, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x20, 0x60, 0x0a, 0x8d, 0x0a, + 0x04, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x04, 0x21, + 0x04, 0x01, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x21, 0x60, 0x00, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x21, 0xa0, 0x00, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x10, 0x00, 0x80, 0x05, 0x24, 0x0a, 0x00, 0x20, + 0x04, 0x01, 0x00, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, + 0x24, 0x0a, 0x00, 0x20, 0x04, 0x01, 0x00, 0x0a, 0x18, 0x01, 0x00, 0x00, + 0x40, 0x96, 0x79, 0x20, 0x07, 0x0e, 0x0a, 0x08, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x22, 0x80, 0x01, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x40, 0x96, 0x2d, 0x20, 0x07, 0x16, 0x0a, 0x09, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x23, 0x80, 0x01, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x22, 0xc0, 0x01, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x01, 0x20, 0x07, 0x22, 0x0a, 0x09, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x22, 0x00, 0x02, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x23, + 0xc0, 0x02, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x80, 0x23, 0x00, 0x03, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, 0x80, 0x01, 0x8d, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x41, 0x56, 0x02, 0x20, 0xe7, 0x12, 0x55, 0x12, + 0x41, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x80, 0x22, 0xe0, 0x0a, 0x8d, 0x3a, + 0x80, 0x02, 0x8d, 0x00, 0x38, 0x56, 0x02, 0x29, 0xe7, 0x12, 0x12, 0x59, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0x80, 0x22, + 0x80, 0x02, 0x8d, 0x3a, 0x60, 0x0b, 0x8d, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x56, 0x02, 0x20, 0xf7, 0x55, 0x1a, 0x12, 0x40, 0x20, 0x80, 0x00, + 0xe8, 0x3a, 0xe0, 0x2a, 0x80, 0x03, 0x8d, 0x3a, 0x80, 0x42, 0x8d, 0x00, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0x50, 0x05, 0x00, 0xc2, 0x02, 0x00, 0x00, + 0x02, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0x70, 0x05, 0x00, + 0x02, 0x03, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x23, 0xc0, 0x01, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x24, 0x00, 0x02, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x24, + 0x40, 0x04, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x00, 0x25, 0x80, 0x04, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x41, 0x56, 0x02, 0x20, 0xe7, 0x1e, 0x1e, 0x1e, 0x41, 0x20, 0x80, 0x00, + 0xe8, 0x3a, 0x00, 0x24, 0x00, 0x04, 0x8d, 0x3a, 0x00, 0x04, 0x8d, 0x00, + 0x38, 0x56, 0x02, 0x29, 0xe7, 0x1e, 0x1e, 0x59, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0x00, 0x24, 0x00, 0x04, 0x8d, 0x3a, + 0x60, 0x0b, 0x8d, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x56, 0x02, 0x20, + 0xf7, 0x59, 0x26, 0x1e, 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x60, 0x2b, + 0x00, 0x05, 0x8d, 0x3a, 0x00, 0x44, 0x8d, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0x90, 0x05, 0x00, 0x42, 0x04, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0xb0, 0x05, 0x00, 0x82, 0x04, 0x00, 0x00, + 0x01, 0x5e, 0x02, 0x04, 0x20, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x34, + 0x00, 0x14, 0x00, 0x0e, 0xb0, 0xfd, 0xff, 0xff, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x4c, 0x00, + 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, + 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x32, 0x3f, 0xa9, 0xd8, 0x3b, 0x89, 0x7a, + 0x24, 0xb9, 0x6d, 0x1f, 0x0c, 0x00, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x61, 0x64, 0x69, 0x5f, + 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x32, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x80, 0x20, + 0x24, 0x01, 0x00, 0x0a, 0x64, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x20, 0x80, 0x00, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, 0x80, 0x00, 0x00, 0x12, + 0x40, 0x00, 0xb1, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x0c, 0x05, 0x07, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x21, 0x40, 0x01, 0x8d, 0x0a, + 0xe0, 0x00, 0x00, 0x00, 0x10, 0x16, 0x77, 0x25, 0x07, 0x00, 0x0c, 0x08, + 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, 0xc0, 0x01, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0x28, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x41, 0x96, 0x75, 0x20, + 0x07, 0x10, 0x0c, 0x08, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x84, 0x20, + 0x18, 0x01, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x41, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x22, 0xc0, 0x01, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, + 0x40, 0x96, 0x2d, 0x20, 0x07, 0x10, 0x10, 0x04, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x22, 0x40, 0x02, 0x8d, 0x0a, 0x84, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, 0x00, 0x02, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, + 0x40, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x14, 0x10, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x22, + 0x40, 0x02, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x40, 0x96, 0x79, 0x20, + 0x07, 0x10, 0x10, 0x08, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, + 0x40, 0x02, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x00, 0x23, 0x80, 0x02, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x23, 0xc0, 0x02, 0x00, 0x06, + 0x02, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x23, + 0x00, 0x02, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x23, 0x40, 0x02, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x38, 0x56, 0x02, 0x29, 0xe7, 0x18, 0x18, 0x1c, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0x40, 0x23, 0x40, 0x03, 0x8d, 0x3a, + 0xc0, 0x03, 0x8d, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x80, 0x01, 0x00, + 0x82, 0x02, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0xa0, 0x01, 0x00, 0xc2, 0x02, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x03, 0x00, + 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, + 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x50, 0x52, 0xd1, + 0xd8, 0x3b, 0x89, 0x7a, 0x24, 0xb9, 0x6d, 0x1f, 0x0c, 0x00, 0x00, 0x00, + 0x5c, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, + 0x61, 0x64, 0x69, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x33, 0x00, + 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, + 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x80, 0x20, 0x28, 0x01, 0x00, 0x0a, 0x64, 0x00, 0x00, 0x00, + 0x10, 0x20, 0x80, 0x03, 0x24, 0x0a, 0x00, 0x20, 0x18, 0x01, 0x00, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x16, 0x0c, 0x21, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x10, 0x00, 0x80, 0x03, + 0x26, 0x0a, 0x00, 0x20, 0x18, 0x01, 0x00, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, 0x80, 0x00, 0x00, 0x12, + 0x40, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x20, + 0x80, 0x00, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, 0x02, 0x20, 0x81, 0x00, + 0x48, 0x12, 0x20, 0x28, 0x0c, 0x01, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x21, 0x40, 0x01, 0x8d, 0x0a, + 0xe0, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x0c, 0x05, 0x07, + 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, 0xc0, 0x01, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x10, 0x00, 0x81, 0x05, 0x22, 0x0a, 0x00, 0x20, + 0x80, 0x01, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, + 0x4a, 0x12, 0x00, 0x28, 0x0c, 0x01, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x20, 0x80, 0x02, 0x42, 0x12, 0x00, 0x20, 0x00, 0x08, 0xb1, 0x12, + 0x20, 0x08, 0xb1, 0x00, 0x22, 0x00, 0xa1, 0x00, 0x02, 0x0e, 0x00, 0x20, + 0x70, 0x03, 0x00, 0x00, 0x70, 0x03, 0x00, 0x00, 0x41, 0x96, 0x75, 0x20, + 0x07, 0x10, 0x0c, 0x08, 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, + 0xc0, 0x01, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x84, 0x20, 0x18, 0x01, 0x00, 0x1e, 0xfe, 0xff, 0xfe, 0xff, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x88, 0x20, 0x18, 0x01, 0x00, 0x0e, + 0xfd, 0xff, 0xff, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x1e, 0x8c, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x94, 0x20, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x9c, 0x20, 0x18, 0x01, 0x00, 0x0a, + 0x8c, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x90, 0x20, + 0x84, 0x00, 0x00, 0x0a, 0x8c, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x04, 0x21, 0x88, 0x00, 0x00, 0x0a, 0x8c, 0x40, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x8c, 0x20, 0x8c, 0x00, 0x00, 0x1e, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x98, 0x20, + 0x84, 0x00, 0x00, 0x0a, 0x94, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x00, 0x21, 0x9c, 0x00, 0x00, 0x0e, 0xfd, 0xff, 0xff, 0x3f, + 0x40, 0x96, 0x6d, 0x20, 0x07, 0x14, 0x10, 0x04, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x22, 0x40, 0x02, 0x8d, 0x0a, 0x90, 0x00, 0x00, 0x00, + 0x40, 0x96, 0x2d, 0x20, 0x07, 0x30, 0x10, 0x08, 0x40, 0x96, 0x75, 0x20, + 0x07, 0x1c, 0x10, 0x04, 0x40, 0x96, 0x01, 0x20, 0x07, 0x24, 0x10, 0x08, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, 0x40, 0x02, 0x8d, 0x0a, + 0x98, 0x00, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x24, + 0x40, 0x02, 0x8d, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x22, 0x80, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, 0x80, 0x03, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, + 0x80, 0x04, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x26, 0x40, 0x02, 0x8d, 0x0a, 0x04, 0x01, 0x00, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x22, 0xc0, 0x02, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, + 0xc0, 0x03, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x24, 0xc0, 0x04, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x26, 0x00, 0x06, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x2d, 0x20, 0x07, 0x14, 0x14, 0x09, + 0x40, 0x96, 0x2d, 0x20, 0x07, 0x1c, 0x1c, 0x09, 0x40, 0x96, 0x79, 0x20, + 0x07, 0x24, 0x24, 0x08, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x26, + 0x40, 0x06, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x22, 0xc0, 0x02, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, 0xc0, 0x03, 0x8d, 0x0a, + 0x24, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x24, + 0xc0, 0x04, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x00, 0x23, 0x80, 0x02, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x24, 0x80, 0x03, 0x00, 0x06, + 0x02, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x01, 0x20, 0x07, 0x30, 0x30, 0x09, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x25, 0x80, 0x04, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x23, + 0xc0, 0x02, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x40, 0x24, 0xc0, 0x03, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x26, 0x40, 0x06, 0x8d, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x25, + 0xc0, 0x04, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x08, 0x21, 0x9c, 0x00, 0x00, 0x0e, 0xfe, 0xff, 0xff, 0x3f, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x26, 0x00, 0x06, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x10, 0x00, 0x80, 0x03, 0x24, 0x0a, 0x00, 0x20, + 0x84, 0x00, 0x00, 0x0a, 0x8c, 0x00, 0x00, 0x00, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x26, 0x40, 0x06, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x40, 0x96, 0x5d, 0x20, 0x07, 0x3c, 0x10, 0x08, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x27, 0x40, 0x02, 0x8d, 0x0a, 0x08, 0x01, 0x00, 0x00, + 0x10, 0x20, 0x80, 0x03, 0x24, 0x0a, 0x00, 0x20, 0x84, 0x00, 0x00, 0x0a, + 0x8c, 0x00, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x27, + 0x80, 0x07, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x27, 0xc0, 0x07, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x96, 0x2d, 0x20, 0x07, 0x3c, 0x3c, 0x09, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x27, 0xc0, 0x07, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, + 0x5b, 0xce, 0x02, 0x20, 0x00, 0xc0, 0xa0, 0x40, 0x5b, 0xef, 0x02, 0x20, + 0x00, 0xd0, 0xa8, 0x44, 0x38, 0x56, 0x02, 0x29, 0xe7, 0x38, 0x2c, 0x34, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0x40, 0x27, + 0xc0, 0x05, 0x8d, 0x3a, 0xc0, 0x06, 0x8d, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0x80, 0x03, 0x00, 0x82, 0x07, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0xa0, 0x03, 0x00, 0xc2, 0x07, 0x00, 0x00, + 0x02, 0x5e, 0x02, 0x04, 0x20, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x34, + 0x00, 0x14, 0x00, 0x0e, 0xe8, 0xfc, 0xff, 0xff, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x03, 0x00, 0x31, 0x00, 0x60, 0x07, + 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x49, 0xe4, 0x6f, 0x21, + 0xd8, 0x3b, 0x89, 0x7a, 0x24, 0xb9, 0x6d, 0x1f, 0x0c, 0x00, 0x00, 0x00, + 0xcc, 0x05, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xb8, 0x03, 0x00, 0x00, + 0x61, 0x64, 0x69, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x34, 0x00, + 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, + 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x80, 0x55, 0x20, + 0x00, 0x04, 0x09, 0x03, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x20, + 0x80, 0x00, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x21, 0x80, 0x00, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x0c, 0x05, 0x07, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x21, 0x40, 0x01, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, + 0x10, 0x16, 0x7b, 0x25, 0x07, 0x00, 0x0c, 0x08, 0x10, 0x20, 0x80, 0x05, + 0x20, 0x0a, 0x00, 0x20, 0xc0, 0x01, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, 0x18, 0x03, 0x00, 0x00, + 0x18, 0x03, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x88, 0x20, + 0x18, 0x01, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x84, 0x20, 0x18, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x8c, 0x20, 0x88, 0x00, 0x00, 0x0a, + 0x1c, 0x01, 0x00, 0x00, 0x40, 0x96, 0x15, 0x20, 0xe0, 0x10, 0x04, 0x0c, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0x84, 0x00, 0x00, 0x0a, + 0xc0, 0x01, 0x8d, 0x00, 0x40, 0x96, 0x1d, 0x20, 0xe0, 0x20, 0x04, 0x0c, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x24, 0x8c, 0x00, 0x00, 0x0a, + 0xc0, 0x01, 0x8d, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, + 0x00, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x22, 0x40, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, 0x00, 0x04, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x24, + 0x40, 0x04, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x30, 0x14, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x26, + 0xc0, 0x02, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x40, 0x96, 0x5d, 0x20, + 0x07, 0x28, 0x24, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x25, + 0xc0, 0x04, 0x8d, 0x0a, 0x28, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x80, 0x26, 0x00, 0x06, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x40, 0x96, 0x2d, 0x20, 0x07, 0x38, 0x24, 0x09, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x80, 0x25, 0x00, 0x05, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x26, 0x40, 0x06, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x27, + 0xc0, 0x04, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x25, 0x40, 0x05, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, + 0x40, 0x96, 0x5d, 0x20, 0x07, 0x18, 0x14, 0x09, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x80, 0x27, 0x00, 0x07, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x23, 0xc0, 0x02, 0x8d, 0x0a, + 0x28, 0x01, 0x00, 0x00, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x27, + 0x40, 0x07, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x40, 0x14, 0x09, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x23, + 0x00, 0x03, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x23, 0x40, 0x03, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x28, 0xc0, 0x02, 0x8d, 0x0a, + 0x24, 0x01, 0x00, 0x00, 0x41, 0x56, 0x02, 0x20, 0xe7, 0x2c, 0x2c, 0x34, + 0x41, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0xc0, 0x25, 0xc0, 0x05, 0x8d, 0x3a, + 0xc0, 0x06, 0x8d, 0x00, 0x38, 0x56, 0x02, 0x29, 0xe7, 0x2c, 0x2c, 0x3c, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0xc0, 0x25, + 0xc0, 0x05, 0x8d, 0x3a, 0xc0, 0x07, 0x8d, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x56, 0x02, 0x20, 0xf7, 0x2c, 0x1c, 0x2c, 0x40, 0x20, 0x80, 0x00, + 0xe8, 0x3a, 0xc0, 0x25, 0xc0, 0x03, 0x8d, 0x3a, 0xc0, 0x45, 0x8d, 0x00, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0xc0, 0x02, 0x00, 0x02, 0x03, 0x00, 0x00, + 0x02, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0xe0, 0x02, 0x00, + 0x42, 0x03, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x00, 0x29, 0x00, 0x06, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x29, 0x40, 0x06, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x29, + 0x00, 0x07, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x29, 0x40, 0x07, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x28, 0x00, 0x08, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x28, + 0x40, 0x08, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x41, 0x56, 0x02, 0x20, + 0xe7, 0x48, 0x48, 0x48, 0x41, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x40, 0x29, + 0x40, 0x09, 0x8d, 0x3a, 0x40, 0x09, 0x8d, 0x00, 0x38, 0x56, 0x02, 0x29, + 0xe7, 0x48, 0x48, 0x4c, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x80, 0x09, + 0xe8, 0x3a, 0x40, 0x29, 0x40, 0x09, 0x8d, 0x3a, 0xc0, 0x09, 0x8d, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x56, 0x02, 0x20, 0xf7, 0x44, 0x44, 0x48, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0xc0, 0x28, 0xc0, 0x08, 0x8d, 0x3a, + 0x40, 0x49, 0x8d, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x40, 0x04, 0x00, + 0x02, 0x08, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0x60, 0x04, 0x00, 0x42, 0x08, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x03, 0x00, + 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, + 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x69, 0x31, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x9f, 0x85, 0x2c, 0xd8, 0x3b, 0x89, 0x7a, 0x24, 0xb9, 0x6d, 0x1f, + 0x0c, 0x00, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xc8, 0x01, 0x00, 0x00, 0x61, 0x64, 0x69, 0x5f, 0x6b, 0x65, 0x72, 0x6e, + 0x65, 0x6c, 0x35, 0x00, 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0x60, 0x20, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x80, 0x20, 0x24, 0x01, 0x00, 0x0a, + 0x64, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x20, + 0x80, 0x00, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x21, 0x80, 0x00, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x0c, 0x05, 0x07, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x21, 0x40, 0x01, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, + 0x10, 0x16, 0x77, 0x25, 0x07, 0x00, 0x0c, 0x08, 0x10, 0x20, 0x80, 0x05, + 0x20, 0x0a, 0x00, 0x20, 0xc0, 0x01, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, + 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, 0x20, 0x01, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x84, 0x20, + 0x18, 0x01, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x88, 0x20, 0x84, 0x00, 0x00, 0x0a, 0x18, 0x01, 0x00, 0x00, + 0x40, 0x96, 0x19, 0x20, 0xe0, 0x10, 0x04, 0x0c, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x22, 0x88, 0x00, 0x00, 0x0a, 0xc0, 0x01, 0x8d, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, 0x00, 0x02, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, + 0x40, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x14, 0x10, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x22, + 0x40, 0x02, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x40, 0x96, 0x79, 0x20, + 0x07, 0x10, 0x10, 0x08, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, + 0x40, 0x02, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x00, 0x23, 0x80, 0x02, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x23, 0xc0, 0x02, 0x00, 0x06, + 0x02, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x23, + 0x00, 0x02, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x23, 0x40, 0x02, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x38, 0x56, 0x02, 0x29, 0xe7, 0x18, 0x18, 0x1c, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0x40, 0x23, 0x40, 0x03, 0x8d, 0x3a, + 0xc0, 0x03, 0x8d, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x80, 0x01, 0x00, + 0x82, 0x02, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0xa0, 0x01, 0x00, 0xc2, 0x02, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x03, 0x00, + 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, + 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0xeb, 0x7c, 0x34, 0xd8, 0x3b, 0x89, 0x7a, + 0x24, 0xb9, 0x6d, 0x1f, 0x0c, 0x00, 0x00, 0x00, 0xcc, 0x05, 0x00, 0x00, + 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x61, 0x64, 0x69, 0x5f, + 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x36, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x80, 0x55, 0x20, 0x00, 0x7e, 0x09, 0x03, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x20, 0xc0, 0x0f, 0x00, 0x12, + 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2f, + 0xc0, 0x0f, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x0a, 0x04, 0x07, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2f, + 0x80, 0x0f, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x10, 0x16, 0x7b, 0x25, + 0x07, 0x00, 0x0a, 0x08, 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, + 0x40, 0x0f, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x22, 0x00, 0xa1, 0x00, + 0x00, 0x0e, 0x00, 0x20, 0x80, 0x02, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x20, 0x1c, 0x01, 0x00, 0x1e, + 0xfe, 0xff, 0xfe, 0xff, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc8, 0x2f, + 0x1c, 0x01, 0x00, 0x0a, 0x18, 0x41, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xcc, 0x20, 0x1c, 0x01, 0x00, 0x1e, 0xfd, 0xff, 0xfd, 0xff, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x2f, 0xc0, 0x00, 0x00, 0x0a, + 0x18, 0x41, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc8, 0x20, + 0xc8, 0x0f, 0x00, 0x1e, 0xfd, 0xff, 0xfd, 0xff, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xd0, 0x2f, 0xcc, 0x00, 0x00, 0x0a, 0x18, 0x41, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x20, 0xc4, 0x0f, 0x00, 0x0a, + 0x1c, 0x01, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xcc, 0x2f, + 0xc8, 0x00, 0x00, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xd0, 0x20, 0xd0, 0x0f, 0x00, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x40, 0x96, 0x15, 0x20, 0xe0, 0x78, 0x06, 0x0a, 0x40, 0x96, 0x1d, 0x20, + 0xe0, 0x14, 0x7e, 0x0a, 0x40, 0x96, 0x21, 0x20, 0xe0, 0x69, 0x06, 0x0a, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x21, 0xc4, 0x00, 0x00, 0x0a, + 0x40, 0x0f, 0x8d, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2e, + 0xcc, 0x0f, 0x00, 0x0a, 0x40, 0x0f, 0x8d, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x22, 0xd0, 0x00, 0x00, 0x0a, 0x40, 0x0f, 0x8d, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2e, 0x00, 0x0f, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, + 0x80, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x20, 0x2d, 0x20, 0x0d, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x21, 0x80, 0x01, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2e, + 0x00, 0x0e, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x22, 0xc0, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x96, 0x5d, 0x20, 0x07, 0x74, 0x76, 0x09, 0x40, 0x96, 0x5d, 0x20, + 0x07, 0x14, 0x14, 0x09, 0x40, 0x96, 0x01, 0x20, 0x07, 0x69, 0x69, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, 0xc0, 0x01, 0x8d, 0x0a, + 0x28, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2e, + 0x00, 0x0e, 0x8d, 0x0a, 0x28, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x22, 0xc0, 0x02, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x2e, 0x80, 0x0e, 0x00, 0x06, + 0x02, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xa0, 0x2d, + 0x80, 0x02, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x65, 0x76, 0x09, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x23, + 0x20, 0x0d, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x40, 0x22, 0x00, 0x02, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x2d, 0x00, 0x0e, 0x00, 0x06, + 0x02, 0x5e, 0x20, 0x04, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, + 0xc0, 0x01, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x40, 0x23, 0xc0, 0x02, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x2c, 0xa0, 0x0c, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x24, + 0xc0, 0x03, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x5b, 0x7e, 0x06, 0x20, + 0x00, 0x90, 0x63, 0xda, 0x5b, 0xcf, 0x01, 0x20, 0x00, 0x90, 0x68, 0xd6, + 0x38, 0x56, 0x02, 0x29, 0xe7, 0x67, 0x67, 0x63, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0x80, 0x23, 0x80, 0x03, 0x8d, 0x3a, + 0x00, 0x04, 0x8d, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x70, 0x06, 0x00, + 0x82, 0x0e, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0xc0, 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x03, 0x00, + 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, + 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x69, 0x31, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00 +}; +unsigned int adi_Gen9core_gen_len = 17556; diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/benchmark_extern.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/benchmark_extern.h index 7001fa3597..062d2c1757 100644 --- a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/benchmark_extern.h +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/benchmark_extern.h @@ -1,40 +1,35 @@ - - - +// linear algebra +// kernels namespace ns_2mm{int main(int argc, char *argv[]);}; -extern int main(int argc, char *argv[]); - namespace ns_3mm{int main(int argc, char *argv[]);}; -extern int main(int argc, char *argv[]); - namespace ns_atax{int main(int argc, char *argv[]);}; -extern int main(int argc, char *argv[]); - namespace ns_bicg{int main(int argc, char *argv[]);}; -extern int main(int argc, char *argv[]); - namespace ns_doitgen{int main(int argc, char *argv[]);}; -extern int main(int argc, char *argv[]); - namespace ns_gemm{int main(int argc, char *argv[]);}; -extern int main(int argc, char *argv[]); - - namespace ns_gemver{int main(int argc, char *argv[]);}; -extern int main(int argc, char *argv[]); - namespace ns_gesummv{int main(int argc, char *argv[]);}; -extern int main(int argc, char *argv[]); - namespace ns_mvt{int main(int argc, char *argv[]);}; -extern int main(int argc, char *argv[]); - namespace ns_syr2k{int main(int argc, char *argv[]);}; -extern int main(int argc, char *argv[]); - namespace ns_syrk{int main(int argc, char *argv[]);}; -extern int main(int argc, char *argv[]); - + +// solver +namespace ns_gramschmidt{int main(int argc, char *argv[]);}; +namespace ns_lu{int main(int argc, char *argv[]);}; + +// data mining +namespace ns_correlation{int main(int argc, char *argv[]);}; +namespace ns_covariance{int main(int argc, char *argv[]);}; + +// stencils +namespace ns_adi{int main(int argc, char *argv[]);}; +namespace ns_convolution_2d{int main(int argc, char *argv[]);}; +namespace ns_convolution_3d{int main(int argc, char *argv[]);}; +namespace ns_fdtd_2d{int main(int argc, char *argv[]);}; +namespace ns_jacobi_1d_imper{int main(int argc, char *argv[]);}; +namespace ns_jacobi_2d_imper{int main(int argc, char *argv[]);}; + + + diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.cc b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.cc new file mode 100644 index 0000000000..820486fa97 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.cc @@ -0,0 +1,323 @@ +/** + * 2DConvolution.c: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#include +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#else +#include "../../CL/cl.h" +#endif + +#define POLYBENCH_TIME 1 + +//select the OpenCL device to use (can be GPU, CPU, or Accelerator such as Intel Xeon Phi) +#define OPENCL_DEVICE_SELECTION CL_DEVICE_TYPE_GPU + +#include "2DConvolution.h" +#include "../../polybench.h" + +//define the error threshold for the results "not matching" +#define PERCENT_DIFF_ERROR_THRESHOLD 1.05 + +#define MAX_SOURCE_SIZE (0x100000) + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +namespace ns_convolution_2d { + +#include "2DConvolution_kernel.h" +#include "../../polybenchUtilFuncts.h" + + + +char str_temp[1024]; + +cl_platform_id platform_id; +cl_device_id device_id; +cl_uint num_devices; +cl_uint num_platforms; +cl_int errcode; +cl_context clGPUContext; +cl_kernel clKernel; +cl_command_queue clCommandQue; +cl_program clProgram; +cl_mem a_mem_obj; +cl_mem b_mem_obj; +cl_mem c_mem_obj; +FILE *fp; +char *source_str; +size_t source_size; + +#define RUN_ON_CPU + + +void compareResults(int ni, int nj, DATA_TYPE POLYBENCH_2D(B, NI, NJ, ni, nj), DATA_TYPE POLYBENCH_2D(B_outputFromGpu, NI, NJ, ni, nj)) +{ + int i, j, fail; + fail = 0; + + // Compare outputs from CPU and GPU + for (i=1; i < (ni-1); i++) + { + for (j=1; j < (nj-1); j++) + { + if (percentDiff(B[i][j], B_outputFromGpu[i][j]) > PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + } + + // Print results + printf("Non-Matching CPU-GPU Outputs Beyond Error Threshold of %4.2f Percent: %d\n", PERCENT_DIFF_ERROR_THRESHOLD, fail); +} + + +void read_cl_file() +{ + // Load the kernel source code into the array source_str + // fp = fopen("2DConvolution.cl", "r"); + // if (!fp) { + // fprintf(stdout, "Failed to load kernel.\n"); + // exit(1); + // } + // source_str = (char*)malloc(MAX_SOURCE_SIZE); + // source_size = fread( source_str, 1, MAX_SOURCE_SIZE, fp); + // fclose( fp ); +} + + +void init(int ni, int nj, DATA_TYPE POLYBENCH_2D(A, NI, NJ, ni, nj)) +{ + int i, j; + + for (i = 0; i < ni; ++i) + { + for (j = 0; j < nj; ++j) + { + A[i][j] = (float)rand()/RAND_MAX; + } + } +} + + +void cl_initialization() +{ + + // Get platform and device information + errcode = clGetPlatformIDs(1, &platform_id, &num_platforms); + if(errcode == CL_SUCCESS) printf("number of platforms is %d\n",num_platforms); + else printf("Error getting platform IDs\n"); + + errcode = clGetPlatformInfo(platform_id,CL_PLATFORM_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform name is %s\n",str_temp); + else printf("Error getting platform name\n"); + + errcode = clGetPlatformInfo(platform_id, CL_PLATFORM_VERSION, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform version is %s\n",str_temp); + else printf("Error getting platform version\n"); + + errcode = clGetDeviceIDs( platform_id, OPENCL_DEVICE_SELECTION, 1, &device_id, &num_devices); + if(errcode == CL_SUCCESS) printf("number of devices is %d\n", num_devices); + else printf("Error getting device IDs\n"); + + errcode = clGetDeviceInfo(device_id,CL_DEVICE_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("device name is %s\n",str_temp); + else printf("Error getting device name\n"); + + // Create an OpenCL context + clGPUContext = clCreateContext( NULL, 1, &device_id, NULL, NULL, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating context\n"); + + //Create a command-queue + clCommandQue = clCreateCommandQueue(clGPUContext, device_id, 0, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating command queue\n"); +} + + +void cl_mem_init(DATA_TYPE POLYBENCH_2D(A, NI, NJ, ni, nj)) +{ + a_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_ONLY, sizeof(DATA_TYPE) * NI * NJ, NULL, &errcode); + b_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * NI * NJ, NULL, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating buffers\n"); + + errcode = clEnqueueWriteBuffer(clCommandQue, a_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * NI * NJ, A, 0, NULL, NULL); + if(errcode != CL_SUCCESS)printf("Error in writing buffers\n"); + } + + +void cl_load_prog() +{ + // Create a program from the kernel source + const size_t kernel_size = __2DConvolution_Gen9core_gen_len; + const unsigned char* kernel_bin = __2DConvolution_Gen9core_gen; + clProgram = clCreateProgramWithBinary(clGPUContext, 1, &device_id, &kernel_size, &kernel_bin, NULL, &errcode); + // clProgram = clCreateProgramWithSource(clGPUContext, 1, (const char **)&source_str, (const size_t *)&source_size, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating program\n"); + + // Build the program + errcode = clBuildProgram(clProgram, 1, &device_id, NULL, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in building program\n"); + + // Create the OpenCL kernel + clKernel = clCreateKernel(clProgram, "Convolution2D_kernel", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel\n"); + + clFinish(clCommandQue); +} + + +void cl_launch_kernel(int ni, int nj) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = DIM_LOCAL_WORK_GROUP_Y; + globalWorkSize[0] = (size_t)ceil(((float)NI) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + globalWorkSize[1] = (size_t)ceil(((float)NJ) / ((float)DIM_LOCAL_WORK_GROUP_Y)) * DIM_LOCAL_WORK_GROUP_Y; + + /* Start timer. */ + polybench_start_instruments; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode = clSetKernelArg(clKernel, 2, sizeof(int), &ni); + errcode |= clSetKernelArg(clKernel, 3, sizeof(int), &nj); + + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); + + /* Stop and print timer. */ + printf("GPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; +} + +void cl_clean_up() +{ + // Clean up + errcode = clFlush(clCommandQue); + errcode = clFinish(clCommandQue); + errcode = clReleaseKernel(clKernel); + errcode = clReleaseProgram(clProgram); + errcode = clReleaseMemObject(a_mem_obj); + errcode = clReleaseMemObject(b_mem_obj); + errcode = clReleaseCommandQueue(clCommandQue); + errcode = clReleaseContext(clGPUContext); + if(errcode != CL_SUCCESS) printf("Error in cleanup\n"); +} + +void conv2D(int ni, int nj, DATA_TYPE POLYBENCH_2D(A, NI, NJ, ni, nj), DATA_TYPE POLYBENCH_2D(B, NI, NJ, ni, nj)) +{ + int i, j; + DATA_TYPE c11, c12, c13, c21, c22, c23, c31, c32, c33; + + c11 = +0.2; c21 = +0.5; c31 = -0.8; + c12 = -0.3; c22 = +0.6; c32 = -0.9; + c13 = +0.4; c23 = +0.7; c33 = +0.10; + + + for (i = 1; i < _PB_NI - 1; ++i) // 0 + { + for (j = 1; j < _PB_NJ - 1; ++j) // 1 + { + B[i][j] = c11 * A[(i - 1)][(j - 1)] + c12 * A[(i + 0)][(j - 1)] + c13 * A[(i + 1)][(j - 1)] + + c21 * A[(i - 1)][(j + 0)] + c22 * A[(i + 0)][(j + 0)] + c23 * A[(i + 1)][(j + 0)] + + c31 * A[(i - 1)][(j + 1)] + c32 * A[(i + 0)][(j + 1)] + c33 * A[(i + 1)][(j + 1)]; + } + } +} + + +/* DCE code. Must scan the entire live-out data. + Can be used also to check the correctness of the output. */ +static +void print_array(int ni, int nj, + DATA_TYPE POLYBENCH_2D(B,NI,NJ,ni,nj)) +{ + int i, j; + + for (i = 0; i < ni; i++) + for (j = 0; j < nj; j++) { + fprintf (stderr, DATA_PRINTF_MODIFIER, B[i][j]); + if ((i * ni + j) % 20 == 0) fprintf (stderr, "\n"); + } + fprintf (stderr, "\n"); +} + + +int main(int argc, char *argv[]) +{ + /* Retrieve problem size */ + int ni = NI; + int nj = NJ; + + POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NJ,ni,nj); + POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,NI,NJ,ni,nj); + POLYBENCH_2D_ARRAY_DECL(B_outputFromGpu,DATA_TYPE,NI,NJ,ni,nj); + + init(ni, nj, POLYBENCH_ARRAY(A)); + + read_cl_file(); + cl_initialization(); + cl_mem_init(POLYBENCH_ARRAY(A)); + cl_load_prog(); + + cl_launch_kernel(ni, nj); + + errcode = clEnqueueReadBuffer(clCommandQue, b_mem_obj, CL_TRUE, 0, NI*NJ*sizeof(DATA_TYPE), POLYBENCH_ARRAY(B_outputFromGpu), 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); + + #ifdef RUN_ON_CPU + + /* Start timer. */ + polybench_start_instruments; + + conv2D(ni, nj, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B)); + + /* Stop and print timer. */ + printf("CPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + compareResults(ni, nj, POLYBENCH_ARRAY(B), POLYBENCH_ARRAY(B_outputFromGpu)); + + #else //prevent dead code elimination + + polybench_prevent_dce(print_array(ni, nj, POLYBENCH_ARRAY(B_outputFromGpu))); + + #endif //RUN_ON_CPU + + + cl_clean_up(); + + POLYBENCH_FREE_ARRAY(A); + POLYBENCH_FREE_ARRAY(B); + POLYBENCH_FREE_ARRAY(B_outputFromGpu); + + return 0; +} + +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.cl b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.cl new file mode 100644 index 0000000000..1c7a6fb795 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.cl @@ -0,0 +1,35 @@ +/** + * 2DConvolution.cl: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +/* Can switch DATA_TYPE between float and double */ +typedef float DATA_TYPE; + +__kernel void Convolution2D_kernel(__global DATA_TYPE *A, __global DATA_TYPE *B, int ni, int nj) +{ + int j = get_global_id(0); + int i = get_global_id(1); + + DATA_TYPE c11, c12, c13, c21, c22, c23, c31, c32, c33; + c11 = +0.2; c21 = +0.5; c31 = -0.8; + c12 = -0.3; c22 = +0.6; c32 = -0.9; + c13 = +0.4; c23 = +0.7; c33 = +0.10; + if ((i < (ni-1)) && (j < (nj - 1)) && (i > 0) && (j > 0)) + { + B[i*nj + j] = c11 * A[(i - 1) * nj + (j - 1)] + c21 * A[(i - 1) * nj + (j + 0)] + c31 * A[(i - 1) * nj + (j + 1)] + + c12 * A[(i + 0) * nj + (j - 1)] + c22 * A[(i + 0) * nj + (j + 0)] + c32 * A[(i + 0) * nj + (j + 1)] + + c13 * A[(i + 1) * nj + (j - 1)] + c23 * A[(i + 1) * nj + (j + 0)] + c33 * A[(i + 1) * nj + (j + 1)]; + } +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.h new file mode 100644 index 0000000000..d76010c385 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution.h @@ -0,0 +1,61 @@ +/** + * 2DConvolution.h: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#ifndef TWODCONV_H +# define TWODCONV_H + +/* Default to STANDARD_DATASET. */ +# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET) +# define MINI_DATASET +# endif + +/* Do not define anything if the user manually defines the size. */ +# if !defined(NI) && !defined(NJ) +/* Define the possible dataset sizes. */ +# ifdef MINI_DATASET +#define NI 1024 +#define NJ 1024 +# endif + +# ifdef SMALL_DATASET +#define NI 2048 +#define NJ 2048 +# endif + +# ifdef STANDARD_DATASET /* Default if unspecified. */ +#define NI 4096 +#define NJ 4096 +# endif + +# ifdef LARGE_DATASET +#define NI 8192 +#define NJ 8192 +# endif + +# ifdef EXTRALARGE_DATASET +#define NI 16384 +#define NJ 16384 +# endif +# endif /* !N */ + +# define _PB_NI POLYBENCH_LOOP_BOUND(NI,ni) +# define _PB_NJ POLYBENCH_LOOP_BOUND(NJ,nj) + +# ifndef DATA_TYPE +# define DATA_TYPE float +# define DATA_PRINTF_MODIFIER "%0.2lf " +# endif + +/* Thread block dimensions */ +#define DIM_LOCAL_WORK_GROUP_X 32 +#define DIM_LOCAL_WORK_GROUP_Y 8 + + +#endif /* !TWODCONV*/ diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution_kernel.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution_kernel.h new file mode 100644 index 0000000000..449a5c0b07 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-2d/2DConvolution_kernel.h @@ -0,0 +1,255 @@ +unsigned char __2DConvolution_Gen9core_gen[] = { + 0x43, 0x54, 0x4e, 0x49, 0x39, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7c, 0xf4, 0x52, 0xd4, 0xe9, 0x80, 0xcb, 0x2d, + 0x49, 0x0f, 0x54, 0x67, 0x18, 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x00, + 0xc0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x18, 0x05, 0x00, 0x00, 0x43, 0x6f, 0x6e, 0x76, + 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x44, 0x5f, 0x6b, 0x65, + 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0xa0, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x80, 0x2d, 0x20, 0x00, 0x7e, 0x09, 0x05, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x20, 0x24, 0x01, 0x00, 0x0a, + 0xb8, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x2c, 0x0a, 0xd0, 0x20, + 0x10, 0x01, 0x45, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x4c, 0x16, 0xc4, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2f, 0xc0, 0x0f, 0x00, 0x12, + 0x40, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, + 0xc0, 0x0f, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x21, 0xc0, 0x00, 0x00, 0x12, 0x80, 0x00, 0xb1, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2f, 0xc0, 0x00, 0x00, 0x12, + 0x60, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x03, 0x28, 0x0a, 0x40, 0x2f, + 0x80, 0x0f, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x0c, 0x0a, 0x07, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, + 0xc0, 0x01, 0x8d, 0x0a, 0xe4, 0x00, 0x00, 0x00, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x76, 0x78, 0x07, 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, + 0x40, 0x0f, 0x8d, 0x0a, 0xd4, 0x00, 0x00, 0x00, 0x10, 0x16, 0x73, 0x25, + 0x07, 0x00, 0x0c, 0x06, 0x02, 0x20, 0x81, 0x00, 0x48, 0x12, 0x40, 0x2a, + 0xc4, 0x0f, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x81, 0x05, + 0x22, 0x0a, 0x00, 0x20, 0x00, 0x02, 0x8d, 0x0a, 0xd0, 0x00, 0x00, 0x00, + 0x10, 0x19, 0x6f, 0x25, 0x07, 0x00, 0x76, 0x06, 0x10, 0x20, 0x81, 0x03, + 0x22, 0x0a, 0x00, 0x20, 0x00, 0x02, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x81, 0x03, 0x20, 0x0a, 0x00, 0x20, 0xc0, 0x0e, 0x8d, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, 0x4a, 0x12, 0x00, 0x28, + 0xc4, 0x0f, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x81, 0x03, + 0x20, 0x0a, 0x00, 0x20, 0x80, 0x01, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x20, 0x80, 0x02, 0x40, 0x12, 0x00, 0x20, 0x40, 0x0a, 0xb1, 0x12, + 0x00, 0x08, 0xb1, 0x00, 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0x98, 0x03, 0x00, 0x00, 0x98, 0x03, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x2e, 0xc0, 0x0e, 0x8d, 0x1e, 0xff, 0xff, 0xff, 0xff, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0x00, 0x02, 0x8d, 0x1e, + 0xff, 0xff, 0xff, 0xff, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2e, + 0x80, 0x01, 0x8d, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x22, 0x40, 0x0f, 0x8d, 0x1e, 0xff, 0xff, 0xff, 0xff, + 0x41, 0x96, 0x71, 0x20, 0x07, 0x74, 0x74, 0x08, 0x41, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x22, 0x40, 0x02, 0x8d, 0x0a, 0x14, 0x01, 0x00, 0x00, + 0x41, 0x96, 0x71, 0x20, 0x07, 0x26, 0x76, 0x08, 0x41, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x2d, 0x00, 0x02, 0x8d, 0x0a, 0x14, 0x01, 0x00, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe7, 0x74, 0x74, 0x72, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x22, 0x40, 0x02, 0x8d, 0x0a, 0x80, 0x02, 0x8d, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe7, 0x28, 0x26, 0x72, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x20, 0x2d, 0x60, 0x0d, 0x8d, 0x0a, 0x80, 0x02, 0x8d, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2e, 0x80, 0x0e, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, + 0x40, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x2a, 0xc0, 0x0e, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x25, 0x00, 0x05, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x75, 0x20, 0x07, 0x74, 0x74, 0x08, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0x40, 0x02, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x25, + 0x00, 0x02, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x20, 0x2d, 0x20, 0x0d, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x22, 0x80, 0x0e, 0x00, 0x06, + 0x00, 0x58, 0x60, 0x04, 0x41, 0x96, 0x71, 0x20, 0x07, 0x57, 0x57, 0x08, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x23, 0x40, 0x02, 0x00, 0x06, + 0x00, 0x58, 0x60, 0x04, 0x40, 0x96, 0x75, 0x20, 0x07, 0x28, 0x28, 0x08, + 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x25, 0xc0, 0x05, 0x8d, 0x0a, + 0x14, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x2d, + 0x20, 0x0d, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0xe7, 0x57, 0x57, 0x72, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x2c, + 0x00, 0x05, 0x00, 0x06, 0x00, 0x58, 0x60, 0x04, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x25, 0xc0, 0x05, 0x8d, 0x0a, 0x80, 0x02, 0x8d, 0x00, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xa0, 0x2b, 0x20, 0x0d, 0x00, 0x06, + 0x00, 0x58, 0x60, 0x04, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x2a, + 0xe0, 0x0a, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xec, 0x3e, 0xe0, 0x2d, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x25, 0xc0, 0x05, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xec, 0x3e, 0xe4, 0x2d, + 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0xbf, 0x01, 0x00, 0x00, 0x00, + 0xec, 0x3e, 0xc4, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x99, 0x99, 0xbe, + 0x40, 0x96, 0x75, 0x20, 0x07, 0x57, 0x57, 0x08, 0x01, 0x00, 0x00, 0x00, + 0xec, 0x3e, 0xc8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x99, 0x19, 0x3f, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x25, 0xc0, 0x05, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xec, 0x3e, 0xcc, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0xbf, 0x01, 0x00, 0x00, 0x00, + 0xec, 0x3e, 0xe8, 0x2d, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0xcc, 0x3e, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x26, 0xe0, 0x0a, 0x00, 0x06, + 0x00, 0x58, 0x60, 0x04, 0x01, 0x00, 0x00, 0x00, 0xec, 0x3e, 0xec, 0x2d, + 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x3f, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x26, 0xc0, 0x05, 0x00, 0x06, 0x00, 0x58, 0x60, 0x04, + 0x40, 0x96, 0x01, 0x20, 0xe7, 0x3e, 0x26, 0x0c, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x2a, 0x60, 0x0d, 0x8d, 0x0a, 0x40, 0x0f, 0x8d, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xec, 0x3e, 0xf0, 0x2d, 0x00, 0x00, 0x00, 0x00, + 0xcd, 0xcc, 0xcc, 0x3d, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x27, + 0xc0, 0x07, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x2a, 0x60, 0x0a, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x96, 0x79, 0x20, 0x07, 0x3e, 0x3e, 0x08, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x2a, 0x60, 0x0a, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x41, 0x00, 0x80, 0x00, 0xe8, 0x3a, 0x00, 0x2e, 0x00, 0x03, 0x8d, 0x3e, + 0x00, 0x00, 0x00, 0x3f, 0x41, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x40, 0x24, + 0xc0, 0x03, 0x8d, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x5b, 0x02, 0x07, 0x20, + 0x02, 0x80, 0x5b, 0xde, 0x5b, 0x23, 0x02, 0x20, 0x02, 0x10, 0x71, 0xde, + 0x5b, 0x42, 0x02, 0x20, 0x02, 0x81, 0x6b, 0xde, 0x5b, 0xd3, 0x06, 0x20, + 0x02, 0x11, 0x81, 0xde, 0x5b, 0xa2, 0x02, 0x20, 0x02, 0x21, 0x8d, 0x0d, + 0x5b, 0xb3, 0x05, 0x20, 0x02, 0x69, 0x77, 0x0d, 0x5b, 0xa2, 0x02, 0x20, + 0x02, 0x52, 0x95, 0x0d, 0x5b, 0xb3, 0x05, 0x20, 0x02, 0xda, 0x7e, 0x0d, + 0x5b, 0x92, 0x05, 0x20, 0x02, 0x53, 0x9d, 0x0d, 0x5b, 0xc3, 0x02, 0x20, + 0x02, 0xdb, 0x86, 0x0d, 0x5b, 0x52, 0x05, 0x20, 0x02, 0xca, 0xc2, 0xde, + 0x5b, 0xc3, 0x03, 0x20, 0x02, 0x62, 0xd9, 0xde, 0x5b, 0x52, 0x05, 0x20, + 0x02, 0xab, 0xca, 0xde, 0x5b, 0xc3, 0x03, 0x20, 0x02, 0xe3, 0xe1, 0xde, + 0x5b, 0x52, 0x05, 0x20, 0x02, 0xac, 0xd2, 0xde, 0x5b, 0xc3, 0x03, 0x20, + 0x02, 0xe4, 0xe9, 0xde, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x50, 0x05, 0x00, + 0xc2, 0x07, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0xc0, 0x03, 0x00, 0x62, 0x0a, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x05, 0x00, + 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, + 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x69, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x6a, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00 +}; +unsigned int __2DConvolution_Gen9core_gen_len = 3020; diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.cc b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.cc new file mode 100644 index 0000000000..a4a70984f1 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.cc @@ -0,0 +1,344 @@ +/** + * 3DConvolution.c: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#include +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#else +#include "../../CL/cl.h" +#endif + +#define POLYBENCH_TIME 1 + +//select the OpenCL device to use (can be GPU, CPU, or Accelerator such as Intel Xeon Phi) +#define OPENCL_DEVICE_SELECTION CL_DEVICE_TYPE_GPU + +#include "3DConvolution.h" +#include "../../polybench.h" + +//define the error threshold for the results "not matching" +#define PERCENT_DIFF_ERROR_THRESHOLD 1.05 + +#define MAX_SOURCE_SIZE (0x100000) + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +namespace ns_convolution_3d { + +#include "3DConvolution_kernel.h" +#include "../../polybenchUtilFuncts.h" + + +char str_temp[1024]; + +cl_platform_id platform_id; +cl_device_id device_id; +cl_uint num_devices; +cl_uint num_platforms; +cl_int errcode; +cl_context clGPUContext; +cl_kernel clKernel; +cl_command_queue clCommandQue; +cl_program clProgram; +cl_mem a_mem_obj; +cl_mem b_mem_obj; +FILE *fp; +char *source_str; +size_t source_size; + +#define RUN_ON_CPU + + +void read_cl_file() +{ + // Load the kernel source code into the array source_str + // fp = fopen("3DConvolution.cl", "r"); + // if (!fp) { + // fprintf(stderr, "Failed to load kernel.\n"); + // exit(1); + // } + // source_str = (char*)malloc(MAX_SOURCE_SIZE); + // source_size = fread( source_str, 1, MAX_SOURCE_SIZE, fp); + // fclose( fp ); +} + + +void init(int ni, int nj, int nk, DATA_TYPE POLYBENCH_3D(A, NI, NJ, NK, ni, nj, nk)) +{ + int i, j, k; + + for (i = 0; i < ni; ++i) + { + for (j = 0; j < nj; ++j) + { + for (k = 0; k < nk; ++k) + { + A[i][j][k] = i % 12 + 2 * (j % 7) + 3 * (k % 13); + } + } + } +} + + +void cl_initialization() +{ + // Get platform and device information + errcode = clGetPlatformIDs(1, &platform_id, &num_platforms); + if(errcode == CL_SUCCESS) printf("number of platforms is %d\n",num_platforms); + else printf("Error getting platform IDs\n"); + + errcode = clGetPlatformInfo(platform_id,CL_PLATFORM_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform name is %s\n",str_temp); + else printf("Error getting platform name\n"); + + errcode = clGetPlatformInfo(platform_id, CL_PLATFORM_VERSION, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform version is %s\n",str_temp); + else printf("Error getting platform version\n"); + + errcode = clGetDeviceIDs( platform_id, OPENCL_DEVICE_SELECTION, 1, &device_id, &num_devices); + if(errcode == CL_SUCCESS) printf("number of devices is %d\n", num_devices); + else printf("Error getting device IDs\n"); + + errcode = clGetDeviceInfo(device_id,CL_DEVICE_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("device name is %s\n",str_temp); + else printf("Error getting device name\n"); + + // Create an OpenCL context + clGPUContext = clCreateContext( NULL, 1, &device_id, NULL, NULL, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating context\n"); + + //Create a command-queue + clCommandQue = clCreateCommandQueue(clGPUContext, device_id, 0, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating command queue\n"); +} + + +void cl_mem_init(DATA_TYPE POLYBENCH_3D(A, NI, NJ, NK, ni, nj, nk), DATA_TYPE POLYBENCH_3D(B, NI, NJ, NK, ni, nj, nk)) +{ + a_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_ONLY, sizeof(DATA_TYPE) * NI * NJ * NK, NULL, &errcode); + b_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * NI * NJ * NK, NULL, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating buffers\n"); + + errcode = clEnqueueWriteBuffer(clCommandQue, a_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * NI * NJ * NK, A, 0, NULL, NULL); + errcode = clEnqueueWriteBuffer(clCommandQue, b_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * NI * NJ * NK, B, 0, NULL, NULL); + if(errcode != CL_SUCCESS)printf("Error in writing buffers\n"); +} + + +void cl_load_prog() +{ + // Create a program from the kernel source + const size_t kernel_size = __3DConvolution_Gen9core_gen_len; + const unsigned char* kernel_bin = __3DConvolution_Gen9core_gen; + clProgram = clCreateProgramWithBinary(clGPUContext, 1, &device_id, &kernel_size, &kernel_bin, NULL, &errcode); + // clProgram = clCreateProgramWithSource(clGPUContext, 1, (const char **)&source_str, (const size_t *)&source_size, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating program\n"); + + // Build the program + errcode = clBuildProgram(clProgram, 1, &device_id, NULL, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in building program\n"); + + // Create the OpenCL kernel + clKernel = clCreateKernel(clProgram, "Convolution3D_kernel", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel\n"); + clFinish(clCommandQue); +} + + +void cl_launch_kernel(int ni, int nj, int nk) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = DIM_LOCAL_WORK_GROUP_Y; + globalWorkSize[0] = (size_t)ceil(((float)NK) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + globalWorkSize[1] = (size_t)ceil(((float)NJ) / ((float)DIM_LOCAL_WORK_GROUP_Y)) * DIM_LOCAL_WORK_GROUP_Y; + + /* Start timer. */ + polybench_start_instruments; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode |= clSetKernelArg(clKernel, 2, sizeof(int), &ni); + errcode |= clSetKernelArg(clKernel, 3, sizeof(int), &nj); + errcode |= clSetKernelArg(clKernel, 4, sizeof(int), &nk); + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + int i; + for (i = 1; i < NI - 1; ++i) // 0 + { + // set the current value of 'i' for the argument in the kernel + errcode |= clSetKernelArg(clKernel, 5, sizeof(int), &i); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + } + + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); + + /* Stop and print timer. */ + printf("GPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; +} + + +void cl_clean_up() +{ + // Clean up + errcode = clFlush(clCommandQue); + errcode = clFinish(clCommandQue); + errcode = clReleaseKernel(clKernel); + errcode = clReleaseProgram(clProgram); + errcode = clReleaseMemObject(a_mem_obj); + errcode = clReleaseMemObject(b_mem_obj); + errcode = clReleaseCommandQueue(clCommandQue); + errcode = clReleaseContext(clGPUContext); + if(errcode != CL_SUCCESS) printf("Error in cleanup\n"); +} + + +void compareResults(int ni, int nj, int nk, DATA_TYPE POLYBENCH_3D(B, NI, NJ, NK, ni, nj, nk), DATA_TYPE POLYBENCH_3D(B_outputFromGpu, NI, NJ, NK, ni, nj, nk)) +{ + int i, j, k, fail; + fail = 0; + + // Compare result from cpu and gpu + for (i = 1; i < ni - 1; ++i) // 0 + { + for (j = 1; j < nj - 1; ++j) // 1 + { + for (k = 1; k < nk - 1; ++k) // 2 + { + if (percentDiff(B[i][j][k], B_outputFromGpu[i][j][k]) > PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + } + } + + // Print results + printf("Non-Matching CPU-GPU Outputs Beyond Error Threshold of %4.2f Percent: %d\n", PERCENT_DIFF_ERROR_THRESHOLD, fail); +} + + +void conv3D(int ni, int nj, int nk, DATA_TYPE POLYBENCH_3D(A, NI, NJ, NK, ni, nj, nk), DATA_TYPE POLYBENCH_3D(B, NI, NJ, NK, ni, nj, nk)) +{ + int i, j, k; + DATA_TYPE c11, c12, c13, c21, c22, c23, c31, c32, c33; + + c11 = +2; c21 = +5; c31 = -8; + c12 = -3; c22 = +6; c32 = -9; + c13 = +4; c23 = +7; c33 = +10; + + for (i = 1; i < _PB_NI - 1; ++i) // 0 + { + for (j = 1; j < _PB_NJ - 1; ++j) // 1 + { + for (k = 1; k < _PB_NK -1; ++k) // 2 + { + B[i][j][k] = c11 * A[(i - 1)][(j - 1)][(k - 1)] + c13 * A[(i + 1)][(j - 1)][(k - 1)] + + c21 * A[(i - 1)][(j - 1)][(k - 1)] + c23 * A[(i + 1)][(j - 1)][(k - 1)] + + c31 * A[(i - 1)][(j - 1)][(k - 1)] + c33 * A[(i + 1)][(j - 1)][(k - 1)] + + c12 * A[(i + 0)][(j - 1)][(k + 0)] + c22 * A[(i + 0)][(j + 0)][(k + 0)] + + c32 * A[(i + 0)][(j + 1)][(k + 0)] + c11 * A[(i - 1)][(j - 1)][(k + 1)] + + c13 * A[(i + 1)][(j - 1)][(k + 1)] + c21 * A[(i - 1)][(j + 0)][(k + 1)] + + c23 * A[(i + 1)][(j + 0)][(k + 1)] + c31 * A[(i - 1)][(j + 1)][(k + 1)] + + c33 * A[(i + 1)][(j + 1)][(k + 1)]; + } + } + } +} + + +/* DCE code. Must scan the entire live-out data. + Can be used also to check the correctness of the output. */ +static +void print_array(int ni, int nj, int nk, + DATA_TYPE POLYBENCH_3D(B,NI,NJ,NK,ni,nj,nk)) +{ + int i, j, k; + + for (i = 0; i < ni; i++) + for (j = 0; j < nj; j++) + for (k = 0; k < nk; k++) + { + fprintf (stderr, DATA_PRINTF_MODIFIER, B[i][j][k]); + if ((i * (nj*nk) + j*nk + k) % 20 == 0) fprintf (stderr, "\n"); + } + fprintf (stderr, "\n"); +} + + +int main(int argc, char *argv[]) +{ + int ni = NI; + int nj = NJ; + int nk = NK; + + POLYBENCH_3D_ARRAY_DECL(A,DATA_TYPE,NI,NJ,NK,ni,nj,nk); + POLYBENCH_3D_ARRAY_DECL(B,DATA_TYPE,NI,NJ,NK,ni,nj,nk); + POLYBENCH_3D_ARRAY_DECL(B_outputFromGpu,DATA_TYPE,NI,NJ,NK,ni,nj,nk); + + init(ni, nj, nk, POLYBENCH_ARRAY(A)); + + read_cl_file(); + cl_initialization(); + cl_mem_init(POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B)); + cl_load_prog(); + + cl_launch_kernel(ni, nj, nk); + + errcode = clEnqueueReadBuffer(clCommandQue, b_mem_obj, CL_TRUE, 0, NI * NJ * NK * sizeof(DATA_TYPE), POLYBENCH_ARRAY(B_outputFromGpu), 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); + + #ifdef RUN_ON_CPU + + /* Start timer. */ + polybench_start_instruments; + + conv3D(ni, nj, nk, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B)); + + /* Stop and print timer. */ + printf("CPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + compareResults(ni, nj, nk, POLYBENCH_ARRAY(B), POLYBENCH_ARRAY(B_outputFromGpu)); + + #else //prevent dead code elimination + + polybench_prevent_dce(print_array(ni, nj, nk, POLYBENCH_ARRAY(B_outputFromGpu))); + + #endif //RUN_ON_CPU + + cl_clean_up(); + + POLYBENCH_FREE_ARRAY(A); + POLYBENCH_FREE_ARRAY(B); + POLYBENCH_FREE_ARRAY(B_outputFromGpu); + + return 0; +} + +} \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.cl b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.cl new file mode 100644 index 0000000000..48127a9c98 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.cl @@ -0,0 +1,46 @@ +/** + * 3DConvolution.cl: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +typedef float DATA_TYPE; + +__kernel void Convolution3D_kernel(__global DATA_TYPE *A, __global DATA_TYPE *B, int ni, int nj, int nk, int i) +{ + + int k = get_global_id(0); + int j = get_global_id(1); + + DATA_TYPE c11, c12, c13, c21, c22, c23, c31, c32, c33; + c11 = +2; c21 = +5; c31 = -8; + c12 = -3; c22 = +6; c32 = -9; + c13 = +4; c23 = +7; c33 = +10; + + // Do the operation + if ((i < (ni - 1)) && (j < (nj - 1)) && (k < (nk - 1)) && (i > 0) && (j > 0) && (k > 0)) + { + B[i*(nk * nj) + j*nk + k] = c11 * A[(i - 1)*(nk * nj) + (j - 1)*nk + (k - 1)] + c13 * A[(i + 1)*(nk * nj) + (j - 1)*nk + (k - 1)] + + c21 * A[(i - 1)*(nk * nj) + (j - 1)*nk + (k - 1)] + c23 * A[(i + 1)*(nk * nj) + (j - 1)*nk + (k - 1)] + + c31 * A[(i - 1)*(nk * nj) + (j - 1)*nk + (k - 1)] + c33 * A[(i + 1)*(nk * nj) + (j - 1)*nk + (k - 1)] + + c12 * A[(i + 0)*(nk * nj) + (j - 1)*nk + (k + 0)] + c22 * A[(i + 0)*(nk * nj) + (j + 0)*nk + (k + 0)] + + c32 * A[(i + 0)*(nk * nj) + (j + 1)*nk + (k + 0)] + c11 * A[(i - 1)*(nk * nj) + (j - 1)*nk + (k + 1)] + + c13 * A[(i + 1)*(nk * nj) + (j - 1)*nk + (k + 1)] + c21 * A[(i - 1)*(nk * nj) + (j + 0)*nk + (k + 1)] + + c23 * A[(i + 1)*(nk * nj) + (j + 0)*nk + (k + 1)] + c31 * A[(i - 1)*(nk * nj) + (j + 1)*nk + (k + 1)] + + c33 * A[(i + 1)*(nk * nj) + (j + 1)*nk + (k + 1)]; + } + else + { + B[i*(nk * nj) + j*nk + k] = 0; + } +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.h new file mode 100644 index 0000000000..ac37d045bb --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution.h @@ -0,0 +1,67 @@ +/** + * 3DConvolution.h: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#ifndef THREEDCONV_H +# define THREEDCONV_H + +/* Default to STANDARD_DATASET. */ +# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET) +# define MINI_DATASET +# endif + +/* Do not define anything if the user manually defines the size. */ +# if !defined(NI) && !defined(NJ) && !defined(NK) +/* Define the possible dataset sizes. */ +# ifdef MINI_DATASET +#define NI 64 +#define NJ 64 +#define NK 64 +# endif + +# ifdef SMALL_DATASET +#define NI 128 +#define NJ 128 +#define NK 128 +# endif + +# ifdef STANDARD_DATASET /* Default if unspecified. */ +#define NI 256 +#define NJ 256 +#define NK 256 +# endif + +# ifdef LARGE_DATASET +#define NI 384 +#define NJ 384 +#define NK 384 +# endif + +# ifdef EXTRALARGE_DATASET +#define NI 512 +#define NJ 512 +#define NK 512 +# endif +# endif /* !N */ + +# define _PB_NI POLYBENCH_LOOP_BOUND(NI,ni) +# define _PB_NJ POLYBENCH_LOOP_BOUND(NJ,nj) +# define _PB_NK POLYBENCH_LOOP_BOUND(NK,nk) + +# ifndef DATA_TYPE +# define DATA_TYPE float +# define DATA_PRINTF_MODIFIER "%0.2lf " +# endif + +/* Thread block dimensions */ +#define DIM_LOCAL_WORK_GROUP_X 32 +#define DIM_LOCAL_WORK_GROUP_Y 8 + + +#endif /* !THREEDCONV*/ \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution_kernel.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution_kernel.h new file mode 100644 index 0000000000..854fb9308e --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/convolution-3d/3DConvolution_kernel.h @@ -0,0 +1,386 @@ +unsigned char __3DConvolution_Gen9core_gen[] = { + 0x43, 0x54, 0x4e, 0x49, 0x39, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xce, 0xba, 0xf2, 0xc5, 0x10, 0x6a, 0x77, 0x25, + 0x5e, 0xbd, 0x8b, 0xef, 0x18, 0x00, 0x00, 0x00, 0xe8, 0x05, 0x00, 0x00, + 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x68, 0x0a, 0x00, 0x00, 0x43, 0x6f, 0x6e, 0x76, + 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x33, 0x44, 0x5f, 0x6b, 0x65, + 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0x80, 0x27, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xe0, 0x28, + 0x2c, 0x01, 0x00, 0x0a, 0x98, 0x07, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xa0, 0x20, 0x28, 0x01, 0x00, 0x0a, 0x84, 0x07, 0x00, 0x00, + 0x40, 0x00, 0x20, 0x00, 0x2c, 0x0a, 0x80, 0x29, 0x10, 0x01, 0x45, 0x1e, + 0xff, 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x80, 0x21, + 0x18, 0x01, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x4c, 0x16, 0xa0, 0x29, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x29, 0xe0, 0x08, 0x00, 0x12, + 0x80, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x29, + 0xe0, 0x08, 0x00, 0x12, 0x60, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x28, 0xa0, 0x00, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x12, + 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x27, + 0x40, 0x09, 0x8d, 0x0a, 0xe4, 0x00, 0x00, 0x00, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x41, 0x48, 0x07, 0x40, 0x20, 0x80, 0x03, 0x28, 0x0a, 0xa0, 0x27, + 0xa0, 0x08, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x43, 0x0a, 0x07, 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, + 0xe0, 0x07, 0x8d, 0x0a, 0x84, 0x09, 0x00, 0x00, 0x10, 0x16, 0x2f, 0x25, + 0x07, 0x00, 0x41, 0x4c, 0x02, 0x20, 0x81, 0x00, 0x48, 0x12, 0xc0, 0x29, + 0xa0, 0x09, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x81, 0x03, + 0x22, 0x0a, 0x00, 0x20, 0x80, 0x09, 0x00, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x10, 0x19, 0x7b, 0x23, 0x00, 0x00, 0x4c, 0x08, 0x10, 0x20, 0x81, 0x05, + 0x22, 0x0a, 0x00, 0x20, 0xa0, 0x07, 0x8d, 0x0a, 0x80, 0x01, 0x00, 0x00, + 0x10, 0x19, 0x03, 0x25, 0x07, 0x00, 0x43, 0x0c, 0x10, 0x20, 0x81, 0x03, + 0x22, 0x0a, 0x00, 0x20, 0x1c, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x81, 0x03, 0x20, 0x0a, 0x00, 0x20, 0x1c, 0x01, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x81, 0x03, 0x22, 0x0a, 0x00, 0x20, + 0xe0, 0x07, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x81, 0x03, + 0x20, 0x0a, 0x00, 0x20, 0x20, 0x08, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x20, 0x81, 0x00, 0x4a, 0x12, 0xa0, 0x21, 0xa0, 0x09, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x81, 0x03, 0x20, 0x0a, 0x00, 0x20, + 0x60, 0x08, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x80, 0x02, + 0x40, 0x12, 0x00, 0x20, 0xc0, 0x09, 0xb1, 0x12, 0xa0, 0x01, 0xb1, 0x00, + 0x22, 0x00, 0xb1, 0x00, 0x00, 0x0e, 0x00, 0x20, 0x98, 0x08, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x40, 0x20, + 0x18, 0x01, 0x00, 0x0a, 0x14, 0x01, 0x00, 0x00, 0x41, 0x96, 0x75, 0x20, + 0x07, 0x46, 0x41, 0x08, 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x29, + 0xe0, 0x07, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, + 0xe8, 0x3e, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x80, 0x79, 0x20, 0x00, 0x45, 0x02, 0x08, 0x01, 0x20, 0x80, 0x00, + 0xe8, 0x3e, 0xa0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe0, 0x46, 0x45, 0x46, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x29, 0xa0, 0x08, 0x00, 0x0a, 0x00, 0x09, 0x8d, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe7, 0x46, 0x46, 0x43, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x29, 0x00, 0x09, 0x8d, 0x0a, 0xa0, 0x07, 0x8d, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x28, 0xc0, 0x08, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x29, + 0x00, 0x09, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x46, 0x46, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x29, + 0x00, 0x09, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0x30, 0x00, 0x00, 0xc2, 0x08, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0x50, 0x00, 0x00, 0x02, 0x09, 0x00, 0x00, + 0x01, 0x5e, 0x02, 0x04, 0x24, 0x00, 0xa0, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0xb0, 0x07, 0x00, 0x00, 0xb0, 0x07, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xa0, 0x28, 0x18, 0x01, 0x00, 0x0a, 0x14, 0x01, 0x00, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x28, 0x20, 0x08, 0x8d, 0x1e, + 0xff, 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x40, 0x29, + 0x1c, 0x01, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x29, 0xe0, 0x07, 0x8d, 0x1e, 0xff, 0xff, 0xff, 0xff, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x60, 0x29, 0x1c, 0x01, 0x00, 0x1e, + 0xff, 0xff, 0xff, 0xff, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, + 0x60, 0x08, 0x8d, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x41, 0x96, 0x75, 0x20, + 0x07, 0x02, 0x46, 0x08, 0x41, 0x80, 0x01, 0x20, 0x00, 0x06, 0x4a, 0x45, + 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x20, 0x00, 0x09, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x41, 0x80, 0x01, 0x20, 0x00, 0x07, 0x4b, 0x45, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x21, 0xa0, 0x07, 0x8d, 0x1e, + 0xff, 0xff, 0xff, 0xff, 0x41, 0x80, 0x79, 0x20, 0x00, 0x4c, 0x45, 0x08, + 0x40, 0x96, 0x01, 0x20, 0xe0, 0x0e, 0x06, 0x02, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x22, 0xc0, 0x00, 0x00, 0x0a, 0x80, 0x00, 0x8d, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe0, 0x12, 0x07, 0x02, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x22, 0xe0, 0x00, 0x00, 0x0a, 0x80, 0x00, 0x8d, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe7, 0x0e, 0x0e, 0x0a, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x22, 0x00, 0x02, 0x8d, 0x0a, 0x80, 0x01, 0x8d, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe7, 0x12, 0x12, 0x0a, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x22, 0x80, 0x02, 0x8d, 0x0a, 0x80, 0x01, 0x8d, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x21, 0xc0, 0x01, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, + 0x00, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x22, 0x40, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, 0x80, 0x02, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x0e, 0x0e, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, 0x00, 0x02, 0x8d, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x12, 0x12, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, 0x80, 0x02, 0x8d, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x22, + 0xc0, 0x01, 0x00, 0x06, 0x00, 0x58, 0x60, 0x04, 0x41, 0x96, 0x75, 0x20, + 0x07, 0x51, 0x41, 0x08, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x23, + 0x00, 0x02, 0x00, 0x06, 0x00, 0x58, 0x60, 0x04, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x40, 0x24, 0x40, 0x02, 0x00, 0x06, 0x00, 0x58, 0x60, 0x04, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x2a, 0x20, 0x08, 0x8d, 0x1e, + 0x01, 0x00, 0x01, 0x00, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x25, + 0x80, 0x02, 0x00, 0x06, 0x00, 0x58, 0x60, 0x04, 0x40, 0x96, 0x01, 0x20, + 0xe0, 0x4d, 0x4c, 0x02, 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2a, + 0xe0, 0x07, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x2a, 0xe0, 0x07, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x29, 0x80, 0x09, 0x00, 0x0a, + 0x80, 0x00, 0x8d, 0x00, 0x40, 0x96, 0x01, 0x20, 0xe0, 0x59, 0x4c, 0x51, + 0x41, 0x96, 0x75, 0x20, 0x07, 0x5d, 0x55, 0x08, 0x40, 0x96, 0x01, 0x20, + 0xe7, 0x4d, 0x4d, 0x43, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2b, + 0x80, 0x09, 0x00, 0x0a, 0x60, 0x0a, 0x8d, 0x00, 0x41, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x2b, 0xe0, 0x0a, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x29, 0xe0, 0x09, 0x8d, 0x0a, + 0xa0, 0x07, 0x8d, 0x00, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x59, 0x59, 0x43, + 0x40, 0x96, 0x01, 0x20, 0xe0, 0x61, 0x4c, 0x5d, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x29, 0xa0, 0x09, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2b, 0x60, 0x0b, 0x8d, 0x0a, + 0xa0, 0x07, 0x8d, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2c, + 0x80, 0x09, 0x00, 0x0a, 0xe0, 0x0b, 0x8d, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x29, 0xe0, 0x09, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x2c, 0x20, 0x0b, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x61, 0x61, 0x43, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x4d, 0x4d, 0x09, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x2c, 0x60, 0x0b, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2c, 0x60, 0x0c, 0x8d, 0x0a, + 0xa0, 0x07, 0x8d, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x29, + 0xe0, 0x09, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x25, 0xa0, 0x09, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x32, 0x65, 0x09, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x20, 0x2c, 0x20, 0x0c, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x26, 0xe0, 0x09, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x26, + 0xe0, 0x0c, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x2c, 0x60, 0x0c, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x26, 0x40, 0x06, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x2d, + 0x60, 0x08, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x40, 0x96, 0x01, 0x20, + 0xe0, 0x6d, 0x07, 0x51, 0x40, 0x96, 0x01, 0x20, 0x07, 0x61, 0x61, 0x09, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x27, 0x80, 0x06, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2d, + 0xa0, 0x07, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x2d, 0xe0, 0x00, 0x00, 0x0a, 0x60, 0x0a, 0x8d, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2c, 0x60, 0x0c, 0x8d, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x27, + 0x20, 0x0c, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x01, 0x20, + 0xe0, 0x71, 0x06, 0x51, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x6d, 0x6d, 0x69, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x20, 0x60, 0x0c, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2e, + 0xc0, 0x00, 0x00, 0x0a, 0x60, 0x0a, 0x8d, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x2d, 0xe0, 0x0d, 0x8d, 0x0a, 0x60, 0x0d, 0x8d, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe0, 0x04, 0x07, 0x5d, 0x40, 0x96, 0x01, 0x20, + 0xe7, 0x71, 0x71, 0x69, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x2d, + 0xa0, 0x0d, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x2e, 0xe0, 0x00, 0x00, 0x0a, 0xe0, 0x0b, 0x8d, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2e, 0x60, 0x0e, 0x8d, 0x0a, + 0x60, 0x0d, 0x8d, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x2d, + 0xe0, 0x0d, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, + 0xe0, 0x77, 0x06, 0x5d, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x04, 0x04, 0x69, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x2e, 0x20, 0x0e, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x6d, 0x6d, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x2f, 0xc0, 0x00, 0x00, 0x0a, + 0xe0, 0x0b, 0x8d, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x2e, + 0xa0, 0x0e, 0x8d, 0x0a, 0x60, 0x0d, 0x8d, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x2e, 0x60, 0x0e, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x2d, 0xe0, 0x0d, 0x8d, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x2f, + 0xa0, 0x0d, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x01, 0x20, + 0xe7, 0x77, 0x77, 0x69, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x20, + 0x80, 0x00, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x71, 0x71, 0x09, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xa0, 0x2f, + 0xe0, 0x0d, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x20, 0x2f, 0x20, 0x0f, 0x8d, 0x0a, 0x60, 0x0d, 0x8d, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x2e, 0xa0, 0x0e, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2e, + 0x60, 0x0e, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0xe0, 0x28, 0x20, 0x0e, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x2e, 0xe0, 0x0e, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x04, 0x04, 0x09, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x20, 0x29, 0x60, 0x0e, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x2f, + 0x20, 0x0f, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x2e, 0xa0, 0x0e, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x29, 0x80, 0x00, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x01, 0x20, 0x07, 0x77, 0x77, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x2f, 0x20, 0x0f, 0x8d, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xa0, 0x29, + 0xa0, 0x0e, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x01, 0x00, 0x00, 0x00, + 0xec, 0x3e, 0x60, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xe0, 0x29, 0xe0, 0x0e, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x01, 0x00, 0x00, 0x00, 0xec, 0x3e, 0x80, 0x21, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x20, 0x2a, 0x20, 0x0f, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x01, 0x00, 0x00, 0x00, 0xec, 0x3e, 0xc0, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x01, 0x00, 0x00, 0x00, 0xec, 0x3e, 0x00, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, 0x00, + 0xec, 0x3e, 0x40, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x41, + 0x01, 0x00, 0x00, 0x00, 0xec, 0x3e, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xec, 0x3e, 0x60, 0x2b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x01, 0x00, 0x00, 0x00, + 0xec, 0x3e, 0xe0, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xc1, + 0x01, 0x00, 0x00, 0x00, 0xec, 0x3e, 0x60, 0x2c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x40, 0x40, 0x96, 0x2d, 0x20, 0x07, 0x71, 0x65, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2e, 0xe0, 0x0c, 0x8d, 0x0a, + 0x24, 0x01, 0x00, 0x00, 0x41, 0x00, 0x80, 0x00, 0xe8, 0x3a, 0xc0, 0x20, + 0xc0, 0x02, 0x8d, 0x3e, 0x00, 0x00, 0x80, 0x40, 0x41, 0x20, 0x80, 0x00, + 0xe8, 0x3a, 0x40, 0x21, 0x80, 0x03, 0x8d, 0x3e, 0x00, 0x00, 0x80, 0x40, + 0x5b, 0x62, 0x00, 0x20, 0x02, 0x30, 0x88, 0xa6, 0x5b, 0xa3, 0x00, 0x20, + 0x02, 0x50, 0xa0, 0xa6, 0x5b, 0x62, 0x00, 0x20, 0x02, 0x30, 0x88, 0x18, + 0x5b, 0xa3, 0x00, 0x20, 0x02, 0x50, 0xa0, 0x18, 0x5b, 0x62, 0x00, 0x20, + 0x02, 0x30, 0x58, 0x1c, 0x5b, 0xa3, 0x00, 0x20, 0x02, 0x50, 0x70, 0x1c, + 0x5b, 0x62, 0x00, 0x20, 0x02, 0x30, 0x88, 0x20, 0x5b, 0xa3, 0x00, 0x20, + 0x02, 0x50, 0xa0, 0x20, 0x5b, 0x32, 0x01, 0x20, 0x02, 0x30, 0x58, 0x24, + 0x5b, 0x23, 0x03, 0x20, 0x02, 0x50, 0x70, 0x24, 0x5b, 0x62, 0x05, 0x20, + 0x02, 0x98, 0xb8, 0xaa, 0x5b, 0x83, 0x05, 0x20, 0x02, 0x90, 0xc1, 0xaa, + 0x5b, 0x42, 0x03, 0x20, 0x02, 0xb0, 0xda, 0xb6, 0x5b, 0xc3, 0x05, 0x20, + 0x02, 0xc0, 0xe2, 0xb6, 0x5b, 0x62, 0x03, 0x20, 0x02, 0xa0, 0xe9, 0xbe, + 0x5b, 0x03, 0x06, 0x20, 0x02, 0xe0, 0x0a, 0xbe, 0x5b, 0x62, 0x03, 0x20, + 0x02, 0xb0, 0x99, 0xa6, 0x5b, 0x03, 0x06, 0x20, 0x02, 0x00, 0xb3, 0xa6, + 0x5b, 0x82, 0x03, 0x20, 0x02, 0xb0, 0x69, 0xc6, 0x5b, 0x93, 0x06, 0x20, + 0x02, 0x00, 0x83, 0xc6, 0x5b, 0xa2, 0x03, 0x20, 0x02, 0xc0, 0xed, 0x19, + 0x5b, 0x23, 0x00, 0x20, 0x02, 0x48, 0xf7, 0x19, 0x5b, 0x42, 0x00, 0x20, + 0x02, 0xd0, 0x1d, 0x1d, 0x5b, 0xb3, 0x06, 0x20, 0x02, 0x10, 0x24, 0x1d, + 0x5b, 0x62, 0x00, 0x20, 0x02, 0x20, 0x2c, 0x21, 0x5b, 0xd3, 0x06, 0x20, + 0x02, 0x58, 0x37, 0x21, 0x5b, 0xa2, 0x00, 0x20, 0x02, 0x30, 0x3c, 0x25, + 0x5b, 0xf3, 0x06, 0x20, 0x02, 0x68, 0x47, 0x25, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0xa0, 0x00, 0x00, 0x22, 0x0e, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0xf0, 0x06, 0x00, 0x62, 0x0e, 0x00, 0x00, + 0x01, 0x5e, 0x02, 0x04, 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, + 0x07, 0x7f, 0x3c, 0x00, 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, + 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x69, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x6a, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x6b, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00 +}; +unsigned int __3DConvolution_Gen9core_gen_len = 4588; diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.cc b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.cc new file mode 100644 index 0000000000..97e032442f --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.cc @@ -0,0 +1,471 @@ +/** + * correlation.c: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#include +#include +#include +#include +#include + + + +#ifdef __APPLE__ +#include +#else +#include "../../CL/cl.h" +#endif + +#define POLYBENCH_TIME 1 + +//select the OpenCL device to use (can be GPU, CPU, or Accelerator such as Intel Xeon Phi) +#define OPENCL_DEVICE_SELECTION CL_DEVICE_TYPE_GPU + +#include "correlation.h" +#include "../../polybench.h" + +//define the error threshold for the results "not matching" +#define PERCENT_DIFF_ERROR_THRESHOLD 1.05 + +#define MAX_SOURCE_SIZE (0x100000) + + + + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + + +namespace ns_correlation { + + + +#define sqrt_of_array_cell(x,j) sqrt(x[j]) + +#include "correlation_kernel.h" + +#include "../../polybenchUtilFuncts.h" + +char str_temp[1024]; + +#define FLOAT_N 3214212.01 +#define EPS 0.005 + +cl_platform_id platform_id; +cl_device_id device_id; +cl_uint num_devices; +cl_uint num_platforms; +cl_int errcode; +cl_context clGPUContext; +cl_kernel clKernel_mean; +cl_kernel clKernel_std; +cl_kernel clKernel_reduce; +cl_kernel clKernel_corr; +cl_command_queue clCommandQue; +cl_program clProgram; +cl_mem data_mem_obj; +cl_mem stddev_mem_obj; +cl_mem mean_mem_obj; +cl_mem symmat_mem_obj; +FILE *fp; +char *source_str; +size_t source_size; + +#define RUN_ON_CPU + + +void compareResults(int m, int n, DATA_TYPE POLYBENCH_2D(symmat, M, N, m, n), DATA_TYPE POLYBENCH_2D(symmat_outputFromGpu, M, N, m, n)) +{ + int i,j,fail; + fail = 0; + + for (i=0; i < m; i++) + { + for (j=0; j < n; j++) + { + if (percentDiff(symmat[i][j], symmat_outputFromGpu[i][j]) > PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + } + + // print results + printf("Non-Matching CPU-GPU Outputs Beyond Error Threshold of %4.2f Percent: %d\n", PERCENT_DIFF_ERROR_THRESHOLD, fail); +} + + +void read_cl_file() +{ + // Load the kernel source code into the array source_str + // fp = fopen("correlation.cl", "r"); + // if (!fp) { + // fprintf(stderr, "Failed to load kernel.\n"); + // exit(1); + // } + // source_str = (char*)malloc(MAX_SOURCE_SIZE); + // source_size = fread( source_str, 1, MAX_SOURCE_SIZE, fp); + // fclose( fp ); +} + + +void init_arrays(int m, int n, DATA_TYPE POLYBENCH_2D(data, M, N, m, n)) +{ + int i, j; + + for (i=0; i < m; i++) + { + for (j=0; j < n; j++) + { + data[i][j] = ((DATA_TYPE) i*j)/ M; + } + } +} + + +void cl_initialization() +{ + // Get platform and device information + errcode = clGetPlatformIDs(1, &platform_id, &num_platforms); + if(errcode == CL_SUCCESS) printf("number of platforms is %d\n",num_platforms); + else printf("Error getting platform IDs\n"); + + errcode = clGetPlatformInfo(platform_id,CL_PLATFORM_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform name is %s\n",str_temp); + else printf("Error getting platform name\n"); + + errcode = clGetPlatformInfo(platform_id, CL_PLATFORM_VERSION, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform version is %s\n",str_temp); + else printf("Error getting platform version\n"); + + errcode = clGetDeviceIDs( platform_id, OPENCL_DEVICE_SELECTION, 1, &device_id, &num_devices); + if(errcode == CL_SUCCESS) printf("number of devices is %d\n", num_devices); + else printf("Error getting device IDs\n"); + + errcode = clGetDeviceInfo(device_id,CL_DEVICE_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("device name is %s\n",str_temp); + else printf("Error getting device name\n"); + + // Create an OpenCL context + clGPUContext = clCreateContext( NULL, 1, &device_id, NULL, NULL, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating context\n"); + + //Create a command-queue + clCommandQue = clCreateCommandQueue(clGPUContext, device_id, 0, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating command queue\n"); +} + + +void cl_mem_init(DATA_TYPE POLYBENCH_2D(data,M,N,m,n), DATA_TYPE POLYBENCH_1D(mean,M,m), DATA_TYPE POLYBENCH_1D(stddev,M,m), DATA_TYPE POLYBENCH_2D(symmat,M,M,m,m)) +{ + data_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * M * N, NULL, &errcode); + symmat_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * M * N, NULL, &errcode); + stddev_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * M, NULL, &errcode); + mean_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * M, NULL, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating buffers\n"); + + errcode = clEnqueueWriteBuffer(clCommandQue, data_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * M * N, data, 0, NULL, NULL); + errcode = clEnqueueWriteBuffer(clCommandQue, symmat_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * M * N, symmat, 0, NULL, NULL); + errcode = clEnqueueWriteBuffer(clCommandQue, stddev_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * M, stddev, 0, NULL, NULL); + errcode = clEnqueueWriteBuffer(clCommandQue, mean_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * M, mean, 0, NULL, NULL); + if(errcode != CL_SUCCESS)printf("Error in writing buffers\n"); +} + + +void cl_load_prog() +{ + // Create a program from the kernel source + const size_t kernel_size = correlation_Gen9core_gen_len; + const unsigned char* kernel_bin = correlation_Gen9core_gen; + clProgram = clCreateProgramWithBinary(clGPUContext, 1, &device_id, &kernel_size, &kernel_bin, NULL, &errcode); + // clProgram = clCreateProgramWithSource(clGPUContext, 1, (const char **)&source_str, (const size_t *)&source_size, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating program\n"); + + // Build the program + errcode = clBuildProgram(clProgram, 1, &device_id, NULL, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in building program\n"); + + // Create the OpenCL kernel + clKernel_mean = clCreateKernel(clProgram, "mean_kernel", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel1\n"); + + clKernel_std = clCreateKernel(clProgram, "std_kernel", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel2\n"); + + clKernel_reduce = clCreateKernel(clProgram, "reduce_kernel", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel3\n"); + + clKernel_corr = clCreateKernel(clProgram, "corr_kernel", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel4\n"); + clFinish(clCommandQue); +} + + +void cl_launch_kernel(int m, int n) +{ + DATA_TYPE float_n = FLOAT_N; + DATA_TYPE eps = EPS; + + size_t localWorkSize_Kernel1[2], globalWorkSize_Kernel1[2]; + size_t localWorkSize_Kernel2[2], globalWorkSize_Kernel2[2]; + size_t localWorkSize_Kernel3[2], globalWorkSize_Kernel3[2]; + size_t localWorkSize_Kernel4[2], globalWorkSize_Kernel4[2]; + + localWorkSize_Kernel1[0] = DIM_LOCAL_WORK_GROUP_KERNEL_1_X; + localWorkSize_Kernel1[1] = DIM_LOCAL_WORK_GROUP_KERNEL_1_Y; + globalWorkSize_Kernel1[0] = (size_t)ceil(((float)M) / ((float)DIM_LOCAL_WORK_GROUP_KERNEL_1_X)) * DIM_LOCAL_WORK_GROUP_KERNEL_1_X; + globalWorkSize_Kernel1[1] = 1; + + localWorkSize_Kernel2[0] = DIM_LOCAL_WORK_GROUP_KERNEL_2_X; + localWorkSize_Kernel2[1] = DIM_LOCAL_WORK_GROUP_KERNEL_2_Y; + globalWorkSize_Kernel2[0] = (size_t)ceil(((float)M) / ((float)DIM_LOCAL_WORK_GROUP_KERNEL_2_X)) * DIM_LOCAL_WORK_GROUP_KERNEL_2_X; + globalWorkSize_Kernel2[1] = 1; + + localWorkSize_Kernel3[0] = DIM_LOCAL_WORK_GROUP_KERNEL_3_X; + localWorkSize_Kernel3[1] = DIM_LOCAL_WORK_GROUP_KERNEL_3_Y; + globalWorkSize_Kernel3[0] = (size_t)ceil(((float)M) / ((float)DIM_LOCAL_WORK_GROUP_KERNEL_3_X)) * DIM_LOCAL_WORK_GROUP_KERNEL_3_X; + globalWorkSize_Kernel3[1] = (size_t)ceil(((float)N) / ((float)DIM_LOCAL_WORK_GROUP_KERNEL_3_Y)) * DIM_LOCAL_WORK_GROUP_KERNEL_3_Y; + + localWorkSize_Kernel4[0] = DIM_LOCAL_WORK_GROUP_KERNEL_4_X; + localWorkSize_Kernel4[1] = DIM_LOCAL_WORK_GROUP_KERNEL_4_Y; + globalWorkSize_Kernel4[0] = (size_t)ceil(((float)M) / ((float)DIM_LOCAL_WORK_GROUP_KERNEL_4_X)) * DIM_LOCAL_WORK_GROUP_KERNEL_4_X; + globalWorkSize_Kernel4[1] = 1; + + /* Start timer. */ + polybench_start_instruments; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel_mean, 0, sizeof(cl_mem), (void *)&mean_mem_obj); + errcode |= clSetKernelArg(clKernel_mean, 1, sizeof(cl_mem), (void *)&data_mem_obj); + errcode |= clSetKernelArg(clKernel_mean, 2, sizeof(DATA_TYPE), (void *)&float_n); + errcode |= clSetKernelArg(clKernel_mean, 3, sizeof(int), (void *)&m); + errcode |= clSetKernelArg(clKernel_mean, 4, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments1\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel_mean, 1, NULL, globalWorkSize_Kernel1, localWorkSize_Kernel1, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel1\n"); + clEnqueueBarrier(clCommandQue); + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel_std, 0, sizeof(cl_mem), (void *)&mean_mem_obj); + errcode = clSetKernelArg(clKernel_std, 1, sizeof(cl_mem), (void *)&stddev_mem_obj); + errcode |= clSetKernelArg(clKernel_std, 2, sizeof(cl_mem), (void *)&data_mem_obj); + errcode |= clSetKernelArg(clKernel_std, 3, sizeof(DATA_TYPE), (void *)&float_n); + errcode |= clSetKernelArg(clKernel_std, 4, sizeof(DATA_TYPE), (void *)&eps); + errcode |= clSetKernelArg(clKernel_std, 5, sizeof(int), (void *)&m); + errcode |= clSetKernelArg(clKernel_std, 6, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments2\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel_std, 1, NULL, globalWorkSize_Kernel2, localWorkSize_Kernel2, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel2\n"); + clEnqueueBarrier(clCommandQue); + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel_reduce, 0, sizeof(cl_mem), (void *)&mean_mem_obj); + errcode = clSetKernelArg(clKernel_reduce, 1, sizeof(cl_mem), (void *)&stddev_mem_obj); + errcode |= clSetKernelArg(clKernel_reduce, 2, sizeof(cl_mem), (void *)&data_mem_obj); + errcode |= clSetKernelArg(clKernel_reduce, 3, sizeof(DATA_TYPE), (void *)&float_n); + errcode |= clSetKernelArg(clKernel_reduce, 4, sizeof(int), (void *)&m); + errcode |= clSetKernelArg(clKernel_reduce, 5, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments3\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel_reduce, 2, NULL, globalWorkSize_Kernel3, localWorkSize_Kernel3, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel3\n"); + clEnqueueBarrier(clCommandQue); + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel_corr, 0, sizeof(cl_mem), (void *)&symmat_mem_obj); + errcode |= clSetKernelArg(clKernel_corr, 1, sizeof(cl_mem), (void *)&data_mem_obj); + errcode |= clSetKernelArg(clKernel_corr, 2, sizeof(int), (void *)&m); + errcode |= clSetKernelArg(clKernel_corr, 3, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments4\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel_corr, 1, NULL, globalWorkSize_Kernel4, localWorkSize_Kernel4, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel4\n"); + clEnqueueBarrier(clCommandQue); + + DATA_TYPE val = 1.0; + clEnqueueWriteBuffer(clCommandQue, symmat_mem_obj, CL_TRUE, ((M-1)*M + (M-1))*sizeof(DATA_TYPE), sizeof(DATA_TYPE), &val, 0, NULL, NULL); + + clFinish(clCommandQue); + + /* Stop and print timer. */ + printf("GPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; +} + + +void cl_clean_up() +{ + // Clean up + errcode = clFlush(clCommandQue); + errcode = clFinish(clCommandQue); + errcode = clReleaseKernel(clKernel_reduce); + errcode = clReleaseKernel(clKernel_mean); + errcode = clReleaseKernel(clKernel_std); + errcode = clReleaseKernel(clKernel_corr); + errcode = clReleaseProgram(clProgram); + errcode = clReleaseMemObject(symmat_mem_obj); + errcode = clReleaseMemObject(data_mem_obj); + errcode = clReleaseMemObject(mean_mem_obj); + errcode = clReleaseMemObject(stddev_mem_obj); + errcode = clReleaseCommandQueue(clCommandQue); + errcode = clReleaseContext(clGPUContext); + if(errcode != CL_SUCCESS) printf("Error in cleanup\n"); +} + + +void correlation(int m, int n, DATA_TYPE POLYBENCH_2D(data, M, N, m, n), DATA_TYPE POLYBENCH_1D(mean, M, m), DATA_TYPE POLYBENCH_1D(stddev, M, m), + DATA_TYPE POLYBENCH_2D(symmat, M, N, m, n)) +{ + int i, j, j1, j2; + + // Determine mean of column vectors of input data matrix + for (j = 0; j < _PB_M; j++) + { + mean[j] = 0.0; + + for (i = 0; i < _PB_N; i++) + { + mean[j] += data[i][j]; + } + + mean[j] /= (DATA_TYPE)FLOAT_N; + } + + // Determine standard deviations of column vectors of data matrix. + for (j = 0; j < _PB_M; j++) + { + stddev[j] = 0.0; + + for (i = 0; i < _PB_N; i++) + { + stddev[j] += (data[i][j] - mean[j]) * (data[i][j] - mean[j]); + } + + stddev[j] /= FLOAT_N; + stddev[j] = sqrt_of_array_cell(stddev, j); + stddev[j] = stddev[j] <= EPS ? 1.0 : stddev[j]; + } + + // Center and reduce the column vectors. + for (i = 0; i < _PB_N; i++) + { + for (j = 0; j < _PB_M; j++) + { + data[i][j] -= mean[j]; + data[i][j] /= (sqrt(FLOAT_N)*stddev[j]) ; + } + } + + // Calculate the m * m correlation matrix. + for (j1 = 0; j1 < _PB_M-1; j1++) + { + symmat[j1][j1] = 1.0; + + for (j2 = j1+1; j2 < _PB_M; j2++) + { + symmat[j1][j2] = 0.0; + + for (i = 0; i < _PB_N; i++) + { + symmat[j1][j2] += (data[i][j1] * data[i][j2]); + } + + symmat[j2][j1] = symmat[j1][j2]; + } + } + + symmat[M-1][M-1] = 1.0; +} + + +/* DCE code. Must scan the entire live-out data. + Can be used also to check the correctness of the output. */ +static +void print_array(int m, + DATA_TYPE POLYBENCH_2D(symmat,M,M,m,m)) + +{ + int i, j; + + for (i = 0; i < m; i++) + for (j = 0; j < m; j++) { + fprintf (stderr, DATA_PRINTF_MODIFIER, symmat[i][j]); + if ((i * m + j) % 20 == 0) fprintf (stderr, "\n"); + } + fprintf (stderr, "\n"); +} + + +int main(int argc, char *argv[]) +{ + int m = M; + int n = N; + + POLYBENCH_2D_ARRAY_DECL(data,DATA_TYPE,M,N,m,n); + POLYBENCH_1D_ARRAY_DECL(mean,DATA_TYPE,M,m); + POLYBENCH_1D_ARRAY_DECL(stddev,DATA_TYPE,M,m); + POLYBENCH_2D_ARRAY_DECL(symmat,DATA_TYPE,M,N,m,n); + POLYBENCH_2D_ARRAY_DECL(symmat_outputFromGpu,DATA_TYPE,M,N,m,n); + + init_arrays(m, n, POLYBENCH_ARRAY(data)); + + read_cl_file(); + cl_initialization(); + cl_mem_init(POLYBENCH_ARRAY(data), POLYBENCH_ARRAY(mean), POLYBENCH_ARRAY(stddev), POLYBENCH_ARRAY(symmat_outputFromGpu)); + cl_load_prog(); + + cl_launch_kernel(m, n); + + errcode = clEnqueueReadBuffer(clCommandQue, symmat_mem_obj, CL_TRUE, 0, M * N * sizeof(DATA_TYPE), POLYBENCH_ARRAY(symmat_outputFromGpu), 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); + + #ifdef RUN_ON_CPU + + /* Start timer. */ + polybench_start_instruments; + + correlation(m, n, POLYBENCH_ARRAY(data), POLYBENCH_ARRAY(mean), POLYBENCH_ARRAY(stddev), POLYBENCH_ARRAY(symmat)); + + /* Stop and print timer. */ + printf("CPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + compareResults(m, n, POLYBENCH_ARRAY(symmat), POLYBENCH_ARRAY(symmat_outputFromGpu)); + + #else //prevent dead code elimination + + polybench_prevent_dce(print_array(m, POLYBENCH_ARRAY(symmat_outputFromGpu))); + + #endif //RUN_ON_CPU + + POLYBENCH_FREE_ARRAY(data); + POLYBENCH_FREE_ARRAY(mean); + POLYBENCH_FREE_ARRAY(stddev); + POLYBENCH_FREE_ARRAY(symmat); + POLYBENCH_FREE_ARRAY(symmat_outputFromGpu); + + cl_clean_up(); + + return 0; +} + +} \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.cl b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.cl new file mode 100644 index 0000000000..fa933ad34e --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.cl @@ -0,0 +1,95 @@ +/** + * correlation.cl: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +typedef float DATA_TYPE; + +__kernel void mean_kernel(__global DATA_TYPE *mean, __global DATA_TYPE *data, DATA_TYPE float_n, int m, int n) +{ + int j = get_global_id(0); + + if (j < m) + { + mean[j] = 0.0; + + int i; + for (i=0; i < n; i++) + { + mean[j] += data[i*m + j]; + } + + mean[j] /= (DATA_TYPE)float_n; + } +} + + +__kernel void std_kernel(__global DATA_TYPE *mean, __global DATA_TYPE *std, __global DATA_TYPE *data, DATA_TYPE float_n, DATA_TYPE eps, int m, int n) +{ + int j = get_global_id(0); + + if (j < m) + { + std[j] = 0.0; + + int i; + for (i = 0; i < n; i++) + { + std[j] += (data[i*m + j] - mean[j]) * (data[i*m + j] - mean[j]); + } + std[j] /= float_n; + std[j] = sqrt(std[j]); + if(std[j] <= eps) + { + std[j] = 1.0; + } + } +} + + +__kernel void reduce_kernel(__global DATA_TYPE *mean, __global DATA_TYPE *std, __global DATA_TYPE *data, DATA_TYPE float_n, int m, int n) +{ + int j = get_global_id(0); + int i = get_global_id(1); + + if ((i < n) && (j < m)) + { + data[i*m + j] -= mean[j]; + data[i*m + j] /= (sqrt(float_n) * std[j]); + } +} + + +__kernel void corr_kernel(__global DATA_TYPE *symmat, __global DATA_TYPE *data, int m, int n) +{ + int j1 = get_global_id(0); + + int i, j2; + if (j1 < (m-1)) + { + symmat[j1*m + j1] = 1.0; + + for (j2 = (j1 + 1); j2 < m; j2++) + { + for(i = 0; i < n; i++) + { + symmat[j1*m + j2] += data[i*m + j1] * data[i*m + j2]; + } + symmat[j2*m + j1] = symmat[j1*m + j2]; + } + } +} + + + diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.h new file mode 100644 index 0000000000..d364bbb7e1 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation.h @@ -0,0 +1,73 @@ +/** + * correlation.h: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#ifndef CORRELATION_H +# define CORRELATION_H + +/* Default to STANDARD_DATASET. */ +# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET) +# define STANDARD_DATASET +# endif + +/* Do not define anything if the user manually defines the size. */ +# if !defined(M) && !defined(N) +/* Define the possible dataset sizes. */ +# ifdef MINI_DATASET +#define M 512 +#define N 512 +# endif + +# ifdef SMALL_DATASET +#define M 1024 +#define N 1024 +# endif + +# ifdef STANDARD_DATASET /* Default if unspecified. */ +#define M 2048 +#define N 2048 +# endif + +# ifdef LARGE_DATASET +#define M 4096 +#define N 4096 +# endif + +# ifdef EXTRALARGE_DATASET +#define M 8192 +#define N 8192 +# endif +# endif /* !N */ + +# define _PB_M POLYBENCH_LOOP_BOUND(M,m) +# define _PB_N POLYBENCH_LOOP_BOUND(N,n) + +# ifndef DATA_TYPE +# define DATA_TYPE float +# define DATA_PRINTF_MODIFIER "%0.2lf " +# endif + +/* Thread block dimensions for kernel 1*/ +#define DIM_LOCAL_WORK_GROUP_KERNEL_1_X 256 +#define DIM_LOCAL_WORK_GROUP_KERNEL_1_Y 1 + +/* Thread block dimensions for kernel 2*/ +#define DIM_LOCAL_WORK_GROUP_KERNEL_2_X 256 +#define DIM_LOCAL_WORK_GROUP_KERNEL_2_Y 1 + +/* Thread block dimensions for kernel 3*/ +#define DIM_LOCAL_WORK_GROUP_KERNEL_3_X 32 +#define DIM_LOCAL_WORK_GROUP_KERNEL_3_Y 8 + +/* Thread block dimensions for kernel 4*/ +#define DIM_LOCAL_WORK_GROUP_KERNEL_4_X 256 +#define DIM_LOCAL_WORK_GROUP_KERNEL_4_Y 1 + + +#endif /* !CORRELATION*/ \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation_kernel.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation_kernel.h new file mode 100644 index 0000000000..7209a8144c --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/correlation/correlation_kernel.h @@ -0,0 +1,968 @@ +unsigned char correlation_Gen9core_gen[] = { + 0x43, 0x54, 0x4e, 0x49, 0x39, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x57, 0xc7, 0x17, 0xd9, 0xa8, 0xbf, 0xed, 0x98, + 0x22, 0xbc, 0x25, 0xe2, 0x0c, 0x00, 0x00, 0x00, 0x88, 0x05, 0x00, 0x00, + 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x6d, 0x65, 0x61, 0x6e, + 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x80, 0x20, + 0x24, 0x01, 0x00, 0x0a, 0x64, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x20, 0x80, 0x00, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, 0x80, 0x00, 0x00, 0x12, + 0x40, 0x00, 0xb1, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x0c, 0x05, 0x07, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x21, 0x40, 0x01, 0x8d, 0x0a, + 0xe0, 0x00, 0x00, 0x00, 0x10, 0x16, 0x73, 0x25, 0x07, 0x00, 0x0c, 0x08, + 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, 0xc0, 0x01, 0x8d, 0x0a, + 0x14, 0x01, 0x00, 0x00, 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0x58, 0x02, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x22, 0x80, 0x01, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0xc0, 0x01, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x80, 0x00, 0xe8, 0x3e, 0x80, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x80, 0x00, + 0xe8, 0x3e, 0xc0, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x96, 0x79, 0x20, 0x07, 0x10, 0x10, 0x08, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x22, 0x40, 0x02, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x80, 0x03, 0x26, 0x0a, 0x00, 0x20, 0x18, 0x01, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x80, 0x03, 0x26, 0x0a, 0x00, 0x20, + 0x18, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0x40, 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0x60, 0x01, 0x00, 0x42, 0x02, 0x00, 0x00, + 0x00, 0x5e, 0x02, 0x04, 0x20, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x34, + 0x00, 0x14, 0x00, 0x0e, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, + 0xe8, 0x3e, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3e, 0x40, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x34, + 0x00, 0x14, 0x00, 0x0e, 0x28, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, + 0xe8, 0x3e, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3e, 0x40, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x1e, 0x84, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x88, 0x20, 0x84, 0x00, 0x00, 0x0a, 0x14, 0x01, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x84, 0x20, 0x84, 0x00, 0x00, 0x1e, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x96, 0x19, 0x20, 0xe0, 0x1c, 0x04, 0x0c, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, 0x88, 0x00, 0x00, 0x0a, + 0xc0, 0x01, 0x8d, 0x00, 0x10, 0x00, 0x80, 0x05, 0x24, 0x0a, 0x00, 0x20, + 0x84, 0x00, 0x00, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, + 0x24, 0x0a, 0x00, 0x20, 0x84, 0x00, 0x00, 0x0a, 0x18, 0x01, 0x00, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, 0x80, 0x03, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, + 0xc0, 0x03, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x1c, 0x1c, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, + 0xc0, 0x03, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x00, 0x24, 0x80, 0x03, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x24, 0xc0, 0x03, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x40, 0x56, 0x02, 0x20, 0xe7, 0x18, 0x18, 0x20, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x40, 0x23, 0x40, 0x03, 0x8d, 0x3a, + 0x40, 0x04, 0x8d, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x80, 0x01, 0x00, + 0x02, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0xa0, 0x01, 0x00, 0x42, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x20, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x34, 0x00, 0x14, 0x00, 0x0e, + 0x08, 0xff, 0xff, 0xff, 0x38, 0x56, 0x6e, 0x29, 0x07, 0x24, 0x18, 0x08, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0xc0, 0x24, + 0x40, 0x03, 0x8d, 0x3a, 0x10, 0x01, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0x40, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0x60, 0x02, 0x00, 0x42, 0x02, 0x00, 0x00, + 0x00, 0x5e, 0x02, 0x04, 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, + 0x07, 0x7f, 0x03, 0x00, 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, + 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6d, 0x65, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x6e, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x3b, 0x34, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0xdb, 0x6c, 0x0d, 0x95, 0xa8, 0xbf, 0xed, 0x98, + 0x22, 0xbc, 0x25, 0xe2, 0x0c, 0x00, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, + 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x73, 0x74, 0x64, 0x5f, + 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x2f, + 0x34, 0x01, 0x00, 0x0a, 0x64, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x20, 0xc0, 0x0f, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2f, 0xc0, 0x0f, 0x00, 0x12, + 0x40, 0x00, 0xb1, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x0a, 0x04, 0x07, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2f, 0x80, 0x0f, 0x8d, 0x0a, + 0xe0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, + 0x40, 0x01, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, + 0x22, 0x0a, 0x00, 0x20, 0x40, 0x0f, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, + 0x22, 0x00, 0xa1, 0x00, 0x02, 0x0e, 0x00, 0x20, 0x40, 0x03, 0x00, 0x00, + 0x40, 0x03, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x21, + 0x40, 0x01, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x2f, 0x40, 0x0f, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x80, 0x00, 0xe8, 0x3e, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3e, 0x80, 0x2e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x96, 0x65, 0x20, + 0x07, 0x0e, 0x0c, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2e, + 0x00, 0x0f, 0x8d, 0x0a, 0x2c, 0x01, 0x00, 0x00, 0x10, 0x00, 0x80, 0x03, + 0x24, 0x0a, 0x00, 0x20, 0x24, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x20, 0x80, 0x03, 0x24, 0x0a, 0x00, 0x20, 0x24, 0x01, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x00, 0x01, 0x00, + 0xc2, 0x01, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0x40, 0x07, 0x00, 0xc2, 0x0e, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, + 0x20, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x34, 0x00, 0x14, 0x00, 0x0e, + 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0xe8, 0x3e, 0x40, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x80, 0x00, + 0xe8, 0x3e, 0x40, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x34, 0x00, 0x14, 0x00, 0x0e, + 0x68, 0x01, 0x00, 0x00, 0x40, 0x96, 0x5d, 0x20, 0x07, 0x14, 0x0c, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2e, 0x00, 0x0f, 0x8d, 0x0a, + 0x28, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0xe8, 0x3e, 0x40, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x80, 0x00, + 0xe8, 0x3e, 0x40, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2c, 0x1e, 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x2f, + 0xc0, 0x00, 0x00, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x20, 0x2d, 0x80, 0x02, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x23, 0x00, 0x0e, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x20, + 0xc0, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x40, 0x96, 0x15, 0x20, + 0xe0, 0x16, 0x7e, 0x0a, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2d, + 0xc4, 0x0f, 0x00, 0x0a, 0x40, 0x0f, 0x8d, 0x00, 0x10, 0x17, 0x2f, 0x25, + 0x00, 0x00, 0x06, 0x09, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x22, + 0xc0, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x2d, 0xc0, 0x0d, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x10, 0x20, 0x80, 0x05, 0x24, 0x0a, 0x00, 0x20, 0xc0, 0x00, 0x00, 0x0a, + 0x24, 0x01, 0x00, 0x00, 0x40, 0x96, 0x6d, 0x20, 0x07, 0x16, 0x16, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2d, 0xc0, 0x0d, 0x8d, 0x0a, + 0x30, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x2d, + 0xc0, 0x02, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x00, 0x23, 0xc0, 0x0d, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, + 0x40, 0x56, 0x02, 0x20, 0xf7, 0x6b, 0x6b, 0x69, 0x40, 0x20, 0x80, 0x00, + 0xe8, 0x3a, 0x00, 0x23, 0x00, 0x03, 0x8d, 0x3a, 0x40, 0x43, 0x8d, 0x00, + 0x5b, 0x22, 0x01, 0x20, 0x00, 0x90, 0xac, 0xd7, 0x5b, 0x23, 0x07, 0x20, + 0x00, 0x90, 0x63, 0x30, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x20, 0x01, 0x00, + 0xc2, 0x01, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0x20, 0x07, 0x00, 0xc2, 0x0e, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, + 0x20, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x34, 0x00, 0x14, 0x00, 0x0e, + 0xe0, 0xfe, 0xff, 0xff, 0x38, 0x56, 0x76, 0x29, 0x07, 0x67, 0x12, 0x08, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0x80, 0x23, + 0x40, 0x0e, 0x8d, 0x3a, 0x18, 0x01, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x16, 0x01, 0x24, 0x07, 0x65, 0x67, 0x00, 0x38, 0x20, 0x80, 0x04, + 0xe8, 0x3a, 0xc0, 0x23, 0x80, 0x03, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x80, 0x06, 0xe2, 0x3a, 0x00, 0x20, 0xa0, 0x0c, 0x8d, 0x3a, + 0x1c, 0x01, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x50, 0x06, 0x00, + 0xc2, 0x01, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, 0x10, 0x20, 0x80, 0x06, + 0xe2, 0x3a, 0x00, 0x20, 0xc0, 0x03, 0x8d, 0x3a, 0x1c, 0x01, 0x00, 0x00, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0xe0, 0x01, 0x00, 0xc2, 0x0e, 0x00, 0x00, + 0x01, 0x5e, 0x02, 0x04, 0x22, 0x00, 0xa1, 0x00, 0x02, 0x0e, 0x00, 0x20, + 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, + 0xe8, 0x3e, 0x60, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3e, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x3f, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x30, 0x06, 0x00, + 0xc2, 0x01, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0x00, 0x02, 0x00, 0xc2, 0x0e, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, + 0x07, 0x7f, 0x03, 0x00, 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, + 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6d, 0x65, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x64, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x5f, 0x6e, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x3b, 0x34, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x65, 0x70, 0x73, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x3b, 0x34, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0xb0, 0x9a, 0x86, 0x27, 0xa8, 0xbf, 0xed, 0x98, + 0x22, 0xbc, 0x25, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x4c, 0x06, 0x00, 0x00, + 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x72, 0x65, 0x64, 0x75, + 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0xa0, 0x20, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, + 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xc0, 0x20, 0x30, 0x01, 0x00, 0x0a, 0xa4, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x20, 0x34, 0x01, 0x00, 0x0a, + 0xb8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x16, 0xcc, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x21, 0xc0, 0x00, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, 0xc4, 0x00, 0x00, 0x12, + 0x80, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, + 0xc0, 0x00, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x22, 0xc4, 0x00, 0x00, 0x12, 0x60, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, 0x80, 0x01, 0x8d, 0x0a, + 0xe0, 0x00, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x23, + 0x80, 0x02, 0x8d, 0x0a, 0xe4, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x0e, 0x0a, 0x07, 0x40, 0x96, 0x2d, 0x20, 0x07, 0x16, 0x12, 0x07, + 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, 0x00, 0x02, 0x8d, 0x0a, + 0x1c, 0x01, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, + 0x00, 0x03, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x10, 0x16, 0x7b, 0x25, + 0x07, 0x00, 0x0e, 0x08, 0x02, 0x20, 0x81, 0x00, 0x4a, 0x12, 0x60, 0x27, + 0xcc, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, + 0x48, 0x12, 0x40, 0x27, 0xcc, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x19, 0x03, 0x25, 0x07, 0x00, 0x16, 0x09, 0x05, 0x20, 0x80, 0x02, + 0x40, 0x12, 0x00, 0x20, 0x40, 0x07, 0xb1, 0x12, 0x60, 0x07, 0xb1, 0x00, + 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, 0xd0, 0x01, 0x00, 0x00, + 0xd0, 0x01, 0x00, 0x00, 0x41, 0x96, 0x79, 0x20, 0x07, 0x26, 0x16, 0x08, + 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x25, 0x00, 0x03, 0x8d, 0x0a, + 0x1c, 0x01, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x23, + 0xc0, 0x01, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x23, 0x00, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe7, 0x26, 0x26, 0x0e, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x25, 0x00, 0x05, 0x8d, 0x0a, 0x00, 0x02, 0x8d, 0x00, + 0x40, 0x96, 0x2d, 0x20, 0x07, 0x1e, 0x1a, 0x09, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x24, 0x80, 0x03, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x24, 0xc0, 0x04, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x25, + 0x00, 0x05, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x40, 0x24, 0xc0, 0x03, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x40, 0x96, 0x5d, 0x20, 0x07, 0x32, 0x1a, 0x09, 0x40, 0x96, 0x65, 0x20, + 0x07, 0x26, 0x26, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x25, + 0x00, 0x05, 0x8d, 0x0a, 0x2c, 0x01, 0x00, 0x00, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x80, 0x24, 0x00, 0x04, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x26, 0x80, 0x03, 0x8d, 0x0a, + 0x28, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x25, + 0xc0, 0x04, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x80, 0x25, 0x00, 0x05, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, + 0x38, 0x00, 0x00, 0x04, 0xec, 0x3a, 0xc8, 0x20, 0x18, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x56, 0x02, 0x20, 0xf7, 0x2e, 0x2a, 0x22, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x00, 0x26, 0x80, 0x05, 0x8d, 0x3a, + 0x80, 0x44, 0x8d, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0xe0, 0x02, 0x00, + 0xc2, 0x04, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0x00, 0x03, 0x00, 0x02, 0x05, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x26, 0x40, 0x06, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x27, + 0x80, 0x06, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x41, 0x56, 0x1a, 0x20, + 0xe0, 0x36, 0x06, 0x36, 0x41, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x00, 0x27, + 0xc8, 0x00, 0x00, 0x3a, 0x00, 0x07, 0x8d, 0x00, 0x38, 0x56, 0x02, 0x29, + 0xe7, 0x36, 0x2e, 0x36, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x80, 0x09, + 0xe8, 0x3a, 0x00, 0x27, 0x00, 0x06, 0x8d, 0x3a, 0x00, 0x07, 0x8d, 0x00, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0x60, 0x03, 0x00, 0xc2, 0x04, 0x00, 0x00, + 0x02, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0x80, 0x03, 0x00, + 0x02, 0x05, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x05, 0x00, 0x31, 0x00, 0x60, 0x07, + 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6d, 0x65, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x64, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x5f, 0x6e, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x3b, 0x34, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x35, 0x63, 0x57, 0xa9, 0xa8, 0xbf, 0xed, 0x98, 0x22, 0xbc, 0x25, 0xe2, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0xc0, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x30, 0x05, 0x00, 0x00, 0x63, 0x6f, 0x72, 0x72, 0x5f, 0x6b, 0x65, 0x72, + 0x6e, 0x65, 0x6c, 0x00, 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0x60, 0x20, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, + 0x41, 0x80, 0x2d, 0x20, 0x00, 0x7e, 0x09, 0x03, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xc0, 0x20, 0x10, 0x01, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x20, 0xc0, 0x0f, 0x00, 0x12, + 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2f, + 0xc0, 0x0f, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x0a, 0x04, 0x07, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2f, + 0x80, 0x0f, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x05, + 0x22, 0x0a, 0x00, 0x20, 0x40, 0x01, 0x8d, 0x0a, 0xc0, 0x00, 0x00, 0x00, + 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, 0x40, 0x0f, 0x8d, 0x0a, + 0xc0, 0x00, 0x00, 0x00, 0x22, 0x00, 0xa1, 0x00, 0x02, 0x0e, 0x00, 0x20, + 0x68, 0x04, 0x00, 0x00, 0x68, 0x04, 0x00, 0x00, 0x41, 0x96, 0x6d, 0x20, + 0x07, 0x78, 0x0a, 0x08, 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x21, + 0x40, 0x0f, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x2e, 0x40, 0x01, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0x40, 0x0f, 0x8d, 0x1e, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x76, 0x78, 0x0a, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x21, 0x80, 0x01, 0x8d, 0x0a, + 0x40, 0x0f, 0x8d, 0x00, 0x01, 0x00, 0x80, 0x00, 0xe8, 0x3e, 0x80, 0x2e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x01, 0x20, 0x80, 0x00, + 0xe8, 0x3e, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2e, 0xc0, 0x0e, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x21, + 0xc0, 0x01, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x10, 0x16, 0x6f, 0x25, + 0x07, 0x00, 0x72, 0x08, 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, + 0x40, 0x02, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x40, 0x96, 0x75, 0x20, + 0x07, 0x76, 0x76, 0x08, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x21, + 0xc0, 0x01, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0x40, 0x07, 0x00, 0xc2, 0x0e, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0x00, 0x01, 0x00, 0xc2, 0x01, 0x00, 0x00, + 0x00, 0x5e, 0x02, 0x04, 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0x68, 0x03, 0x00, 0x00, 0x68, 0x03, 0x00, 0x00, 0x10, 0x00, 0x80, 0x03, + 0x24, 0x0a, 0x00, 0x20, 0x14, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x20, 0x80, 0x03, 0x24, 0x0a, 0x00, 0x20, 0x14, 0x01, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x11, 0x00, 0x04, 0x00, 0x00, 0x34, + 0x00, 0x14, 0x00, 0x0e, 0xe0, 0x01, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0xe7, 0x70, 0x78, 0x72, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, + 0x80, 0x01, 0x8d, 0x0a, 0x40, 0x02, 0x8d, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x1e, 0xc4, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2e, 0x00, 0x0e, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, + 0x80, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x75, 0x20, + 0x07, 0x70, 0x70, 0x08, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, + 0x80, 0x02, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x2d, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x22, 0x80, 0x02, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x20, + 0xc4, 0x0f, 0x00, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xc4, 0x2f, 0xc4, 0x0f, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x96, 0x15, 0x20, 0xe0, 0x6c, 0x06, 0x0a, 0x40, 0x96, 0x15, 0x20, + 0xe0, 0x1a, 0x06, 0x72, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x23, + 0xc4, 0x00, 0x00, 0x0a, 0x40, 0x0f, 0x8d, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x2c, 0xc4, 0x00, 0x00, 0x0a, 0x40, 0x02, 0x8d, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2d, 0x80, 0x0d, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x23, + 0x40, 0x03, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x23, 0x00, 0x03, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x2c, 0xa0, 0x0c, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x79, 0x20, 0x07, 0x6c, 0x6c, 0x08, + 0x40, 0x96, 0x79, 0x20, 0x07, 0x1a, 0x1a, 0x08, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x23, 0x00, 0x03, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x2c, 0xa0, 0x0c, 0x8d, 0x0a, + 0x1c, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x20, 0x2d, + 0x80, 0x0d, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x10, 0x00, 0x80, 0x05, + 0x26, 0x0a, 0x00, 0x20, 0xc4, 0x0f, 0x00, 0x0a, 0x14, 0x01, 0x00, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x23, 0x40, 0x03, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xe0, 0x2c, + 0x00, 0x03, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x23, 0xa0, 0x0c, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x10, 0x20, 0x80, 0x05, 0x26, 0x0a, 0x00, 0x20, 0xc4, 0x0f, 0x00, 0x0a, + 0x14, 0x01, 0x00, 0x00, 0x5b, 0xe2, 0x06, 0x20, 0x00, 0x70, 0x73, 0xd2, + 0x5b, 0x63, 0x01, 0x20, 0x00, 0xb0, 0x78, 0xce, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0xe0, 0x06, 0x00, 0x02, 0x0e, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0x60, 0x01, 0x00, 0x82, 0x02, 0x00, 0x00, + 0x00, 0x5e, 0x02, 0x04, 0x20, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x34, + 0x00, 0x14, 0x00, 0x0e, 0xa0, 0xfe, 0xff, 0xff, 0x40, 0x96, 0x01, 0x20, + 0xe7, 0x63, 0x78, 0x72, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x24, + 0x80, 0x01, 0x8d, 0x0a, 0x40, 0x02, 0x8d, 0x00, 0x41, 0x96, 0x6d, 0x20, + 0x07, 0x5f, 0x72, 0x08, 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, + 0x40, 0x02, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x2c, 0x60, 0x0c, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x24, 0x00, 0x04, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x5f, 0x5f, 0x0a, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, 0x80, 0x04, 0x8d, 0x0a, + 0x40, 0x0f, 0x8d, 0x00, 0x40, 0x96, 0x75, 0x20, 0x07, 0x63, 0x63, 0x08, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x24, 0x00, 0x04, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x2b, + 0xe0, 0x0b, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x24, 0x80, 0x04, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x20, 0x2c, 0x60, 0x0c, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2e, + 0x40, 0x0e, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x40, 0x24, 0x00, 0x04, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0x40, 0x02, 0x8d, 0x1e, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x96, 0x75, 0x20, 0x07, 0x5f, 0x5f, 0x08, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, 0x80, 0x04, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x10, 0x00, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, + 0x40, 0x0e, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, + 0x22, 0x0a, 0x00, 0x20, 0x40, 0x02, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0x10, 0x06, 0x00, 0xe2, 0x0b, 0x00, 0x00, + 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0x20, 0x02, 0x00, + 0x82, 0x04, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x27, 0x00, 0xa1, 0x10, + 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0xd8, 0xfc, 0xff, 0xff, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, + 0x07, 0x7f, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x60, 0x07, + 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x73, 0x79, 0x6d, 0x6d, 0x61, 0x74, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00 +}; +unsigned int correlation_Gen9core_gen_len = 11580; diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.cc b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.cc new file mode 100644 index 0000000000..993531fabc --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.cc @@ -0,0 +1,404 @@ +/** + * covariance.c: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#include +#include +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#else +#include "../../CL/cl.h" +#endif + +#define POLYBENCH_TIME 1 + +//select the OpenCL device to use (can be GPU, CPU, or Accelerator such as Intel Xeon Phi) +#define OPENCL_DEVICE_SELECTION CL_DEVICE_TYPE_GPU + +#include "covariance.h" +#include "../../polybench.h" + +//define the error threshold for the results "not matching" +#define PERCENT_DIFF_ERROR_THRESHOLD 0.05 + +#define MAX_SOURCE_SIZE (0x100000) + +#define sqrt_of_array_cell(x,j) sqrt(x[j]) + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + + +namespace ns_covariance { + +#include "covariance_kernel.h" +#include "../../polybenchUtilFuncts.h" + + + +char str_temp[1024]; + +DATA_TYPE float_n= 3214212.01; +DATA_TYPE eps= 0.005; + +cl_platform_id platform_id; +cl_device_id device_id; +cl_uint num_devices; +cl_uint num_platforms; +cl_int errcode; +cl_context clGPUContext; +cl_kernel clKernel_mean; +cl_kernel clKernel_std; +cl_kernel clKernel_reduce; +cl_kernel clKernel_covar; +cl_command_queue clCommandQue; +cl_program clProgram; +cl_mem data_mem_obj; +cl_mem stddev_mem_obj; +cl_mem mean_mem_obj; +cl_mem symmat_mem_obj; +FILE *fp; +char *source_str; +size_t source_size; + +#define RUN_ON_CPU + + +void compareResults(int m, int n, DATA_TYPE POLYBENCH_2D(symmat,M,M,m,m), DATA_TYPE POLYBENCH_2D(symmat_outputFromGpu,M,M,m,m)) +{ + int i,j,fail; + fail = 0; + + for (i=0; i < m; i++) + { + for (j=0; j < n; j++) + { + if (percentDiff(symmat[i][j], symmat_outputFromGpu[i][j]) > PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + } + printf("Non-Matching CPU-GPU Outputs Beyond Error Threshold of %4.2f Percent: %d\n", PERCENT_DIFF_ERROR_THRESHOLD, fail); +} + + +void read_cl_file() +{ + // // Load the kernel source code into the array source_str + // fp = fopen("covariance.cl", "r"); + // if (!fp) { + // fprintf(stderr, "Failed to load kernel.\n"); + // exit(1); + // } + // source_str = (char*)malloc(MAX_SOURCE_SIZE); + // source_size = fread( source_str, 1, MAX_SOURCE_SIZE, fp); + // fclose( fp ); +} + + +void init_arrays(int m, int n, DATA_TYPE POLYBENCH_2D(data,M,N,m,n)) +{ + int i, j; + + for (i = 0; i < m; i++) + { + for (j = 0; j < n; j++) + { + data[i][j] = ((DATA_TYPE) i*j) / M; + } + } +} + + +void cl_initialization() +{ + // Get platform and device information + errcode = clGetPlatformIDs(1, &platform_id, &num_platforms); + if(errcode == CL_SUCCESS) printf("number of platforms is %d\n",num_platforms); + else printf("Error getting platform IDs\n"); + + errcode = clGetPlatformInfo(platform_id,CL_PLATFORM_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform name is %s\n",str_temp); + else printf("Error getting platform name\n"); + + errcode = clGetPlatformInfo(platform_id, CL_PLATFORM_VERSION, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform version is %s\n",str_temp); + else printf("Error getting platform version\n"); + + errcode = clGetDeviceIDs( platform_id, OPENCL_DEVICE_SELECTION, 1, &device_id, &num_devices); + if(errcode == CL_SUCCESS) printf("number of devices is %d\n", num_devices); + else printf("Error getting device IDs\n"); + + errcode = clGetDeviceInfo(device_id,CL_DEVICE_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("device name is %s\n",str_temp); + else printf("Error getting device name\n"); + + // Create an OpenCL context + clGPUContext = clCreateContext( NULL, 1, &device_id, NULL, NULL, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating context\n"); + + //Create a command-queue + clCommandQue = clCreateCommandQueue(clGPUContext, device_id, 0, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating command queue\n"); +} + + +void cl_mem_init(DATA_TYPE POLYBENCH_2D(data,M,N,m,n), DATA_TYPE POLYBENCH_2D(symmat,M,M,m,m), DATA_TYPE POLYBENCH_1D(mean,M,m)) +{ + data_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * M * N, NULL, &errcode); + symmat_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * M * N, NULL, &errcode); + mean_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * M, NULL, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating buffers\n"); + + errcode = clEnqueueWriteBuffer(clCommandQue, data_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * M * N, data, 0, NULL, NULL); + errcode = clEnqueueWriteBuffer(clCommandQue, symmat_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * M * N, symmat, 0, NULL, NULL); + errcode = clEnqueueWriteBuffer(clCommandQue, mean_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * M, mean, 0, NULL, NULL); + if(errcode != CL_SUCCESS)printf("Error in writing buffers\n"); +} + + +void cl_load_prog() +{ + // Create a program from the kernel source + const size_t kernel_size = covariance_Gen9core_gen_len; + const unsigned char* kernel_bin = covariance_Gen9core_gen; + clProgram = clCreateProgramWithBinary(clGPUContext, 1, &device_id, &kernel_size, &kernel_bin, NULL, &errcode); + // clProgram = clCreateProgramWithSource(clGPUContext, 1, (const char **)&source_str, (const size_t *)&source_size, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating program\n"); + + // Build the program + errcode = clBuildProgram(clProgram, 1, &device_id, NULL, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in building program\n"); + + // Create the OpenCL kernel + clKernel_mean = clCreateKernel(clProgram, "mean_kernel", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel1\n"); + + clKernel_reduce = clCreateKernel(clProgram, "reduce_kernel", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel2\n"); + + clKernel_covar = clCreateKernel(clProgram, "covar_kernel", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel3\n"); + clFinish(clCommandQue); +} + + +void cl_launch_kernel(int m, int n) +{ + size_t localWorkSize_Kernel1[2], globalWorkSize_Kernel1[2]; + size_t localWorkSize_Kernel2[2], globalWorkSize_Kernel2[2]; + size_t localWorkSize_Kernel3[2], globalWorkSize_Kernel3[2]; + + localWorkSize_Kernel1[0] = DIM_LOCAL_WORK_GROUP_KERNEL_1_X; + localWorkSize_Kernel1[1] = DIM_LOCAL_WORK_GROUP_KERNEL_1_Y; + globalWorkSize_Kernel1[0] = (size_t)ceil(((float)M) / ((float)DIM_LOCAL_WORK_GROUP_KERNEL_1_X)) * DIM_LOCAL_WORK_GROUP_KERNEL_1_X; + globalWorkSize_Kernel1[1] = 1; + + localWorkSize_Kernel2[0] = DIM_LOCAL_WORK_GROUP_KERNEL_2_X; + localWorkSize_Kernel2[1] = DIM_LOCAL_WORK_GROUP_KERNEL_2_Y; + globalWorkSize_Kernel2[0] = (size_t)ceil(((float)M) / ((float)DIM_LOCAL_WORK_GROUP_KERNEL_2_X)) * DIM_LOCAL_WORK_GROUP_KERNEL_2_X; + globalWorkSize_Kernel2[1] = (size_t)ceil(((float)N) / ((float)DIM_LOCAL_WORK_GROUP_KERNEL_2_Y)) * DIM_LOCAL_WORK_GROUP_KERNEL_2_Y; + + localWorkSize_Kernel3[0] = DIM_LOCAL_WORK_GROUP_KERNEL_3_X; + localWorkSize_Kernel3[1] = DIM_LOCAL_WORK_GROUP_KERNEL_3_Y; + globalWorkSize_Kernel3[0] = (size_t)ceil(((float)M) / ((float)DIM_LOCAL_WORK_GROUP_KERNEL_3_X)) * DIM_LOCAL_WORK_GROUP_KERNEL_3_X; + globalWorkSize_Kernel3[1] = 1; + + /* Start timer. */ + polybench_start_instruments; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel_mean, 0, sizeof(cl_mem), (void *)&mean_mem_obj); + errcode |= clSetKernelArg(clKernel_mean, 1, sizeof(cl_mem), (void *)&data_mem_obj); + errcode |= clSetKernelArg(clKernel_mean, 2, sizeof(DATA_TYPE), (void *)&float_n); + errcode |= clSetKernelArg(clKernel_mean, 3, sizeof(int), (void *)&m); + errcode |= clSetKernelArg(clKernel_mean, 4, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments1\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel_mean, 1, NULL, globalWorkSize_Kernel1, localWorkSize_Kernel1, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel1\n"); + clEnqueueBarrier(clCommandQue); + + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel_reduce, 0, sizeof(cl_mem), (void *)&mean_mem_obj); + errcode |= clSetKernelArg(clKernel_reduce, 1, sizeof(cl_mem), (void *)&data_mem_obj); + errcode |= clSetKernelArg(clKernel_reduce, 2, sizeof(int), (void *)&m); + errcode |= clSetKernelArg(clKernel_reduce, 3, sizeof(int), (void *)&n); + + if(errcode != CL_SUCCESS) printf("Error in seting arguments2\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel_reduce, 2, NULL, globalWorkSize_Kernel2, localWorkSize_Kernel2, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel2\n"); + clEnqueueBarrier(clCommandQue); + + // Set the arguments of the kernel + + errcode = clSetKernelArg(clKernel_covar, 0, sizeof(cl_mem), (void *)&symmat_mem_obj); + errcode |= clSetKernelArg(clKernel_covar, 1, sizeof(cl_mem), (void *)&data_mem_obj); + errcode |= clSetKernelArg(clKernel_covar, 2, sizeof(int), (void *)&m); + errcode |= clSetKernelArg(clKernel_covar, 3, sizeof(int), (void *)&n); + + if(errcode != CL_SUCCESS) printf("Error in seting arguments4\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel_covar, 1, NULL, globalWorkSize_Kernel3, localWorkSize_Kernel3, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel4\n"); + clFinish(clCommandQue); + + /* Stop and print timer. */ + printf("GPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; +} + + +void cl_clean_up() +{ + // Clean up + errcode = clFlush(clCommandQue); + errcode = clFinish(clCommandQue); + errcode = clReleaseKernel(clKernel_reduce); + errcode = clReleaseKernel(clKernel_mean); + errcode = clReleaseKernel(clKernel_std); + errcode = clReleaseKernel(clKernel_covar); + errcode = clReleaseProgram(clProgram); + errcode = clReleaseMemObject(symmat_mem_obj); + errcode = clReleaseMemObject(data_mem_obj); + errcode = clReleaseMemObject(mean_mem_obj); + errcode = clReleaseMemObject(stddev_mem_obj); + errcode = clReleaseCommandQueue(clCommandQue); + errcode = clReleaseContext(clGPUContext); + if(errcode != CL_SUCCESS) printf("Error in cleanup\n"); +} + + +void covariance(int m, int n, DATA_TYPE POLYBENCH_2D(data,M,N,m,n), DATA_TYPE POLYBENCH_2D(symmat,M,M,m,m), DATA_TYPE POLYBENCH_1D(mean,M,m)) +{ + int i, j, j1,j2; + + /* Determine mean of column vectors of input data matrix */ + for (j = 0; j < _PB_M; j++) + { + mean[j] = 0.0; + for (i = 0; i < _PB_N; i++) + { + mean[j] += data[i][j]; + } + mean[j] /= float_n; + } + + /* Center the column vectors. */ + for (i = 0; i < _PB_N; i++) + { + for (j = 0; j < _PB_M; j++) + { + data[i][j] -= mean[j]; + } + } + + /* Calculate the m * m covariance matrix. */ + for (j1 = 0; j1 < _PB_M; j1++) + { + for (j2 = j1; j2 < _PB_M; j2++) + { + symmat[j1][j2] = 0.0; + for (i = 0; i < _PB_N; i++) + { + symmat[j1][j2] += data[i][j1] * data[i][j2]; + } + symmat[j2][j1] = symmat[j1][j2]; + } + } +} + + +/* DCE code. Must scan the entire live-out data. + Can be used also to check the correctness of the output. */ +static +void print_array(int m, DATA_TYPE POLYBENCH_2D(symmat,M,M,m,m)) +{ + int i, j; + + for (i = 0; i < m; i++) + for (j = 0; j < m; j++) { + fprintf (stderr, DATA_PRINTF_MODIFIER, symmat[i][j]); + if ((i * m + j) % 20 == 0) fprintf (stderr, "\n"); + } + fprintf (stderr, "\n"); +} + + +int main(int argc, char *argv[]) +{ + int m = M; + int n = N; + + POLYBENCH_2D_ARRAY_DECL(data,DATA_TYPE,M,N,m,n); + POLYBENCH_2D_ARRAY_DECL(symmat,DATA_TYPE,M,M,m,m); + POLYBENCH_1D_ARRAY_DECL(mean,DATA_TYPE,M,m); + POLYBENCH_2D_ARRAY_DECL(symmat_outputFromGpu,DATA_TYPE,M,M,m,m); + + init_arrays(m, n, POLYBENCH_ARRAY(data)); + + read_cl_file(); + cl_initialization(); + cl_mem_init(POLYBENCH_ARRAY(data), POLYBENCH_ARRAY(symmat), POLYBENCH_ARRAY(mean)); + cl_load_prog(); + + cl_launch_kernel(m, n); + + errcode = clEnqueueReadBuffer(clCommandQue, symmat_mem_obj, CL_TRUE, 0, M * N * sizeof(DATA_TYPE), POLYBENCH_ARRAY(symmat_outputFromGpu), 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); + + #ifdef RUN_ON_CPU + + /* Start timer. */ + polybench_start_instruments; + + covariance(m, n, POLYBENCH_ARRAY(data), POLYBENCH_ARRAY(symmat), POLYBENCH_ARRAY(mean)); + + /* Stop and print timer. */ + printf("CPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + compareResults(m, n, POLYBENCH_ARRAY(symmat), POLYBENCH_ARRAY(symmat_outputFromGpu)); + + #else //prevent dead code elimination + + polybench_prevent_dce(print_array(m, POLYBENCH_ARRAY(symmat_outputFromGpu))); + + #endif //RUN_ON_CPU + + + cl_clean_up(); + + POLYBENCH_FREE_ARRAY(data); + POLYBENCH_FREE_ARRAY(symmat); + POLYBENCH_FREE_ARRAY(mean); + POLYBENCH_FREE_ARRAY(symmat_outputFromGpu); + + return 0; +} + +} \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.cl b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.cl new file mode 100644 index 0000000000..f81de99b7d --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.cl @@ -0,0 +1,67 @@ +/** + * covariance.cl: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +typedef float DATA_TYPE; + + +__kernel void mean_kernel(__global DATA_TYPE *mean, __global DATA_TYPE *data, DATA_TYPE float_n, int m, int n) +{ + int j = get_global_id(0); + + if (j < m) + { + mean[j] = 0.0; + + int i; + for(i = 0; i < n; i++) + { + mean[j] += data[i * m + j]; + } + mean[j] /= (DATA_TYPE)float_n; + } +} + +__kernel void reduce_kernel(__global DATA_TYPE *mean, __global DATA_TYPE *data, int m, int n) +{ + int j = get_global_id(0); + int i = get_global_id(1); + + if ((i < n) && (j < m)) + { + data[i * m + j] -= mean[j]; + } +} + + +__kernel void covar_kernel(__global DATA_TYPE *symmat, __global DATA_TYPE *data, int m, int n) +{ + int j1 = get_global_id(0); + int i, j2; + + if (j1 < m) + { + for (j2 = j1; j2 < m; j2++) + { + symmat[j1*m + j2] = 0.0; + for(i = 0; i < n; i++) + { + symmat[j1 * m + j2] += data[i * m + j1] * data[i * m + j2]; + } + symmat[j2 * m + j1] = symmat[j1 * m + j2]; + } + } +} + diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.h new file mode 100644 index 0000000000..274dd37467 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance.h @@ -0,0 +1,69 @@ +/** + * covariance.h: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#ifndef COVARIANCE_H +# define COVARIANCE_H + +/* Default to STANDARD_DATASET. */ +# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET) +# define MINI_DATASET +# endif + +/* Do not define anything if the user manually defines the size. */ +# if !defined(M) && !defined(N) +/* Define the possible dataset sizes. */ +# ifdef MINI_DATASET +#define M 512 +#define N 512 +# endif + +# ifdef SMALL_DATASET +#define M 1024 +#define N 1024 +# endif + +# ifdef STANDARD_DATASET /* Default if unspecified. */ +#define M 2048 +#define N 2048 +# endif + +# ifdef LARGE_DATASET +#define M 4096 +#define N 4096 +# endif + +# ifdef EXTRALARGE_DATASET +#define M 8192 +#define N 8192 +# endif +# endif /* !N */ + +# define _PB_M POLYBENCH_LOOP_BOUND(M,m) +# define _PB_N POLYBENCH_LOOP_BOUND(N,n) + +# ifndef DATA_TYPE +# define DATA_TYPE float +# define DATA_PRINTF_MODIFIER "%0.2lf " +# endif + +/* Thread block dimensions for kernel 1*/ +#define DIM_LOCAL_WORK_GROUP_KERNEL_1_X 256 +#define DIM_LOCAL_WORK_GROUP_KERNEL_1_Y 1 + +/* Thread block dimensions for kernel 2*/ +#define DIM_LOCAL_WORK_GROUP_KERNEL_2_X 32 +#define DIM_LOCAL_WORK_GROUP_KERNEL_2_Y 8 + +/* Thread block dimensions for kernel 3*/ +#define DIM_LOCAL_WORK_GROUP_KERNEL_3_X 256 +#define DIM_LOCAL_WORK_GROUP_KERNEL_3_Y 1 + + +#endif /* !COVARIANCE*/ \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance_kernel.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance_kernel.h new file mode 100644 index 0000000000..49e17021e5 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/covariance/covariance_kernel.h @@ -0,0 +1,641 @@ +unsigned char covariance_Gen9core_gen[] = { + 0x43, 0x54, 0x4e, 0x49, 0x39, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x57, 0xc7, 0x17, 0xd9, 0xa6, 0xd5, 0x30, 0xac, + 0x5e, 0x3c, 0xf2, 0x55, 0x0c, 0x00, 0x00, 0x00, 0x88, 0x05, 0x00, 0x00, + 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x6d, 0x65, 0x61, 0x6e, + 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x80, 0x20, + 0x24, 0x01, 0x00, 0x0a, 0x64, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x20, 0x80, 0x00, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, 0x80, 0x00, 0x00, 0x12, + 0x40, 0x00, 0xb1, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x0c, 0x05, 0x07, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x21, 0x40, 0x01, 0x8d, 0x0a, + 0xe0, 0x00, 0x00, 0x00, 0x10, 0x16, 0x73, 0x25, 0x07, 0x00, 0x0c, 0x08, + 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, 0xc0, 0x01, 0x8d, 0x0a, + 0x14, 0x01, 0x00, 0x00, 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0x58, 0x02, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x22, 0x80, 0x01, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0xc0, 0x01, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x80, 0x00, 0xe8, 0x3e, 0x80, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x80, 0x00, + 0xe8, 0x3e, 0xc0, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x96, 0x79, 0x20, 0x07, 0x10, 0x10, 0x08, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x22, 0x40, 0x02, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x80, 0x03, 0x26, 0x0a, 0x00, 0x20, 0x18, 0x01, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x80, 0x03, 0x26, 0x0a, 0x00, 0x20, + 0x18, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0x40, 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0x60, 0x01, 0x00, 0x42, 0x02, 0x00, 0x00, + 0x00, 0x5e, 0x02, 0x04, 0x20, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x34, + 0x00, 0x14, 0x00, 0x0e, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, + 0xe8, 0x3e, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3e, 0x40, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x34, + 0x00, 0x14, 0x00, 0x0e, 0x28, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, + 0xe8, 0x3e, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3e, 0x40, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x1e, 0x84, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x88, 0x20, 0x84, 0x00, 0x00, 0x0a, 0x14, 0x01, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x84, 0x20, 0x84, 0x00, 0x00, 0x1e, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x96, 0x19, 0x20, 0xe0, 0x1c, 0x04, 0x0c, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, 0x88, 0x00, 0x00, 0x0a, + 0xc0, 0x01, 0x8d, 0x00, 0x10, 0x00, 0x80, 0x05, 0x24, 0x0a, 0x00, 0x20, + 0x84, 0x00, 0x00, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, + 0x24, 0x0a, 0x00, 0x20, 0x84, 0x00, 0x00, 0x0a, 0x18, 0x01, 0x00, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, 0x80, 0x03, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, + 0xc0, 0x03, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x1c, 0x1c, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, + 0xc0, 0x03, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x00, 0x24, 0x80, 0x03, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x24, 0xc0, 0x03, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x40, 0x56, 0x02, 0x20, 0xe7, 0x18, 0x18, 0x20, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x40, 0x23, 0x40, 0x03, 0x8d, 0x3a, + 0x40, 0x04, 0x8d, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x80, 0x01, 0x00, + 0x02, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0xa0, 0x01, 0x00, 0x42, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x20, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x34, 0x00, 0x14, 0x00, 0x0e, + 0x08, 0xff, 0xff, 0xff, 0x38, 0x56, 0x6e, 0x29, 0x07, 0x24, 0x18, 0x08, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0xc0, 0x24, + 0x40, 0x03, 0x8d, 0x3a, 0x10, 0x01, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0x40, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0x60, 0x02, 0x00, 0x42, 0x02, 0x00, 0x00, + 0x00, 0x5e, 0x02, 0x04, 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, + 0x07, 0x7f, 0x03, 0x00, 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, + 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6d, 0x65, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x6e, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x3b, 0x34, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0xaf, 0xb1, 0x1e, 0xcf, 0xa6, 0xd5, 0x30, 0xac, + 0x5e, 0x3c, 0xf2, 0x55, 0x10, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x68, 0x02, 0x00, 0x00, 0x72, 0x65, 0x64, 0x75, + 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0xa0, 0x20, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, + 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x80, 0x2d, 0x20, + 0x00, 0x06, 0x09, 0x05, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x20, + 0x24, 0x01, 0x00, 0x0a, 0xb8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x4c, 0x16, 0xc8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x21, 0xc0, 0x00, 0x00, 0x12, + 0x40, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, + 0xc4, 0x00, 0x00, 0x12, 0x80, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x21, 0xc0, 0x00, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0xc4, 0x00, 0x00, 0x12, + 0x60, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, + 0x80, 0x01, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x23, 0x80, 0x02, 0x8d, 0x0a, 0xe4, 0x00, 0x00, 0x00, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x0e, 0x0a, 0x07, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x16, 0x12, 0x07, 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, + 0x00, 0x02, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, + 0x20, 0x0a, 0x00, 0x20, 0x00, 0x03, 0x8d, 0x0a, 0x14, 0x01, 0x00, 0x00, + 0x10, 0x16, 0x6f, 0x25, 0x07, 0x00, 0x0e, 0x08, 0x02, 0x20, 0x81, 0x00, + 0x4a, 0x12, 0x60, 0x25, 0xc8, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x20, 0x81, 0x00, 0x48, 0x12, 0x40, 0x25, 0xc8, 0x00, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x19, 0x73, 0x25, 0x07, 0x00, 0x16, 0x08, + 0x05, 0x20, 0x80, 0x02, 0x40, 0x12, 0x00, 0x20, 0x40, 0x05, 0xb1, 0x12, + 0x60, 0x05, 0xb1, 0x00, 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0x28, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x41, 0x96, 0x6d, 0x20, + 0x07, 0x22, 0x16, 0x08, 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, + 0x00, 0x03, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x23, 0xc0, 0x01, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, 0x00, 0x02, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x22, 0x22, 0x0e, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, 0x80, 0x04, 0x8d, 0x0a, + 0x00, 0x02, 0x8d, 0x00, 0x40, 0x96, 0x75, 0x20, 0x07, 0x1a, 0x1a, 0x08, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, 0x80, 0x03, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x24, + 0x40, 0x04, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x24, 0x80, 0x04, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x23, 0x40, 0x03, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x24, + 0x80, 0x03, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x79, 0x20, + 0x07, 0x22, 0x22, 0x08, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, + 0x80, 0x04, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x24, 0x40, 0x04, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x25, 0x80, 0x04, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x40, 0x56, 0x02, 0x20, 0xf7, 0x26, 0x26, 0x1e, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x00, 0x25, 0x00, 0x05, 0x8d, 0x3a, + 0x00, 0x44, 0x8d, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x60, 0x02, 0x00, + 0x42, 0x04, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0x80, 0x02, 0x00, 0x82, 0x04, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x05, 0x00, + 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, + 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6d, 0x65, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0xd3, 0x3e, 0xa9, 0x11, 0xa6, 0xd5, 0x30, 0xac, 0x5e, 0x3c, 0xf2, 0x55, + 0x10, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x70, 0x04, 0x00, 0x00, 0x63, 0x6f, 0x76, 0x61, 0x72, 0x5f, 0x6b, 0x65, + 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x80, 0x2d, 0x20, 0x00, 0x7e, 0x09, 0x03, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x20, 0xc0, 0x0f, 0x00, 0x12, + 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2f, + 0xc0, 0x0f, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x0a, 0x04, 0x07, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2f, + 0x80, 0x0f, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x10, 0x16, 0x6f, 0x25, + 0x07, 0x00, 0x0a, 0x08, 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, + 0x40, 0x0f, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x22, 0x00, 0xa1, 0x00, + 0x00, 0x0e, 0x00, 0x20, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, + 0x41, 0x96, 0x6d, 0x20, 0x07, 0x0c, 0x0a, 0x08, 0x41, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x2f, 0x40, 0x0f, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x80, 0x03, 0x24, 0x0a, 0x00, 0x20, 0x14, 0x01, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x80, 0x03, 0x24, 0x0a, 0x00, 0x20, + 0x14, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd6, 0x02, 0x20, + 0x07, 0x0e, 0x0a, 0x00, 0x01, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2e, + 0x40, 0x0f, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0xe7, 0x10, 0x0c, 0x0e, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2e, + 0x00, 0x0f, 0x8d, 0x0a, 0xc0, 0x0e, 0x8d, 0x00, 0x01, 0x00, 0x80, 0x00, + 0xe8, 0x3e, 0x40, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3e, 0x40, 0x2e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, + 0x00, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x2e, 0x80, 0x0e, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x96, 0x75, 0x20, 0x07, 0x10, 0x10, 0x08, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x2e, 0x80, 0x0e, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0x20, 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, + 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0x20, 0x07, 0x00, + 0x82, 0x0e, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x20, 0x00, 0x01, 0x00, + 0x04, 0x00, 0x00, 0x34, 0x00, 0x14, 0x00, 0x0e, 0x30, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x80, 0x00, 0xe8, 0x3e, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3e, 0x00, 0x2e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x34, 0x00, 0x14, 0x00, 0x0e, 0x90, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x80, 0x00, 0xe8, 0x3e, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3e, 0x00, 0x2e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x1e, 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x2f, 0xc0, 0x00, 0x00, 0x0a, + 0x10, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x20, + 0xc0, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x40, 0x96, 0x15, 0x20, + 0xe0, 0x16, 0x7e, 0x0a, 0x40, 0x96, 0x15, 0x20, 0xe0, 0x18, 0x7e, 0x0e, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2d, 0xc4, 0x0f, 0x00, 0x0a, + 0x40, 0x0f, 0x8d, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x2c, + 0xc4, 0x0f, 0x00, 0x0a, 0xc0, 0x0e, 0x8d, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x22, 0xc0, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x23, 0x00, 0x03, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2d, + 0xc0, 0x0d, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x2c, 0xe0, 0x0c, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x96, 0x79, 0x20, 0x07, 0x16, 0x16, 0x08, 0x40, 0x96, 0x79, 0x20, + 0x07, 0x18, 0x18, 0x08, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2d, + 0xc0, 0x0d, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x2c, 0xe0, 0x0c, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x2d, 0xc0, 0x02, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x10, 0x00, 0x80, 0x05, 0x26, 0x0a, 0x00, 0x20, + 0xc0, 0x00, 0x00, 0x0a, 0x14, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x40, 0x23, 0x00, 0x03, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x20, 0x2d, 0xc0, 0x0d, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x23, + 0xe0, 0x0c, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x10, 0x20, 0x80, 0x05, + 0x26, 0x0a, 0x00, 0x20, 0xc0, 0x00, 0x00, 0x0a, 0x14, 0x01, 0x00, 0x00, + 0x5b, 0x42, 0x01, 0x20, 0x00, 0xa0, 0x68, 0xd6, 0x5b, 0x03, 0x07, 0x20, + 0x00, 0x80, 0x73, 0xd2, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x40, 0x01, 0x00, + 0x02, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0x00, 0x07, 0x00, 0x82, 0x0e, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x20, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x34, 0x00, 0x14, 0x00, 0x0e, + 0xa0, 0xfe, 0xff, 0xff, 0x41, 0x96, 0x6d, 0x20, 0x07, 0x65, 0x0e, 0x08, + 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, 0xc0, 0x0e, 0x8d, 0x0a, + 0x10, 0x01, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2c, + 0xc0, 0x01, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x24, 0xc0, 0x0e, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe7, 0x65, 0x65, 0x0a, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x23, 0xc0, 0x03, 0x8d, 0x0a, 0x40, 0x0f, 0x8d, 0x00, + 0x10, 0x00, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, 0x60, 0x0c, 0x8d, 0x0a, + 0x10, 0x01, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, + 0x00, 0x04, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x2c, 0xa0, 0x0c, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, 0xc0, 0x03, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x75, 0x20, 0x07, 0x65, 0x65, 0x08, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, 0xc0, 0x03, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x40, 0x01, 0x00, + 0xa2, 0x0c, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0x00, 0x07, 0x00, 0xc2, 0x03, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x28, 0x00, 0xb1, 0x00, 0x02, 0x0e, 0x00, 0x20, 0x28, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0xd6, 0x02, 0x20, 0x07, 0x0e, 0x63, 0x00, + 0x01, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2e, 0x00, 0x04, 0x8d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0xa0, 0x10, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x0e, 0xb0, 0xfc, 0xff, 0xff, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, + 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x73, 0x79, 0x6d, 0x6d, + 0x61, 0x74, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00 +}; +unsigned int covariance_Gen9core_gen_len = 7648; diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.cc b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.cc new file mode 100644 index 0000000000..19e8d7e766 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.cc @@ -0,0 +1,406 @@ +/** + * fdtd2d.c: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#include +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#else +#include "../../CL/cl.h" +#endif + +#define POLYBENCH_TIME 1 + +//select the OpenCL device to use (can be GPU, CPU, or Accelerator such as Intel Xeon Phi) +#define OPENCL_DEVICE_SELECTION CL_DEVICE_TYPE_GPU + +#include "fdtd2d.h" +#include "../../polybench.h" + +//define the error threshold for the results "not matching" +#define PERCENT_DIFF_ERROR_THRESHOLD 1.05 + +#define MAX_SOURCE_SIZE (0x100000) + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +namespace ns_fdtd_2d +{ + + + +#include "../../polybenchUtilFuncts.h" +#include "fdtd2d_kernel.h" + +char str_temp[1024]; + +cl_platform_id platform_id; +cl_device_id device_id; +cl_uint num_devices; +cl_uint num_platforms; +cl_int errcode; +cl_context clGPUContext; +cl_kernel clKernel1; +cl_kernel clKernel2; +cl_kernel clKernel3; +cl_command_queue clCommandQue; +cl_program clProgram; + +cl_mem fict_mem_obj; +cl_mem ex_mem_obj; +cl_mem ey_mem_obj; +cl_mem hz_mem_obj; + +FILE *fp; +char *source_str; +size_t source_size; + +#define RUN_ON_CPU + + +void compareResults(int nx, int ny, DATA_TYPE POLYBENCH_2D(hz1,NX,NY,nx,ny), DATA_TYPE POLYBENCH_2D(hz2,NX,NY,nx,ny)) +{ + int i, j, fail; + fail = 0; + + for (i=0; i < nx; i++) + { + for (j=0; j < ny; j++) + { + if (percentDiff(hz1[i][j], hz2[i][j]) > PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + } + + // Print results + printf("Non-Matching CPU-GPU Outputs Beyond Error Threshold of %4.2f Percent: %d\n", PERCENT_DIFF_ERROR_THRESHOLD, fail); +} + + +void read_cl_file() +{ + // Load the kernel source code into the array source_str + // fp = fopen("fdtd2d.cl", "r"); + // if (!fp) { + // fprintf(stderr, "Failed to load kernel.\n"); + // exit(1); + // } + // source_str = (char*)malloc(MAX_SOURCE_SIZE); + // source_size = fread( source_str, 1, MAX_SOURCE_SIZE, fp); + // fclose( fp ); +} + + +void init_arrays(int tmax, int nx, int ny, DATA_TYPE POLYBENCH_1D(_fict_, TMAX, TMAX), DATA_TYPE POLYBENCH_2D(ex,NX,NY,nx,ny), + DATA_TYPE POLYBENCH_2D(ey,NX,NY,nx,ny), DATA_TYPE POLYBENCH_2D(hz,NX,NY,nx,ny)) +{ + int i, j; + + for (i = 0; i < tmax; i++) + { + _fict_[i] = (DATA_TYPE) i; + } + + for (i = 0; i < nx; i++) + { + for (j = 0; j < ny; j++) + { + ex[i][j] = ((DATA_TYPE) i*(j+1) + 1) / NX; + ey[i][j] = ((DATA_TYPE) (i-1)*(j+2) + 2) / NX; + hz[i][j] = ((DATA_TYPE) (i-9)*(j+4) + 3) / NX; + } + } +} + + +void cl_initialization() +{ + // Get platform and device information + errcode = clGetPlatformIDs(1, &platform_id, &num_platforms); + if(errcode == CL_SUCCESS) printf("number of platforms is %d\n",num_platforms); + else printf("Error getting platform IDs\n"); + + errcode = clGetPlatformInfo(platform_id,CL_PLATFORM_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform name is %s\n",str_temp); + else printf("Error getting platform name\n"); + + errcode = clGetPlatformInfo(platform_id, CL_PLATFORM_VERSION, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform version is %s\n",str_temp); + else printf("Error getting platform version\n"); + + errcode = clGetDeviceIDs( platform_id, OPENCL_DEVICE_SELECTION, 1, &device_id, &num_devices); + if(errcode == CL_SUCCESS) printf("number of devices is %d\n", num_devices); + else printf("Error getting device IDs\n"); + + errcode = clGetDeviceInfo(device_id,CL_DEVICE_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("device name is %s\n",str_temp); + else printf("Error getting device name\n"); + + // Create an OpenCL context + clGPUContext = clCreateContext( NULL, 1, &device_id, NULL, NULL, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating context\n"); + + //Create a command-queue + clCommandQue = clCreateCommandQueue(clGPUContext, device_id, 0, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating command queue\n"); +} + + +void cl_mem_init(DATA_TYPE POLYBENCH_1D(_fict_,TMAX,tmax), DATA_TYPE POLYBENCH_2D(ex,NX,NY,nx,ny), DATA_TYPE POLYBENCH_2D(ey,NX,NY,nx,ny), DATA_TYPE POLYBENCH_2D(hz,NX,NY,nx,ny)) +{ + fict_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * TMAX, NULL, &errcode); + ex_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * NX * NY, NULL, &errcode); + ey_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * NX * NY, NULL, &errcode); + hz_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * NX * NY, NULL, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating buffers\n"); + + errcode = clEnqueueWriteBuffer(clCommandQue, fict_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * TMAX, _fict_, 0, NULL, NULL); + errcode = clEnqueueWriteBuffer(clCommandQue, ex_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * NX * NY, ex, 0, NULL, NULL); + errcode = clEnqueueWriteBuffer(clCommandQue, ey_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * NX * NY, ey, 0, NULL, NULL); + errcode = clEnqueueWriteBuffer(clCommandQue, hz_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * NX * NY, hz, 0, NULL, NULL); + if(errcode != CL_SUCCESS)printf("Error in writing buffers\n"); +} + + +void cl_load_prog() +{ + // Create a program from the kernel source + const size_t kernel_size = fdtd2d_Gen9core_gen_len; + const unsigned char* kernel_bin = fdtd2d_Gen9core_gen; + clProgram = clCreateProgramWithBinary(clGPUContext, 1, &device_id, &kernel_size, &kernel_bin, NULL, &errcode); + // clProgram = clCreateProgramWithSource(clGPUContext, 1, (const char **)&source_str, (const size_t *)&source_size, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating program\n"); + + // Build the program + errcode = clBuildProgram(clProgram, 1, &device_id, NULL, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in building program\n"); + + // Create the OpenCL kernel + clKernel1 = clCreateKernel(clProgram, "fdtd_kernel1", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel1\n"); + + // Create the OpenCL kernel + clKernel2 = clCreateKernel(clProgram, "fdtd_kernel2", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel1\n"); + + // Create the OpenCL kernel + clKernel3 = clCreateKernel(clProgram, "fdtd_kernel3", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel1\n"); + clFinish(clCommandQue); +} + + +void cl_launch_kernel(int tmax, int nx, int ny) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = DIM_LOCAL_WORK_GROUP_Y; + globalWorkSize[0] = (size_t)ceil(((float)NY) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + globalWorkSize[1] = (size_t)ceil(((float)NX) / ((float)DIM_LOCAL_WORK_GROUP_Y)) * DIM_LOCAL_WORK_GROUP_Y; + + /* Start timer. */ + polybench_start_instruments; + + int t; + for(t=0;t<_PB_TMAX;t++) + { + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel1, 0, sizeof(cl_mem), (void *)&fict_mem_obj); + errcode = clSetKernelArg(clKernel1, 1, sizeof(cl_mem), (void *)&ex_mem_obj); + errcode |= clSetKernelArg(clKernel1, 2, sizeof(cl_mem), (void *)&ey_mem_obj); + errcode |= clSetKernelArg(clKernel1, 3, sizeof(cl_mem), (void *)&hz_mem_obj); + errcode |= clSetKernelArg(clKernel1, 4, sizeof(int), (void *)&t); + errcode |= clSetKernelArg(clKernel1, 5, sizeof(int), (void *)&nx); + errcode |= clSetKernelArg(clKernel1, 6, sizeof(int), (void *)&ny); + + if(errcode != CL_SUCCESS) printf("Error in seting arguments1\n"); + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel1, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel1\n"); + clEnqueueBarrier(clCommandQue); + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel2, 0, sizeof(cl_mem), (void *)&ex_mem_obj); + errcode |= clSetKernelArg(clKernel2, 1, sizeof(cl_mem), (void *)&ey_mem_obj); + errcode |= clSetKernelArg(clKernel2, 2, sizeof(cl_mem), (void *)&hz_mem_obj); + errcode |= clSetKernelArg(clKernel2, 3, sizeof(int), (void *)&nx); + errcode |= clSetKernelArg(clKernel2, 4, sizeof(int), (void *)&ny); + + if(errcode != CL_SUCCESS) printf("Error in seting arguments1\n"); + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel2, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel1\n"); + clEnqueueBarrier(clCommandQue); + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel3, 0, sizeof(cl_mem), (void *)&ex_mem_obj); + errcode |= clSetKernelArg(clKernel3, 1, sizeof(cl_mem), (void *)&ey_mem_obj); + errcode |= clSetKernelArg(clKernel3, 2, sizeof(cl_mem), (void *)&hz_mem_obj); + errcode |= clSetKernelArg(clKernel3, 3, sizeof(int), (void *)&nx); + errcode |= clSetKernelArg(clKernel3, 4, sizeof(int), (void *)&ny); + + if(errcode != CL_SUCCESS) printf("Error in seting arguments1\n"); + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel3, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel1\n"); + clFinish(clCommandQue); + } + + /* Stop and print timer. */ + printf("GPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; +} + + +void cl_clean_up() +{ + // Clean up + errcode = clFlush(clCommandQue); + errcode = clFinish(clCommandQue); + errcode = clReleaseKernel(clKernel1); + errcode = clReleaseKernel(clKernel2); + errcode = clReleaseKernel(clKernel3); + errcode = clReleaseProgram(clProgram); + errcode = clReleaseMemObject(fict_mem_obj); + errcode = clReleaseMemObject(ex_mem_obj); + errcode = clReleaseMemObject(ey_mem_obj); + errcode = clReleaseMemObject(hz_mem_obj); + errcode = clReleaseCommandQueue(clCommandQue); + errcode = clReleaseContext(clGPUContext); + if(errcode != CL_SUCCESS) printf("Error in cleanup\n"); +} + + +void runFdtd(int tmax, int nx, int ny, DATA_TYPE POLYBENCH_1D(_fict_, TMAX, TMAX), DATA_TYPE POLYBENCH_2D(ex,NX,NY,nx,ny), + DATA_TYPE POLYBENCH_2D(ey,NX,NY,nx,ny), DATA_TYPE POLYBENCH_2D(hz,NX,NY,nx,ny)) +{ + int t, i, j; + + for (t=0; t < _PB_TMAX; t++) + { + for (j=0; j < _PB_NY; j++) + { + ey[0][j] = _fict_[t]; + } + + for (i = 1; i < _PB_NX; i++) + { + for (j = 0; j < _PB_NY; j++) + { + ey[i][j] = ey[i][j] - 0.5*(hz[i][j] - hz[(i-1)][j]); + } + } + + for (i = 0; i < _PB_NX; i++) + { + for (j = 1; j < _PB_NY; j++) + { + ex[i][j] = ex[i][j] - 0.5*(hz[i][j] - hz[i][(j-1)]); + } + } + + for (i = 0; i < _PB_NX-1; i++) + { + for (j = 0; j < _PB_NY-1; j++) + { + hz[i][j] = hz[i][j] - 0.7*(ex[i][(j+1)] - ex[i][j] + ey[(i+1)][j] - ey[i][j]); + } + } + } +} + + +/* DCE code. Must scan the entire live-out data. + Can be used also to check the correctness of the output. */ +static +void print_array(int nx, + int ny, + DATA_TYPE POLYBENCH_2D(hz,NX,NY,nx,ny)) +{ + int i, j; + + for (i = 0; i < nx; i++) + for (j = 0; j < ny; j++) { + fprintf(stderr, DATA_PRINTF_MODIFIER, hz[i][j]); + if ((i * nx + j) % 20 == 0) fprintf(stderr, "\n"); + } + fprintf(stderr, "\n"); +} + + +int main(int argc, char *argv[]) +{ + int tmax = TMAX; + int nx = NX; + int ny = NY; + + POLYBENCH_1D_ARRAY_DECL(_fict_,DATA_TYPE,TMAX,TMAX); + POLYBENCH_2D_ARRAY_DECL(ex,DATA_TYPE,NX,NY,nx,ny); + POLYBENCH_2D_ARRAY_DECL(ey,DATA_TYPE,NX,NY,nx,ny); + POLYBENCH_2D_ARRAY_DECL(hz,DATA_TYPE,NX,NY,nx,ny); + POLYBENCH_2D_ARRAY_DECL(hz_outputFromGpu,DATA_TYPE,NX,NY,nx,ny); + + init_arrays(tmax, nx, ny, POLYBENCH_ARRAY(_fict_), POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz)); + + read_cl_file(); + cl_initialization(); + cl_mem_init(POLYBENCH_ARRAY(_fict_), POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz)); + cl_load_prog(); + + cl_launch_kernel(tmax, nx, ny); + + errcode = clEnqueueReadBuffer(clCommandQue, hz_mem_obj, CL_TRUE, 0, NX * NY * sizeof(DATA_TYPE), POLYBENCH_ARRAY(hz_outputFromGpu), 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); + + #ifdef RUN_ON_CPU + + /* Start timer. */ + polybench_start_instruments; + + runFdtd(tmax, nx, ny, POLYBENCH_ARRAY(_fict_), POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz)); + + /* Stop and print timer. */ + printf("CPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + compareResults(nx, ny, POLYBENCH_ARRAY(hz), POLYBENCH_ARRAY(hz_outputFromGpu)); + + #else //prevent dead code elimination + + polybench_prevent_dce(print_array(nx, ny, POLYBENCH_ARRAY(hz_outputFromGpu))); + + #endif //RUN_ON_CPU + + POLYBENCH_FREE_ARRAY(_fict_); + POLYBENCH_FREE_ARRAY(ex); + POLYBENCH_FREE_ARRAY(ey); + POLYBENCH_FREE_ARRAY(hz); + POLYBENCH_FREE_ARRAY(hz_outputFromGpu); + + cl_clean_up(); + + return 0; +} + +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.cl b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.cl new file mode 100644 index 0000000000..9186a97bf9 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.cl @@ -0,0 +1,64 @@ +/** + * fdtd2d.cl: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +typedef float DATA_TYPE; + + + +__kernel void fdtd_kernel1(__global DATA_TYPE *_fict_, __global DATA_TYPE *ex, __global DATA_TYPE *ey, __global DATA_TYPE *hz, int t, int nx, int ny) +{ + int j = get_global_id(0); + int i = get_global_id(1); + + if ((i < nx) && (j < ny)) + { + int tid = i * ny + j; + + if (i == 0) + { + ey[i * ny + j] = _fict_[t]; + } + else + { + ey[i * ny + j] = ey[i * ny + j] - 0.5*(hz[i * ny + j] - hz[(i-1) * ny + j]); + } + } +} + + +__kernel void fdtd_kernel2(__global DATA_TYPE *ex, __global DATA_TYPE *ey, __global DATA_TYPE *hz, int nx, int ny) +{ + int j = get_global_id(0); + int i = get_global_id(1); + + if ((i < nx) && (j < ny) && (j > 0)) + { + ex[i * ny + j] = ex[i * ny + j] - 0.5*(hz[i * ny + j] - hz[i * ny + (j-1)]); + } +} + + +__kernel void fdtd_kernel3(__global DATA_TYPE *ex, __global DATA_TYPE *ey, __global DATA_TYPE *hz, int nx, int ny) +{ + int j = get_global_id(0); + int i = get_global_id(1); + + if ((i < (nx-1)) && (j < (ny-1))) + { + hz[i * ny + j] = hz[i * ny + j] - 0.7*(ex[i * ny + (j+1)] - ex[i * ny + j] + ey[(i + 1) * ny + j] - ey[i * ny + j]); + } +} + diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.h new file mode 100644 index 0000000000..72239885cb --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d.h @@ -0,0 +1,67 @@ +/** + * fdtd2d.h: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#ifndef FDTD2D_H +# define FDTD2D_H + +/* Default to STANDARD_DATASET. */ +# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET) +# define MINI_DATASET +# endif + +/* Do not define anything if the user manually defines the size. */ +# if !defined(TMAX) && !defined(NX) && !defined(NY) +/* Define the possible dataset sizes. */ +# ifdef MINI_DATASET +#define TMAX 500 +#define NX 256 +#define NY 256 +# endif + +# ifdef SMALL_DATASET +#define TMAX 500 +#define NX 1024 +#define NY 1024 +# endif + +# ifdef STANDARD_DATASET /* Default if unspecified. */ +#define TMAX 500 +#define NX 2048 +#define NY 2048 +# endif + +# ifdef LARGE_DATASET +#define TMAX 500 +#define NX 4096 +#define NY 4096 +# endif + +# ifdef EXTRALARGE_DATASET +#define TMAX 500 +#define NX 8192 +#define NY 8192 +# endif +# endif /* !N */ + +# define _PB_TMAX POLYBENCH_LOOP_BOUND(TMAX,tmax) +# define _PB_NX POLYBENCH_LOOP_BOUND(NX,nx) +# define _PB_NY POLYBENCH_LOOP_BOUND(NY,ny) + +# ifndef DATA_TYPE +# define DATA_TYPE float +# define DATA_PRINTF_MODIFIER "%0.2lf " +# endif + +/* Thread block dimensions */ +#define DIM_LOCAL_WORK_GROUP_X 32 +#define DIM_LOCAL_WORK_GROUP_Y 8 + + +#endif /* !FDTD2D*/ \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d_kernel.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d_kernel.h new file mode 100644 index 0000000000..9e8887a9a8 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/fdtd-2d/fdtd2d_kernel.h @@ -0,0 +1,832 @@ +unsigned char fdtd2d_Gen9core_gen[] = { + 0x43, 0x54, 0x4e, 0x49, 0x39, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x68, 0x14, 0xa1, 0x96, 0x6a, 0x4e, 0x57, 0xfe, + 0x19, 0xd2, 0x90, 0x39, 0x10, 0x00, 0x00, 0x00, 0xdc, 0x06, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x10, 0x01, 0x00, 0x00, 0x70, 0x05, 0x00, 0x00, 0x66, 0x64, 0x74, 0x64, + 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0xa0, 0x20, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, + 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x80, 0x2d, 0x20, + 0x00, 0x7e, 0x0a, 0x05, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x20, + 0x44, 0x01, 0x00, 0x0a, 0xb8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x4c, 0x16, 0xc4, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2f, 0xc0, 0x0f, 0x00, 0x12, + 0x40, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x21, + 0xc0, 0x00, 0x00, 0x12, 0x80, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x21, 0xc0, 0x0f, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2f, 0xc0, 0x00, 0x00, 0x12, + 0x60, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2f, + 0x80, 0x0f, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x20, 0x22, 0xe0, 0x01, 0x8d, 0x0a, 0xe4, 0x00, 0x00, 0x00, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x0d, 0x0b, 0x07, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x76, 0x78, 0x07, 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, + 0x40, 0x0f, 0x8d, 0x0a, 0x28, 0x01, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, + 0x20, 0x0a, 0x00, 0x20, 0x20, 0x02, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, + 0x10, 0x16, 0x5f, 0x25, 0x07, 0x00, 0x0d, 0x09, 0x02, 0x20, 0x81, 0x00, + 0x4a, 0x12, 0xa0, 0x24, 0xc4, 0x0f, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x20, 0x81, 0x00, 0x48, 0x12, 0x40, 0x2c, 0xc4, 0x0f, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x19, 0x2f, 0x25, 0x07, 0x00, 0x76, 0x09, + 0x05, 0x20, 0x80, 0x02, 0x40, 0x12, 0x00, 0x20, 0x40, 0x0c, 0xb1, 0x12, + 0xa0, 0x04, 0xb1, 0x00, 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0x30, 0x04, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x10, 0x00, 0x80, 0x01, + 0x22, 0x0a, 0x00, 0x20, 0xc0, 0x0e, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x20, 0x80, 0x01, 0x22, 0x0a, 0x00, 0x20, 0x20, 0x02, 0x8d, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0xb1, 0x00, 0x02, 0x0e, 0x00, 0x20, + 0xf0, 0x03, 0x00, 0x00, 0x50, 0x03, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x2d, 0xc0, 0x0e, 0x8d, 0x1e, 0xff, 0xff, 0xff, 0xff, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x23, 0x20, 0x02, 0x8d, 0x1e, + 0xff, 0xff, 0xff, 0xff, 0x41, 0x96, 0x5d, 0x20, 0x07, 0x74, 0x76, 0x09, + 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x22, 0x20, 0x02, 0x8d, 0x0a, + 0x28, 0x01, 0x00, 0x00, 0x41, 0x96, 0x5d, 0x20, 0x07, 0x6c, 0x6c, 0x09, + 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x23, 0x60, 0x03, 0x8d, 0x0a, + 0x28, 0x01, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x74, 0x74, 0x0d, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x22, 0x60, 0x02, 0x8d, 0x0a, + 0x40, 0x0f, 0x8d, 0x00, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x6c, 0x6c, 0x0d, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x23, 0x60, 0x03, 0x8d, 0x0a, + 0x40, 0x0f, 0x8d, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2e, + 0x80, 0x0e, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x22, 0x60, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2d, 0x80, 0x0d, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x23, + 0x60, 0x03, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x6d, 0x20, + 0x07, 0x72, 0x74, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x22, + 0x60, 0x02, 0x8d, 0x0a, 0x30, 0x01, 0x00, 0x00, 0x40, 0x96, 0x71, 0x20, + 0x07, 0x74, 0x74, 0x09, 0x40, 0x96, 0x71, 0x20, 0x07, 0x6c, 0x6c, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x22, 0x60, 0x02, 0x8d, 0x0a, + 0x34, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x23, + 0x60, 0x03, 0x8d, 0x0a, 0x34, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x2d, 0x80, 0x0e, 0x00, 0x06, 0x03, 0x5e, 0x20, 0x04, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x2d, 0x80, 0x0d, 0x00, 0x06, + 0x03, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x20, 0x23, + 0x60, 0x02, 0x00, 0x06, 0x03, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xa0, 0x23, 0x60, 0x03, 0x00, 0x06, 0x03, 0x5e, 0x20, 0x04, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x2e, 0x40, 0x0e, 0x00, 0x06, + 0x02, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xe0, 0x22, + 0xa0, 0x02, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, 0x01, 0x00, 0x00, 0x00, + 0xcc, 0x56, 0xc8, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xbf, + 0x01, 0x00, 0x60, 0x00, 0xc8, 0x32, 0xc0, 0x24, 0xc8, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x60, 0x00, 0xc8, 0x32, 0x00, 0x25, + 0xc8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x60, 0x00, + 0xc8, 0x32, 0x40, 0x25, 0xc8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x30, 0x60, 0x00, 0xc8, 0x32, 0x80, 0x25, 0xc8, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x56, 0x02, 0x20, 0xf7, 0x6a, 0x6e, 0x6a, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0xa0, 0x23, 0x20, 0x03, 0x8d, 0x3a, + 0xa0, 0x43, 0x8d, 0x00, 0x01, 0x00, 0x60, 0x00, 0xc8, 0x3a, 0x40, 0x26, + 0x00, 0x0e, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x60, 0x00, + 0xc8, 0x3a, 0x60, 0x2a, 0x20, 0x0e, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x60, 0x00, 0xc8, 0x3a, 0x60, 0x2b, 0x40, 0x0d, 0x8d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x60, 0x00, 0xc8, 0x3a, 0x20, 0x2b, + 0x60, 0x0d, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x60, 0x00, + 0xc8, 0x3a, 0x80, 0x26, 0xe0, 0x02, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x30, 0x60, 0x00, 0xc8, 0x3a, 0x20, 0x2a, 0x00, 0x03, 0x8d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x60, 0x00, 0xc8, 0x3a, 0xe0, 0x2a, + 0xa0, 0x03, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x60, 0x00, + 0xc8, 0x3a, 0xa0, 0x2a, 0xc0, 0x03, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x01, 0x60, 0x00, 0x00, 0xd8, 0x1e, 0x36, 0xc8, 0x21, 0x03, 0x39, + 0x4c, 0x20, 0xc7, 0x16, 0x5b, 0x11, 0x60, 0x00, 0x00, 0xd8, 0x1e, 0x4f, + 0xc8, 0x31, 0x05, 0x39, 0x50, 0x20, 0x47, 0x16, 0x5b, 0x21, 0x60, 0x00, + 0x00, 0xd8, 0x1e, 0x38, 0xc8, 0x41, 0x03, 0x39, 0x54, 0x20, 0xc7, 0x15, + 0x5b, 0x31, 0x60, 0x00, 0x00, 0xd8, 0x1e, 0x4d, 0xc8, 0x11, 0x05, 0x39, + 0x58, 0x20, 0x47, 0x15, 0x01, 0x00, 0x60, 0x00, 0xe8, 0x32, 0x00, 0x4c, + 0xc0, 0x06, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x60, 0x00, + 0xe8, 0x32, 0xc0, 0x45, 0xe0, 0x09, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x60, 0x00, 0xe8, 0x32, 0xc0, 0x4b, 0x00, 0x07, 0x69, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x60, 0x00, 0xe8, 0x32, 0x00, 0x46, + 0xa0, 0x09, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, + 0xe8, 0x3a, 0xe0, 0x23, 0x00, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x10, 0x60, 0x00, 0xe8, 0x3a, 0x00, 0x24, 0xc0, 0x05, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x60, 0x00, 0xe8, 0x3a, 0x00, 0x2d, + 0xc0, 0x0b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x60, 0x00, + 0xe8, 0x3a, 0x20, 0x2d, 0x00, 0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0xf0, 0x01, 0x00, 0x42, 0x0e, 0x00, 0x00, + 0x02, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0x80, 0x06, 0x00, + 0xa2, 0x02, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, 0x24, 0x00, 0xa0, 0x00, + 0x00, 0x0e, 0x00, 0x20, 0xb0, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x20, 0x20, 0x01, 0x00, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x2c, + 0xa0, 0x01, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x20, 0x24, 0x40, 0x0f, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xe0, 0x2c, 0xc4, 0x00, 0x00, 0x0a, + 0x2c, 0x01, 0x00, 0x00, 0x40, 0x96, 0x6d, 0x20, 0x07, 0x65, 0x65, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x24, 0x20, 0x04, 0x8d, 0x0a, + 0x30, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x0a, 0x0c, 0x02, 0x00, 0x21, + 0xe0, 0x0c, 0x00, 0x06, 0x00, 0x08, 0x11, 0x02, 0x01, 0x16, 0x01, 0x20, + 0x00, 0x63, 0x08, 0x00, 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x60, 0x24, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0x30, 0x06, 0x00, 0xa2, 0x0c, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0x30, 0x02, 0x00, 0x22, 0x04, 0x00, 0x00, + 0x02, 0x5e, 0x02, 0x04, 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x05, 0x00, 0x31, 0x00, 0x60, 0x07, + 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x5f, 0x66, 0x69, 0x63, 0x74, 0x5f, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x65, 0x78, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x65, 0x79, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x68, 0x7a, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x78, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x79, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xd4, 0x55, 0x06, + 0x6a, 0x4e, 0x57, 0xfe, 0x19, 0xd2, 0x90, 0x39, 0x10, 0x00, 0x00, 0x00, + 0xa4, 0x05, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, + 0x66, 0x64, 0x74, 0x64, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x32, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0xa0, 0x20, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x2f, 0x28, 0x01, 0x00, 0x0a, + 0xa4, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x20, + 0x2c, 0x01, 0x00, 0x0a, 0xb8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x4c, 0x16, 0xc4, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2f, 0xc0, 0x0f, 0x00, 0x12, + 0x40, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, + 0xc0, 0x0f, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x21, 0xc0, 0x00, 0x00, 0x12, 0x80, 0x00, 0xb1, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2f, 0xc0, 0x00, 0x00, 0x12, + 0x60, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x03, 0x28, 0x0a, 0x40, 0x2f, + 0x80, 0x0f, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x0c, 0x0a, 0x07, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, + 0xc0, 0x01, 0x8d, 0x0a, 0xe4, 0x00, 0x00, 0x00, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x76, 0x78, 0x07, 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, + 0x40, 0x0f, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x10, 0x16, 0x7b, 0x25, + 0x07, 0x00, 0x0c, 0x08, 0x02, 0x20, 0x81, 0x00, 0x48, 0x12, 0x00, 0x24, + 0xc4, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x81, 0x05, + 0x22, 0x0a, 0x00, 0x20, 0x00, 0x02, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, + 0x10, 0x19, 0x77, 0x25, 0x07, 0x00, 0x76, 0x08, 0x02, 0x20, 0x81, 0x00, + 0x4a, 0x12, 0xe0, 0x2c, 0xc4, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x81, 0x03, 0x20, 0x0a, 0x00, 0x20, 0x80, 0x01, 0x8d, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x80, 0x02, 0x40, 0x12, 0x00, 0x20, + 0x00, 0x04, 0xb1, 0x12, 0xe0, 0x0c, 0xb1, 0x00, 0x22, 0x00, 0xa1, 0x00, + 0x00, 0x0e, 0x00, 0x20, 0xb8, 0x02, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x00, + 0x41, 0x96, 0x79, 0x20, 0x07, 0x74, 0x76, 0x08, 0x41, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x22, 0x00, 0x02, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xcc, 0x56, 0xc8, 0x2f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0xbf, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x74, 0x74, 0x0c, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0x40, 0x02, 0x8d, 0x0a, + 0x40, 0x0f, 0x8d, 0x00, 0x01, 0x00, 0x60, 0x00, 0xc8, 0x32, 0x40, 0x24, + 0xc8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x60, 0x00, + 0xc8, 0x32, 0x80, 0x24, 0xc8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x60, 0x00, 0xc8, 0x32, 0xc0, 0x24, 0xc8, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2e, + 0x80, 0x0e, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x22, 0x40, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x30, 0x60, 0x00, 0xc8, 0x32, 0x00, 0x25, 0xc8, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x72, 0x74, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, 0x40, 0x02, 0x8d, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x40, 0x96, 0x2d, 0x20, 0x07, 0x74, 0x74, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0x40, 0x02, 0x8d, 0x0a, + 0x24, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x2e, + 0x40, 0x0e, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x22, 0x80, 0x02, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2e, 0x80, 0x0e, 0x8d, 0x1e, + 0xfc, 0xff, 0xfc, 0xff, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, + 0x40, 0x02, 0x8d, 0x1e, 0xfc, 0xff, 0xfc, 0xff, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x80, 0x2d, 0x80, 0x0e, 0x00, 0x06, 0x02, 0x5c, 0x40, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x23, 0x40, 0x02, 0x00, 0x06, + 0x02, 0x5c, 0x40, 0x04, 0x01, 0x00, 0x60, 0x00, 0xc8, 0x3a, 0xc0, 0x25, + 0x00, 0x0e, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x60, 0x00, + 0xc8, 0x3a, 0x20, 0x2b, 0x20, 0x0e, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x60, 0x00, 0xc8, 0x3a, 0x00, 0x26, 0xc0, 0x02, 0x8d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x60, 0x00, 0xc8, 0x3a, 0xe0, 0x2a, + 0xe0, 0x02, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x56, 0x02, 0x20, + 0xf7, 0x6a, 0x6e, 0x6c, 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x80, 0x23, + 0x40, 0x03, 0x8d, 0x3a, 0x00, 0x43, 0x8d, 0x00, 0x01, 0x00, 0x60, 0x00, + 0xc8, 0x3a, 0x20, 0x2c, 0x40, 0x0d, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x10, 0x60, 0x00, 0xc8, 0x3a, 0xe0, 0x2b, 0x60, 0x0d, 0x8d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x60, 0x00, 0xc8, 0x3a, 0xa0, 0x2b, + 0x80, 0x03, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x60, 0x00, + 0xc8, 0x3a, 0x60, 0x2b, 0xa0, 0x03, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x01, 0x60, 0x00, 0x00, 0xd8, 0x1e, 0x32, 0xc8, 0xe1, 0x02, 0x39, + 0x44, 0x20, 0x47, 0x18, 0x5b, 0x11, 0x60, 0x00, 0x00, 0xd8, 0x1e, 0x55, + 0xc8, 0x91, 0x05, 0x39, 0x48, 0x20, 0xc7, 0x17, 0x5b, 0x21, 0x60, 0x00, + 0x00, 0xd8, 0x1e, 0x34, 0xc8, 0x01, 0x03, 0x39, 0x4c, 0x20, 0x47, 0x17, + 0x5b, 0x31, 0x60, 0x00, 0x00, 0xd8, 0x1e, 0x53, 0xc8, 0x71, 0x05, 0x39, + 0x50, 0x20, 0xc7, 0x16, 0x01, 0x00, 0x60, 0x00, 0xe8, 0x32, 0xa0, 0x4c, + 0x40, 0x06, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x60, 0x00, + 0xe8, 0x32, 0x40, 0x45, 0xa0, 0x0a, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x60, 0x00, 0xe8, 0x32, 0x60, 0x4c, 0x80, 0x06, 0x69, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x60, 0x00, 0xe8, 0x32, 0x80, 0x45, + 0x60, 0x0a, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, + 0xe8, 0x3a, 0xc0, 0x23, 0xa0, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x10, 0x60, 0x00, 0xe8, 0x3a, 0xe0, 0x23, 0x40, 0x05, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x60, 0x00, 0xe8, 0x3a, 0x00, 0x2d, + 0x60, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x60, 0x00, + 0xe8, 0x3a, 0x20, 0x2d, 0x80, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0xe0, 0x01, 0x00, 0x42, 0x0e, 0x00, 0x00, + 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0x80, 0x06, 0x00, + 0x82, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x05, 0x00, 0x31, 0x00, 0x60, 0x07, + 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x65, 0x78, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x65, 0x79, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x68, 0x7a, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x78, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x79, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xc2, 0xce, 0xcf, + 0x6a, 0x4e, 0x57, 0xfe, 0x19, 0xd2, 0x90, 0x39, 0x10, 0x00, 0x00, 0x00, + 0xcc, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x70, 0x05, 0x00, 0x00, + 0x66, 0x64, 0x74, 0x64, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x33, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0xa0, 0x20, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, + 0x41, 0x80, 0x55, 0x20, 0x00, 0x7e, 0x09, 0x05, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xc0, 0x20, 0x30, 0x01, 0x00, 0x0a, 0xb8, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x20, 0x00, 0x2c, 0x0a, 0xd0, 0x20, 0x18, 0x01, 0x45, 0x1e, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x16, 0xc4, 0x2f, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x2f, 0xc0, 0x0f, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x21, 0xc0, 0x00, 0x00, 0x12, + 0x80, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, + 0xc0, 0x0f, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x2f, 0xc0, 0x00, 0x00, 0x12, 0x60, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2f, 0x80, 0x0f, 0x8d, 0x0a, + 0xe0, 0x00, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, + 0xc0, 0x01, 0x8d, 0x0a, 0xe4, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x0c, 0x0a, 0x07, 0x40, 0x96, 0x2d, 0x20, 0x07, 0x76, 0x78, 0x07, + 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, 0x40, 0x0f, 0x8d, 0x0a, + 0xd4, 0x00, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, + 0x00, 0x02, 0x8d, 0x0a, 0xd0, 0x00, 0x00, 0x00, 0x10, 0x16, 0x73, 0x25, + 0x07, 0x00, 0x0c, 0x06, 0x02, 0x20, 0x81, 0x00, 0x4a, 0x12, 0xc0, 0x25, + 0xc4, 0x0f, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, + 0x48, 0x12, 0x20, 0x2b, 0xc4, 0x0f, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x19, 0x6f, 0x25, 0x07, 0x00, 0x76, 0x06, 0x05, 0x20, 0x80, 0x02, + 0x40, 0x12, 0x00, 0x20, 0x20, 0x0b, 0xb1, 0x12, 0xc0, 0x05, 0xb1, 0x00, + 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, 0x20, 0x04, 0x00, 0x00, + 0x20, 0x04, 0x00, 0x00, 0x41, 0x96, 0x79, 0x20, 0x07, 0x74, 0x76, 0x08, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2d, 0x80, 0x01, 0x8d, 0x1e, + 0x01, 0x00, 0x01, 0x00, 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, + 0x00, 0x02, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x23, 0x40, 0x0f, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2c, 0xc0, 0x0e, 0x8d, 0x1e, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x6a, 0x74, 0x6a, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, 0x00, 0x02, 0x8d, 0x1e, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, + 0x40, 0x02, 0x8d, 0x0a, 0x80, 0x03, 0x8d, 0x00, 0x41, 0x96, 0x79, 0x20, + 0x07, 0x62, 0x62, 0x08, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2d, + 0x40, 0x0d, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x41, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x24, 0x80, 0x04, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, 0x80, 0x03, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x62, 0x62, 0x0c, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x6a, 0x6a, 0x09, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x24, 0x80, 0x04, 0x8d, 0x0a, 0x40, 0x0f, 0x8d, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, 0x80, 0x03, 0x8d, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x72, 0x74, 0x0c, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2c, 0x40, 0x0c, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2d, + 0x40, 0x0d, 0x8d, 0x1e, 0xfc, 0xff, 0xfc, 0xff, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x22, 0x40, 0x02, 0x8d, 0x0a, 0x40, 0x0f, 0x8d, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, 0x80, 0x04, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, + 0x80, 0x03, 0x8d, 0x1e, 0xfc, 0xff, 0xfc, 0xff, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x2c, 0x40, 0x0d, 0x00, 0x06, 0x00, 0x5c, 0x40, 0x04, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2e, 0x40, 0x0e, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x2d, 0x20, 0x07, 0x62, 0x62, 0x09, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x23, 0x80, 0x03, 0x00, 0x06, + 0x00, 0x5c, 0x40, 0x04, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x22, + 0x80, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x24, 0x80, 0x04, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x2c, 0x40, 0x0c, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x2d, 0x20, 0x07, 0x5e, 0x70, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x25, 0xc0, 0x02, 0x8d, 0x0a, + 0x24, 0x01, 0x00, 0x00, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x24, + 0x80, 0x04, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x5d, 0x20, + 0x07, 0x6e, 0x70, 0x09, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x2b, + 0xc0, 0x0b, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x23, 0xc0, 0x02, 0x8d, 0x0a, 0x28, 0x01, 0x00, 0x00, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x25, 0x00, 0x05, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x2d, + 0xc0, 0x0d, 0x00, 0x06, 0x02, 0x5e, 0x20, 0x04, 0x01, 0x00, 0x00, 0x00, + 0xcc, 0x56, 0xc8, 0x2f, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xe6, 0xbf, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x23, 0x00, 0x03, 0x00, 0x06, + 0x02, 0x5e, 0x20, 0x04, 0x01, 0x00, 0x60, 0x00, 0xc8, 0x32, 0x00, 0x26, + 0xc8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x60, 0x00, + 0xc8, 0x32, 0x40, 0x26, 0xc8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x60, 0x00, 0xc8, 0x32, 0x80, 0x26, 0xc8, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x60, 0x00, 0xc8, 0x32, 0xc0, 0x26, + 0xc8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x56, 0x02, 0x20, + 0xf7, 0x64, 0x68, 0x66, 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x40, 0x24, + 0x00, 0x04, 0x8d, 0x3a, 0xc0, 0x43, 0x8d, 0x00, 0x40, 0x56, 0x02, 0x20, + 0xe7, 0x60, 0x64, 0x60, 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0xc0, 0x24, + 0x40, 0x04, 0x8d, 0x3a, 0xc0, 0x04, 0x8d, 0x00, 0x40, 0x56, 0x02, 0x20, + 0xf7, 0x60, 0x60, 0x5c, 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0xc0, 0x24, + 0xc0, 0x04, 0x8d, 0x3a, 0x40, 0x45, 0x8d, 0x00, 0x01, 0x00, 0x60, 0x00, + 0xc8, 0x3a, 0x80, 0x27, 0x80, 0x0d, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x10, 0x60, 0x00, 0xc8, 0x3a, 0x60, 0x29, 0xa0, 0x0d, 0x8d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, 0xc8, 0x3a, 0x60, 0x2a, + 0x00, 0x0c, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x60, 0x00, + 0xc8, 0x3a, 0x20, 0x2a, 0x20, 0x0c, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x60, 0x00, 0xc8, 0x3a, 0xc0, 0x27, 0x40, 0x03, 0x8d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x60, 0x00, 0xc8, 0x3a, 0x20, 0x29, + 0x60, 0x03, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x60, 0x00, + 0xc8, 0x3a, 0xe0, 0x29, 0xc0, 0x04, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x30, 0x60, 0x00, 0xc8, 0x3a, 0xa0, 0x29, 0xe0, 0x04, 0x8d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5b, 0x01, 0x60, 0x00, 0x00, 0xd8, 0x1e, 0x40, + 0xc8, 0xc1, 0x03, 0x39, 0x60, 0x20, 0xc7, 0x14, 0x5b, 0x11, 0x60, 0x00, + 0x00, 0xd8, 0x1e, 0x47, 0xc8, 0xb1, 0x04, 0x39, 0x64, 0x20, 0x47, 0x14, + 0x5b, 0x21, 0x60, 0x00, 0x00, 0xd8, 0x1e, 0x42, 0xc8, 0xe1, 0x03, 0x39, + 0x68, 0x20, 0xc7, 0x13, 0x5b, 0x31, 0x60, 0x00, 0x00, 0xd8, 0x1e, 0x45, + 0xc8, 0x91, 0x04, 0x39, 0x6c, 0x20, 0x47, 0x13, 0x01, 0x00, 0x60, 0x00, + 0xe8, 0x32, 0xe0, 0x4a, 0x00, 0x08, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x10, 0x60, 0x00, 0xe8, 0x32, 0x00, 0x47, 0xe0, 0x08, 0x69, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x60, 0x00, 0xe8, 0x32, 0xa0, 0x4a, + 0x40, 0x08, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x60, 0x00, + 0xe8, 0x32, 0x40, 0x47, 0xa0, 0x08, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x60, 0x00, 0xe8, 0x3a, 0x80, 0x25, 0xe0, 0x0a, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x60, 0x00, 0xe8, 0x3a, 0xa0, 0x25, + 0x00, 0x07, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x60, 0x00, + 0xe8, 0x3a, 0x40, 0x2b, 0xa0, 0x0a, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x30, 0x60, 0x00, 0xe8, 0x3a, 0x60, 0x2b, 0x40, 0x07, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0xc0, 0x02, 0x00, + 0xc2, 0x0d, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0xa0, 0x05, 0x00, 0x02, 0x03, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x05, 0x00, + 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, + 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x65, 0x78, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x65, 0x79, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x68, 0x7a, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x78, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x79, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00 +}; +unsigned int fdtd2d_Gen9core_gen_len = 9944; diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.cc b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.cc new file mode 100644 index 0000000000..9a672d182a --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.cc @@ -0,0 +1,410 @@ +/** + * gramschmidt.c: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#include +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#else +#include "../../CL/cl.h" +#endif + +#define POLYBENCH_TIME 1 + +//select the OpenCL device to use (can be GPU, CPU, or Accelerator such as Intel Xeon Phi) +#define OPENCL_DEVICE_SELECTION CL_DEVICE_TYPE_GPU + +#include "gramschmidt.h" +#include "../../polybench.h" + +//define the error threshold for the results "not matching" +#define PERCENT_DIFF_ERROR_THRESHOLD 0.05 + +#define MAX_SOURCE_SIZE (0x100000) + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +namespace ns_gramschmidt +{ +#include "../../polybenchUtilFuncts.h" +#include "gramschmidt_kernel.h" + + +char str_temp[1024]; + + +cl_platform_id platform_id; +cl_device_id device_id; +cl_uint num_devices; +cl_uint num_platforms; +cl_int errcode; +cl_context clGPUContext; +cl_kernel clKernel1; +cl_kernel clKernel2; +cl_kernel clKernel3; +cl_command_queue clCommandQue; +cl_program clProgram; + +cl_mem a_mem_obj; +cl_mem r_mem_obj; +cl_mem q_mem_obj; + +FILE *fp; +char *source_str; +size_t source_size; + +#define RUN_ON_CPU + + +void compareResults(int ni, int nj, DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj), DATA_TYPE POLYBENCH_2D(A_outputFromGpu,NI,NJ,ni,nj)) +{ + int i, j, fail; + fail = 0; + + for (i=0; i < ni; i++) + { + for (j=0; j < nj; j++) + { + if (percentDiff(A[i][j], A_outputFromGpu[i][j]) > PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + } + + // Print results + printf("Non-Matching CPU-GPU Outputs Beyond Error Threshold of %4.2f Percent: %d\n", PERCENT_DIFF_ERROR_THRESHOLD, fail); +} + + +void read_cl_file() +{ + // Load the kernel source code into the array source_str + // fp = fopen("gramschmidt.cl", "r"); + // if (!fp) { + // fprintf(stderr, "Failed to load kernel.\n"); + // exit(1); + // } + // source_str = (char*)malloc(MAX_SOURCE_SIZE); + // source_size = fread( source_str, 1, MAX_SOURCE_SIZE, fp); + // fclose( fp ); +} + + +/* Array initialization. */ +void init_array(int ni, int nj, + DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj), + DATA_TYPE POLYBENCH_2D(R,NJ,NJ,nj,nj), + DATA_TYPE POLYBENCH_2D(Q,NI,NJ,ni,nj)) +{ + int i, j; + + for (i = 0; i < ni; i++) + { + for (j = 0; j < nj; j++) + { + A[i][j] = ((DATA_TYPE) i*j) / ni; + Q[i][j] = ((DATA_TYPE) i*(j+1)) / nj; + } + } + + for (i = 0; i < nj; i++) + { + for (j = 0; j < nj; j++) + { + R[i][j] = ((DATA_TYPE) i*(j+2)) / nj; + } + } +} + + +void cl_initialization() +{ + // Get platform and device information + errcode = clGetPlatformIDs(1, &platform_id, &num_platforms); + if(errcode == CL_SUCCESS) printf("number of platforms is %d\n",num_platforms); + else printf("Error getting platform IDs\n"); + + errcode = clGetPlatformInfo(platform_id,CL_PLATFORM_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform name is %s\n",str_temp); + else printf("Error getting platform name\n"); + + errcode = clGetPlatformInfo(platform_id, CL_PLATFORM_VERSION, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform version is %s\n",str_temp); + else printf("Error getting platform version\n"); + + errcode = clGetDeviceIDs( platform_id, OPENCL_DEVICE_SELECTION, 1, &device_id, &num_devices); + if(errcode == CL_SUCCESS) printf("number of devices is %d\n", num_devices); + else printf("Error getting device IDs\n"); + + errcode = clGetDeviceInfo(device_id,CL_DEVICE_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("device name is %s\n",str_temp); + else printf("Error getting device name\n"); + + // Create an OpenCL context + clGPUContext = clCreateContext( NULL, 1, &device_id, NULL, NULL, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating context\n"); + + //Create a command-queue + clCommandQue = clCreateCommandQueue(clGPUContext, device_id, 0, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating command queue\n"); +} + + +void cl_mem_init(DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj)) +{ + a_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * NI * NJ, NULL, &errcode); + r_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * NI * NJ, NULL, &errcode); + q_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, sizeof(DATA_TYPE) * NI * NJ, NULL, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating buffers\n"); + + errcode = clEnqueueWriteBuffer(clCommandQue, a_mem_obj, CL_TRUE, 0, sizeof(DATA_TYPE) * NI * NJ, A, 0, NULL, NULL); + if(errcode != CL_SUCCESS)printf("Error in writing buffers\n"); +} + + +void cl_load_prog() +{ + // Create a program from the kernel source + const size_t kernel_size = gramschmidt_Gen9core_gen_len; + const unsigned char* kernel_bin = gramschmidt_Gen9core_gen; + clProgram = clCreateProgramWithBinary(clGPUContext, 1, &device_id, &kernel_size, &kernel_bin, NULL, &errcode); + //clProgram = clCreateProgramWithSource(clGPUContext, 1, (const char **)&source_str, (const size_t *)&source_size, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating program\n"); + + // Build the program + errcode = clBuildProgram(clProgram, 1, &device_id, NULL, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in building program\n"); + + // Create the OpenCL kernel + clKernel1 = clCreateKernel(clProgram, "gramschmidt_kernel1", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel1\n"); + + clKernel2 = clCreateKernel(clProgram, "gramschmidt_kernel2", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel2\n"); + + clKernel3 = clCreateKernel(clProgram, "gramschmidt_kernel3", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel3\n"); + clFinish(clCommandQue); +} + + +void cl_launch_kernel(int ni, int nj) +{ + size_t localWorkSize[2], globalWorkSizeKernel1[2], globalWorkSizeKernel2[2], globalWorkSizeKernel3[2]; + + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = DIM_LOCAL_WORK_GROUP_Y; + globalWorkSizeKernel1[0] = DIM_LOCAL_WORK_GROUP_X; + globalWorkSizeKernel1[1] = DIM_LOCAL_WORK_GROUP_Y; + globalWorkSizeKernel2[0] = (size_t)ceil(((float)NJ) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + globalWorkSizeKernel2[1] = 1; + globalWorkSizeKernel3[0] = (size_t)ceil(((float)NJ) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + globalWorkSizeKernel3[1] = 1; + + /* Start timer. */ + polybench_start_instruments; + + int k; + for (k = 0; k < _PB_NJ; k++) + { + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel1, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode = clSetKernelArg(clKernel1, 1, sizeof(cl_mem), (void *)&r_mem_obj); + errcode |= clSetKernelArg(clKernel1, 2, sizeof(cl_mem), (void *)&q_mem_obj); + errcode |= clSetKernelArg(clKernel1, 3, sizeof(int), (void *)&k); + errcode |= clSetKernelArg(clKernel1, 4, sizeof(int), (void *)&ni); + errcode |= clSetKernelArg(clKernel1, 5, sizeof(int), (void *)&nj); + + if(errcode != CL_SUCCESS) printf("Error in seting arguments1\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel1, 1, NULL, globalWorkSizeKernel1, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel1\n"); + clEnqueueBarrier(clCommandQue); + + + errcode = clSetKernelArg(clKernel2, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode = clSetKernelArg(clKernel2, 1, sizeof(cl_mem), (void *)&r_mem_obj); + errcode |= clSetKernelArg(clKernel2, 2, sizeof(cl_mem), (void *)&q_mem_obj); + errcode |= clSetKernelArg(clKernel2, 3, sizeof(int), (void *)&k); + errcode |= clSetKernelArg(clKernel2, 4, sizeof(int), (void *)&ni); + errcode |= clSetKernelArg(clKernel2, 5, sizeof(int), (void *)&nj); + + if(errcode != CL_SUCCESS) printf("Error in seting arguments1\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel2, 1, NULL, globalWorkSizeKernel2, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel2\n"); + clEnqueueBarrier(clCommandQue); + + globalWorkSizeKernel3[0] = (size_t)ceil(((float)NJ - (float)(k+1)) / ((float)DIM_LOCAL_WORK_GROUP_X)) * DIM_LOCAL_WORK_GROUP_X; + if (globalWorkSizeKernel3[0] > 1) + { + errcode = clSetKernelArg(clKernel3, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode = clSetKernelArg(clKernel3, 1, sizeof(cl_mem), (void *)&r_mem_obj); + errcode |= clSetKernelArg(clKernel3, 2, sizeof(cl_mem), (void *)&q_mem_obj); + errcode |= clSetKernelArg(clKernel3, 3, sizeof(int), (void *)&k); + errcode |= clSetKernelArg(clKernel3, 4, sizeof(int), (void *)&ni); + errcode |= clSetKernelArg(clKernel3, 5, sizeof(int), (void *)&nj); + + if(errcode != CL_SUCCESS) printf("Error in seting arguments1\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel3, 1, NULL, globalWorkSizeKernel3, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel3\n"); + clEnqueueBarrier(clCommandQue); + } + + } + clFinish(clCommandQue); + + /* Stop and print timer. */ + printf("GPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; +} + + +void cl_clean_up() +{ + // Clean up + errcode = clFlush(clCommandQue); + errcode = clFinish(clCommandQue); + errcode = clReleaseKernel(clKernel1); + errcode = clReleaseKernel(clKernel2); + errcode = clReleaseKernel(clKernel3); + errcode = clReleaseProgram(clProgram); + errcode = clReleaseMemObject(a_mem_obj); + errcode = clReleaseMemObject(r_mem_obj); + errcode = clReleaseMemObject(q_mem_obj); + errcode = clReleaseCommandQueue(clCommandQue); + errcode = clReleaseContext(clGPUContext); + if(errcode != CL_SUCCESS) printf("Error in cleanup\n"); +} + + +void gramschmidt(int ni, int nj, DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj), DATA_TYPE POLYBENCH_2D(R,NJ,NJ,nj,nj), DATA_TYPE POLYBENCH_2D(Q,NI,NJ,ni,nj)) +{ + int i,j,k; + DATA_TYPE nrm; + for (k = 0; k < _PB_NJ; k++) + { + nrm = 0; + for (i = 0; i < _PB_NI; i++) + { + nrm += A[i][k] * A[i][k]; + } + + R[k][k] = sqrt(nrm); + for (i = 0; i < _PB_NI; i++) + { + Q[i][k] = A[i][k] / R[k][k]; + } + + for (j = k + 1; j < _PB_NJ; j++) + { + R[k][j] = 0; + for (i = 0; i < _PB_NI; i++) + { + R[k][j] += Q[i][k] * A[i][j]; + } + for (i = 0; i < _PB_NI; i++) + { + A[i][j] = A[i][j] - Q[i][k] * R[k][j]; + } + } + } +} + + +/* DCE code. Must scan the entire live-out data. + Can be used also to check the correctness of the output. */ +static +void print_array(int ni, int nj, DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj)) +{ + int i, j; + + for (i = 0; i < ni; i++) + for (j = 0; j < nj; j++) { + fprintf (stderr, DATA_PRINTF_MODIFIER, A[i][j]); + if (i % 20 == 0) fprintf (stderr, "\n"); + } + + fprintf (stderr, "\n"); +} + + +int main(int argc, char *argv[]) +{ + /* Retrieve problem size. */ + int ni = NI; + int nj = NJ; + + POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NJ,ni,nj); + POLYBENCH_2D_ARRAY_DECL(A_outputFromGpu,DATA_TYPE,NI,NJ,ni,nj); + POLYBENCH_2D_ARRAY_DECL(R,DATA_TYPE,NJ,NJ,nj,nj); + POLYBENCH_2D_ARRAY_DECL(Q,DATA_TYPE,NI,NJ,ni,nj); + + init_array(ni, nj, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(R), POLYBENCH_ARRAY(Q)); + + read_cl_file(); + cl_initialization(); + cl_mem_init(POLYBENCH_ARRAY(A)); + cl_load_prog(); + + cl_launch_kernel(ni, nj); + + errcode = clEnqueueReadBuffer(clCommandQue, a_mem_obj, CL_TRUE, 0, NI*NJ*sizeof(DATA_TYPE), POLYBENCH_ARRAY(A_outputFromGpu), 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); + + + #ifdef RUN_ON_CPU + + /* Start timer. */ + polybench_start_instruments; + + gramschmidt(ni, nj, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(R), POLYBENCH_ARRAY(Q)); + + /* Stop and print timer. */ + printf("CPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + compareResults(ni, nj, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(A_outputFromGpu)); + + #else //prevent dead code elimination + + polybench_prevent_dce(print_array(ni, nj, POLYBENCH_ARRAY(A_outputFromGpu))); + + #endif //RUN_ON_CPU + + + cl_clean_up(); + + POLYBENCH_FREE_ARRAY(A); + POLYBENCH_FREE_ARRAY(A_outputFromGpu); + POLYBENCH_FREE_ARRAY(R); + POLYBENCH_FREE_ARRAY(Q); + + return 0; +} + +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.cl b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.cl new file mode 100644 index 0000000000..d21e79e123 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.cl @@ -0,0 +1,68 @@ +/** + * gramschmidt.cl: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +typedef float DATA_TYPE; + + +__kernel void gramschmidt_kernel1(__global DATA_TYPE *a, __global DATA_TYPE *r, __global DATA_TYPE *q, int k, int ni, int nj) +{ + int tid = get_global_id(0); + + if (tid == 0) + { + DATA_TYPE nrm = 0.0; + int i; + for (i = 0; i < ni; i++) + { + nrm += a[i * nj + k] * a[i * nj + k]; + } + r[k * nj + k] = sqrt(nrm); + } +} + + +__kernel void gramschmidt_kernel2(__global DATA_TYPE *a, __global DATA_TYPE *r, __global DATA_TYPE *q, int k, int ni, int nj) +{ + int i = get_global_id(0); + + if (i < ni) + { + q[i * nj + k] = a[i * nj + k] / r[k * nj + k]; + } +} + + +__kernel void gramschmidt_kernel3(__global DATA_TYPE *a, __global DATA_TYPE *r, __global DATA_TYPE *q, int k, int ni, int nj) +{ + int j = get_global_id(0) + (k+1); + + if ((j < nj)) + { + r[k*nj + j] = 0.0; + + int i; + for (i = 0; i < ni; i++) + { + r[k*nj + j] += q[i*nj + k] * a[i*nj + j]; + } + + for (i = 0; i < ni; i++) + { + a[i*nj + j] -= q[i*nj + k] * r[k*nj + j]; + } + } +} + diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.h new file mode 100644 index 0000000000..abf95f736d --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt.h @@ -0,0 +1,60 @@ +/** + * gramschmidt.h: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#ifndef GRAMSCHMIDT_H +# define GRAMSCHMIDT_H + +/* Default to STANDARD_DATASET. */ +# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET) +# define STANDARD_DATASET +# endif + +/* Do not define anything if the user manually defines the size. */ +# if !defined(NI) && !defined(NJ) +/* Define the possible dataset sizes. */ +# ifdef MINI_DATASET +#define NI 512 +#define NJ 512 +# endif + +# ifdef SMALL_DATASET +#define NI 1024 +#define NJ 1024 +# endif + +# ifdef STANDARD_DATASET /* Default if unspecified. */ +#define NI 2048 +#define NJ 2048 +# endif + +# ifdef LARGE_DATASET +#define NI 4096 +#define NJ 4096 +# endif + +# ifdef EXTRALARGE_DATASET +#define NI 8192 +#define NJ 8192 +# endif +# endif /* !N */ + +# define _PB_NI POLYBENCH_LOOP_BOUND(NI,ni) +# define _PB_NJ POLYBENCH_LOOP_BOUND(NJ,nj) + +# ifndef DATA_TYPE +# define DATA_TYPE float +# define DATA_PRINTF_MODIFIER "%0.2lf " +# endif + +/* Thread block dimensions */ +#define DIM_LOCAL_WORK_GROUP_X 256 +#define DIM_LOCAL_WORK_GROUP_Y 1 + +#endif /* !GRAMSCHMIDT*/ \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt_kernel.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt_kernel.h new file mode 100644 index 0000000000..fc20672740 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/gramschmidt/gramschmidt_kernel.h @@ -0,0 +1,694 @@ +unsigned char gramschmidt_Gen9core_gen[] = { + 0x43, 0x54, 0x4e, 0x49, 0x39, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x62, 0x5d, 0x8f, 0x30, 0x3b, 0x5a, 0xfa, + 0x65, 0xba, 0x41, 0x41, 0x14, 0x00, 0x00, 0x00, 0x14, 0x06, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x67, 0x72, 0x61, 0x6d, + 0x73, 0x63, 0x68, 0x6d, 0x69, 0x64, 0x74, 0x5f, 0x6b, 0x65, 0x72, 0x6e, + 0x65, 0x6c, 0x31, 0x00, 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0x60, 0x20, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, + 0x41, 0x80, 0x55, 0x20, 0x00, 0x7e, 0x09, 0x03, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x20, 0xc0, 0x0f, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2f, 0xc0, 0x0f, 0x00, 0x12, + 0x40, 0x00, 0xb1, 0x00, 0x10, 0x16, 0x03, 0x21, 0x0f, 0x00, 0x04, 0x07, + 0x10, 0x20, 0x80, 0x01, 0x20, 0x0a, 0x00, 0x20, 0x80, 0x0f, 0x8d, 0x0a, + 0xe0, 0x40, 0x00, 0x00, 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0x78, 0x01, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0x10, 0x00, 0x80, 0x03, + 0x26, 0x0a, 0x00, 0x20, 0x1c, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x20, 0x80, 0x03, 0x26, 0x0a, 0x00, 0x20, 0x1c, 0x01, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x34, + 0x00, 0x14, 0x00, 0x0e, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xec, 0x3e, 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x34, 0x00, 0x14, 0x00, 0x0e, + 0xc0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x1e, 0xc4, 0x2f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xec, 0x3e, 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x20, 0xc4, 0x0f, 0x00, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x2f, + 0xc4, 0x0f, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xc8, 0x2f, 0xc4, 0x00, 0x00, 0x0a, 0x18, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x80, 0x05, 0x24, 0x0a, 0x00, 0x20, 0xc4, 0x0f, 0x00, 0x0a, + 0x1c, 0x01, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, 0x24, 0x0a, 0x00, 0x20, + 0xc4, 0x0f, 0x00, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xc8, 0x20, 0xc8, 0x0f, 0x00, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x60, 0x2f, 0xc8, 0x00, 0x00, 0x0a, + 0x24, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x0a, 0x0c, 0x02, 0x00, 0x21, + 0x60, 0x0f, 0x00, 0x06, 0x00, 0x08, 0x11, 0x02, 0x5b, 0x01, 0x40, 0x00, + 0x04, 0x00, 0x02, 0x06, 0xc9, 0x61, 0x20, 0x39, 0x10, 0x24, 0x07, 0x02, + 0x20, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x34, 0x00, 0x14, 0x00, 0x0e, + 0x60, 0xff, 0xff, 0xff, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xcc, 0x20, + 0x18, 0x01, 0x00, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x38, 0x00, 0x01, 0x24, + 0x00, 0x7a, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xcc, 0x2f, + 0xcc, 0x00, 0x00, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xd0, 0x20, 0xcc, 0x0f, 0x00, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x20, 0x2f, 0xd0, 0x00, 0x00, 0x0a, + 0x28, 0x01, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0a, 0x14, 0xa0, 0x07, 0x00, + 0x21, 0x0f, 0x00, 0x00, 0x01, 0x08, 0x03, 0x02, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x03, 0x00, 0x31, 0x00, 0x60, 0x07, + 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x69, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x6a, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x40, 0x68, 0x79, 0x30, 0x3b, 0x5a, 0xfa, 0x65, 0xba, 0x41, 0x41, + 0x14, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xe8, 0x01, 0x00, 0x00, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x63, 0x68, 0x6d, + 0x69, 0x64, 0x74, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x32, 0x00, + 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, + 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x80, 0x20, 0x30, 0x01, 0x00, 0x0a, 0x64, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x20, 0x80, 0x00, 0x00, 0x12, + 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, + 0x80, 0x00, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x0c, 0x05, 0x07, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x21, + 0x40, 0x01, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x10, 0x16, 0x7b, 0x25, + 0x07, 0x00, 0x0c, 0x08, 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, + 0xc0, 0x01, 0x8d, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x22, 0x00, 0xa1, 0x00, + 0x00, 0x0e, 0x00, 0x20, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x41, 0x96, 0x01, 0x20, 0x07, 0x10, 0x0c, 0x09, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x84, 0x20, 0x18, 0x01, 0x00, 0x0a, 0x20, 0x01, 0x00, 0x00, + 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0xc0, 0x01, 0x8d, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x40, 0x96, 0x75, 0x20, 0x07, 0x10, 0x10, 0x08, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x88, 0x20, 0x84, 0x00, 0x00, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, + 0x40, 0x02, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x22, 0x00, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x8c, 0x20, 0x88, 0x00, 0x00, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x22, + 0x40, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x18, 0x14, 0x09, 0x40, 0x80, 0x61, 0x20, 0x00, 0x08, 0x04, 0x09, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x23, 0xc0, 0x02, 0x8d, 0x0a, + 0x24, 0x01, 0x00, 0x00, 0x40, 0x96, 0x65, 0x20, 0x07, 0x25, 0x14, 0x09, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x23, 0x00, 0x03, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x00, 0x0a, 0x0c, 0x02, 0x00, 0x24, + 0x00, 0x01, 0x00, 0x06, 0x01, 0x08, 0x11, 0x02, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x23, 0x40, 0x03, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x24, 0xc0, 0x02, 0x8d, 0x0a, + 0x2c, 0x01, 0x00, 0x00, 0x38, 0x56, 0x02, 0x29, 0x07, 0x21, 0x1c, 0x20, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0x60, 0x24, + 0xc0, 0x03, 0x8d, 0x3a, 0x00, 0x04, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0x10, 0x02, 0x00, 0xa2, 0x04, 0x00, 0x00, 0x02, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0x30, 0x02, 0x00, 0xe2, 0x04, 0x00, 0x00, + 0x02, 0x5e, 0x02, 0x04, 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, + 0x07, 0x7f, 0x03, 0x00, 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, + 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x69, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x6a, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0xaa, 0x4a, 0x77, 0xd7, 0x30, 0x3b, 0x5a, 0xfa, 0x65, 0xba, 0x41, 0x41, + 0x14, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xb0, 0x04, 0x00, 0x00, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x63, 0x68, 0x6d, + 0x69, 0x64, 0x74, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x33, 0x00, + 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, + 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xc0, 0x2f, 0x30, 0x01, 0x00, 0x0a, 0x64, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x20, 0x18, 0x01, 0x00, 0x1e, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x20, + 0xc0, 0x0f, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x2f, 0xc0, 0x0f, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x04, 0x04, 0x07, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x2f, 0x80, 0x0f, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x7a, 0x04, 0x06, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x21, 0x80, 0x0f, 0x8d, 0x0a, 0xc0, 0x00, 0x00, 0x00, + 0x10, 0x16, 0x03, 0x25, 0x07, 0x00, 0x7a, 0x09, 0x10, 0x20, 0x80, 0x05, + 0x20, 0x0a, 0x00, 0x20, 0x40, 0x01, 0x8d, 0x0a, 0x20, 0x01, 0x00, 0x00, + 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, 0xe0, 0x03, 0x00, 0x00, + 0xe0, 0x03, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x2f, + 0x18, 0x01, 0x00, 0x0a, 0x20, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, + 0xe8, 0x3e, 0xc0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3e, 0xc0, 0x2e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x03, 0x26, 0x0a, 0x00, 0x20, + 0x1c, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x96, 0x15, 0x20, + 0xe0, 0x0c, 0x7e, 0x7a, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2f, + 0xc4, 0x0f, 0x00, 0x0a, 0x40, 0x01, 0x8d, 0x00, 0x10, 0x20, 0x80, 0x03, + 0x26, 0x0a, 0x00, 0x20, 0x1c, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x21, 0x80, 0x01, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2f, + 0x00, 0x0f, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x5d, 0x20, + 0x07, 0x0c, 0x0c, 0x09, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2f, + 0x00, 0x0f, 0x8d, 0x0a, 0x28, 0x01, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, + 0x70, 0xe0, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, + 0x33, 0x20, 0x80, 0x0c, 0x70, 0x60, 0x07, 0x00, 0x02, 0x0f, 0x00, 0x00, + 0x01, 0x5e, 0x02, 0x04, 0x20, 0x00, 0x11, 0x00, 0x06, 0x00, 0x00, 0x34, + 0x00, 0x14, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, + 0xe8, 0x3e, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x80, 0x00, 0xe8, 0x3e, 0x40, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x1e, 0xc8, 0x2f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xc4, 0x20, 0xc8, 0x0f, 0x00, 0x0a, 0x20, 0x01, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc8, 0x2f, 0xc8, 0x0f, 0x00, 0x1e, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x96, 0x15, 0x20, 0xe0, 0x73, 0x06, 0x7a, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xcc, 0x2f, 0xc4, 0x00, 0x00, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, + 0xc4, 0x00, 0x00, 0x0a, 0x40, 0x01, 0x8d, 0x00, 0x10, 0x00, 0x80, 0x05, + 0x24, 0x0a, 0x00, 0x20, 0xc8, 0x0f, 0x00, 0x0a, 0x1c, 0x01, 0x00, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2e, 0x60, 0x0e, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc8, 0x20, + 0xcc, 0x0f, 0x00, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x22, 0x80, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x10, 0x20, 0x80, 0x05, 0x24, 0x0a, 0x00, 0x20, 0xc8, 0x0f, 0x00, 0x0a, + 0x1c, 0x01, 0x00, 0x00, 0x40, 0x96, 0x2d, 0x20, 0x07, 0x73, 0x73, 0x09, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xa0, 0x2e, 0xc8, 0x00, 0x00, 0x0a, + 0x2c, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, + 0x80, 0x02, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x20, 0x2e, 0x60, 0x0e, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x31, 0x00, 0x00, 0x0a, 0x0c, 0x02, 0x00, 0x21, 0xa0, 0x0e, 0x00, 0x06, + 0x02, 0x08, 0x11, 0x02, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xe0, 0x2d, + 0x80, 0x02, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x5b, 0x02, 0x01, 0x20, + 0x01, 0x80, 0x20, 0xe2, 0x5b, 0x23, 0x01, 0x20, 0x01, 0x90, 0x20, 0xde, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0x00, 0x01, 0x00, 0x82, 0x01, 0x00, 0x00, + 0x01, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0x20, 0x01, 0x00, + 0x02, 0x0f, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, 0x20, 0x00, 0x01, 0x00, + 0x04, 0x00, 0x00, 0x34, 0x00, 0x14, 0x00, 0x0e, 0xd0, 0xfe, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x1e, 0xcc, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xd0, 0x2f, 0xcc, 0x00, 0x00, 0x0a, + 0x20, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xcc, 0x20, + 0xcc, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x40, 0x96, 0x21, 0x20, + 0xe0, 0x17, 0x7e, 0x7a, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xd0, 0x20, + 0xd0, 0x0f, 0x00, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x2d, 0xd0, 0x0f, 0x00, 0x0a, 0x40, 0x01, 0x8d, 0x00, + 0x10, 0x00, 0x80, 0x05, 0x26, 0x0a, 0x00, 0x20, 0xcc, 0x00, 0x00, 0x0a, + 0x1c, 0x01, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x22, + 0xe0, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xd4, 0x2f, 0xd0, 0x00, 0x00, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x2d, 0x60, 0x0d, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x10, 0x20, 0x80, 0x05, 0x26, 0x0a, 0x00, 0x20, + 0xcc, 0x00, 0x00, 0x0a, 0x1c, 0x01, 0x00, 0x00, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x17, 0x17, 0x09, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x22, + 0xd4, 0x0f, 0x00, 0x0a, 0x2c, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x2d, 0x60, 0x0d, 0x8d, 0x0a, 0x24, 0x01, 0x00, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x20, 0x23, 0xe0, 0x02, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x00, 0x0a, 0x0c, 0x02, 0xa0, 0x2d, + 0xc0, 0x02, 0x00, 0x06, 0x02, 0x08, 0x11, 0x02, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x20, 0x2d, 0x60, 0x0d, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x5b, 0x9e, 0x01, 0x20, 0x01, 0xc8, 0xb4, 0x21, 0x5b, 0x9f, 0x06, 0x20, + 0x01, 0x48, 0xb7, 0x25, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x90, 0x01, 0x00, + 0xe2, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0x90, 0x06, 0x00, 0x62, 0x0d, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x28, 0x00, 0xb1, 0x00, 0x02, 0x0e, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x22, + 0x80, 0x01, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x40, 0x22, 0x00, 0x0f, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x27, 0x00, 0xa0, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0xb0, 0xfe, 0xff, 0xff, 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x03, 0x00, 0x31, 0x00, 0x60, 0x07, + 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x69, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x6a, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00 +}; +unsigned int gramschmidt_Gen9core_gen_len = 8288; diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.cc b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.cc new file mode 100644 index 0000000000..79b12c4337 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.cc @@ -0,0 +1,350 @@ +/** + * jacobi1D.c: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#else +#include "../../CL/cl.h" +#endif + +#define POLYBENCH_TIME 1 + +//select the OpenCL device to use (can be GPU, CPU, or Accelerator such as Intel Xeon Phi) +#define OPENCL_DEVICE_SELECTION CL_DEVICE_TYPE_GPU + +#include "jacobi1D.h" +#include "../../polybench.h" + +//define the error threshold for the results "not matching" +#define PERCENT_DIFF_ERROR_THRESHOLD 10.05 + +#define MAX_SOURCE_SIZE (0x100000) + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + + +namespace ns_jacobi_1d_imper +{ + + +#include "../../polybenchUtilFuncts.h" +#include "jacobi1D_kernel.h" + +char str_temp[1024]; + +cl_platform_id platform_id; +cl_device_id device_id; +cl_uint num_devices; +cl_uint num_platforms; +cl_int errcode; +cl_context clGPUContext; +cl_kernel clKernel1; +cl_kernel clKernel2; +cl_command_queue clCommandQue; +cl_program clProgram; +cl_mem a_mem_obj; +cl_mem b_mem_obj; +FILE *fp; +char *source_str; +size_t source_size; + +#define RUN_ON_CPU + + +void compareResults(int n, DATA_TYPE POLYBENCH_1D(a,N,n), DATA_TYPE POLYBENCH_1D(a_outFromGpu,N,n), DATA_TYPE POLYBENCH_1D(b,N,n), + DATA_TYPE POLYBENCH_1D(b_outFromGpu,N,n)) +{ + int i, j, fail; + fail = 0; + + for (i=1; i<(n-1); i++) + { + if (percentDiff(a[i], a_outFromGpu[i]) > PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + + for (i=1; i<(n-1); i++) + { + if (percentDiff(b[i], b_outFromGpu[i]) > PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + + // Print results + printf("Non-Matching CPU-GPU Outputs Beyond Error Threshold of %4.2f Percent: %d\n", PERCENT_DIFF_ERROR_THRESHOLD, fail); +} + + +void read_cl_file() +{ + // Load the kernel source code into the array source_str + // fp = fopen("jacobi1D.cl", "r"); + // if (!fp) { + // fprintf(stderr, "Failed to load kernel.\n"); + // exit(1); + // } + // source_str = (char*)malloc(MAX_SOURCE_SIZE); + // source_size = fread( source_str, 1, MAX_SOURCE_SIZE, fp); + // fclose( fp ); +} + +void init_array(int n, DATA_TYPE POLYBENCH_1D(A,N,n), DATA_TYPE POLYBENCH_1D(B,N,n)) +{ + int i; + + for (i = 0; i < n; i++) + { + A[i] = ((DATA_TYPE) 4 * i + 10) / N; + B[i] = ((DATA_TYPE) 7 * i + 11) / N; + } +} + + +void cl_initialization() +{ + + // Get platform and device information + errcode = clGetPlatformIDs(1, &platform_id, &num_platforms); + if(errcode == CL_SUCCESS) printf("number of platforms is %d\n",num_platforms); + + errcode = clGetPlatformInfo(platform_id,CL_PLATFORM_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform name is %s\n",str_temp); + + errcode = clGetPlatformInfo(platform_id, CL_PLATFORM_VERSION, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform version is %s\n",str_temp); + + errcode = clGetDeviceIDs( platform_id, OPENCL_DEVICE_SELECTION, 1, &device_id, &num_devices); + if(errcode == CL_SUCCESS) printf("device id is %d\n",device_id); + + errcode = clGetDeviceInfo(device_id,CL_DEVICE_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("device name is %s\n",str_temp); + + // Create an OpenCL context + clGPUContext = clCreateContext( NULL, 1, &device_id, NULL, NULL, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating context\n"); + + //Create a command-queue + clCommandQue = clCreateCommandQueue(clGPUContext, device_id, 0, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating command queue\n"); +} + + +void cl_mem_init(DATA_TYPE POLYBENCH_1D(A,N,n), DATA_TYPE POLYBENCH_1D(B,N,n)) +{ + a_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, N * sizeof(DATA_TYPE), NULL, &errcode); + b_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, N * sizeof(DATA_TYPE), NULL, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating buffers\n"); + + errcode = clEnqueueWriteBuffer(clCommandQue, a_mem_obj, CL_TRUE, 0, N * sizeof(DATA_TYPE), A, 0, NULL, NULL); + errcode = clEnqueueWriteBuffer(clCommandQue, b_mem_obj, CL_TRUE, 0, N * sizeof(DATA_TYPE), B, 0, NULL, NULL); + if(errcode != CL_SUCCESS)printf("Error in writing buffers\n"); +} + + +void cl_load_prog() +{ + // Create a program from the kernel source + const size_t kernel_size = jacobi1D_Gen9core_gen_len; + const unsigned char* kernel_bin = jacobi1D_Gen9core_gen; + clProgram = clCreateProgramWithBinary(clGPUContext, 1, &device_id, &kernel_size, &kernel_bin, NULL, &errcode); + // clProgram = clCreateProgramWithSource(clGPUContext, 1, (const char **)&source_str, (const size_t *)&source_size, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating program\n"); + + // Build the program + errcode = clBuildProgram(clProgram, 1, &device_id, NULL, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in building program\n"); + + // Create the OpenCL kernel + clKernel1 = clCreateKernel(clProgram, "runJacobi1D_kernel1", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel\n"); + clKernel2 = clCreateKernel(clProgram, "runJacobi1D_kernel2", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel\n"); + clFinish(clCommandQue); +} + + +void cl_launch_kernel1(int n) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = DIM_LOCAL_WORK_GROUP_Y; + globalWorkSize[0] = N; + globalWorkSize[1] = 1; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel1, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel1, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode |= clSetKernelArg(clKernel1, 2, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel1, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); +} + + +void cl_launch_kernel2(int n) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = DIM_LOCAL_WORK_GROUP_Y; + globalWorkSize[0] = N; + globalWorkSize[1] = 1; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel2, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel2, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode |= clSetKernelArg(clKernel2, 2, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel2, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); +} + + +void cl_clean_up() +{ + // Clean up + errcode = clFlush(clCommandQue); + errcode = clFinish(clCommandQue); + errcode = clReleaseKernel(clKernel1); + errcode = clReleaseKernel(clKernel2); + errcode = clReleaseProgram(clProgram); + errcode = clReleaseMemObject(a_mem_obj); + errcode = clReleaseMemObject(b_mem_obj); + errcode = clReleaseCommandQueue(clCommandQue); + errcode = clReleaseContext(clGPUContext); + if(errcode != CL_SUCCESS) printf("Error in cleanup\n"); +} + + +void runJacobi1DCpu(int tsteps, int n, DATA_TYPE POLYBENCH_1D(A,N,n), DATA_TYPE POLYBENCH_1D(B,N,n)) +{ + int t, i, j; + for (t = 0; t < _PB_TSTEPS; t++) + { + for (i = 1; i < _PB_N - 1; i++) + { + B[i] = 0.33333 * (A[i-1] + A[i] + A[i + 1]); + } + + for (j = 1; j < _PB_N - 1; j++) + { + A[j] = B[j]; + } + } +} + + +/* DCE code. Must scan the entire live-out data. + Can be used also to check the correctness of the output. */ +static +void print_array(int n, + DATA_TYPE POLYBENCH_1D(A,N,n)) + +{ + int i; + + for (i = 0; i < n; i++) + { + fprintf(stderr, DATA_PRINTF_MODIFIER, A[i]); + if (i % 20 == 0) fprintf(stderr, "\n"); + } + fprintf(stderr, "\n"); +} + + +int main(int argc, char *argv[]) +{ + /* Retrieve problem size. */ + int n = N; + int tsteps = TSTEPS; + + POLYBENCH_1D_ARRAY_DECL(a,DATA_TYPE,N,n); + POLYBENCH_1D_ARRAY_DECL(b,DATA_TYPE,N,n); + POLYBENCH_1D_ARRAY_DECL(a_outputFromGpu,DATA_TYPE,N,n); + POLYBENCH_1D_ARRAY_DECL(b_outputFromGpu,DATA_TYPE,N,n); + + init_array(n, POLYBENCH_ARRAY(a), POLYBENCH_ARRAY(b)); + + read_cl_file(); + cl_initialization(); + cl_mem_init(POLYBENCH_ARRAY(a), POLYBENCH_ARRAY(b)); + cl_load_prog(); + + /* Start timer. */ + polybench_start_instruments; + + int t; + for (t = 0; t < _PB_TSTEPS ; t++) + { + cl_launch_kernel1(n); + cl_launch_kernel2(n); + } + + /* Stop and print timer. */ + printf("GPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + errcode = clEnqueueReadBuffer(clCommandQue, a_mem_obj, CL_TRUE, 0, N * sizeof(DATA_TYPE), POLYBENCH_ARRAY(a_outputFromGpu), 0, NULL, NULL); + errcode = clEnqueueReadBuffer(clCommandQue, b_mem_obj, CL_TRUE, 0, N * sizeof(DATA_TYPE), POLYBENCH_ARRAY(b_outputFromGpu), 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); + + + #ifdef RUN_ON_CPU + + /* Start timer. */ + polybench_start_instruments; + + runJacobi1DCpu(tsteps, n, POLYBENCH_ARRAY(a), POLYBENCH_ARRAY(b)); + + /* Stop and print timer. */ + printf("CPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + compareResults(n, POLYBENCH_ARRAY(a), POLYBENCH_ARRAY(a_outputFromGpu), POLYBENCH_ARRAY(b), POLYBENCH_ARRAY(b_outputFromGpu)); + + #else //prevent dead code elimination + + polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(a_outputFromGpu))); + + #endif //RUN_ON_CPU + + + cl_clean_up(); + + POLYBENCH_FREE_ARRAY(a); + POLYBENCH_FREE_ARRAY(b); + POLYBENCH_FREE_ARRAY(a_outputFromGpu); + POLYBENCH_FREE_ARRAY(b_outputFromGpu); + + return 0; +} + +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.cl b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.cl new file mode 100644 index 0000000000..e17b177d55 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.cl @@ -0,0 +1,37 @@ +/** + * jacobi1D.cl: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +typedef float DATA_TYPE; + + +__kernel void runJacobi1D_kernel1(__global DATA_TYPE* A, __global DATA_TYPE* B, int n) +{ + int i = get_global_id(0); + if ((i >= 1) && (i < (n-1))) + { + B[i] = 0.33333f * (A[i-1] + A[i] + A[i + 1]); + } +} + +__kernel void runJacobi1D_kernel2(__global DATA_TYPE* A, __global DATA_TYPE* B, int n) +{ + int j = get_global_id(0); + + if ((j >= 1) && (j < (n-1))) + { + A[j] = B[j]; + } +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.h new file mode 100644 index 0000000000..44160745ec --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D.h @@ -0,0 +1,61 @@ +/** + * jacobi1D.h: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#ifndef JACOBI1D_H +# define JACOBI1D_H + +/* Default to STANDARD_DATASET. */ +# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET) +# define MINI_DATASET +# endif + +/* Do not define anything if the user manually defines the size. */ +# if !defined(TSTEPS) && !defined(N) +/* Define the possible dataset sizes. */ +# ifdef MINI_DATASET +#define TSTEPS 10000 +#define N 1024 +# endif + +# ifdef SMALL_DATASET +#define TSTEPS 10000 +#define N 2048 +# endif + +# ifdef STANDARD_DATASET /* Default if unspecified. */ +#define TSTEPS 10000 +#define N 4096 +# endif + +# ifdef LARGE_DATASET +#define TSTEPS 10000 +#define N 8192 +# endif + +# ifdef EXTRALARGE_DATASET +#define TSTEPS 10000 +#define N 16384 +# endif +# endif /* !N */ + +# define _PB_TSTEPS POLYBENCH_LOOP_BOUND(TSTEPS,tsteps) +# define _PB_N POLYBENCH_LOOP_BOUND(N,n) + +# ifndef DATA_TYPE +# define DATA_TYPE float +# define DATA_PRINTF_MODIFIER "%0.2lf " +# endif + +/* Thread block dimensions */ +#define DIM_LOCAL_WORK_GROUP_X 256 +#define DIM_LOCAL_WORK_GROUP_Y 1 + + +#endif /* !JACOBI1D*/ \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D_kernel.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D_kernel.h new file mode 100644 index 0000000000..4601725024 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-1d-imper/jacobi1D_kernel.h @@ -0,0 +1,331 @@ +unsigned char jacobi1D_Gen9core_gen[] = { + 0x43, 0x54, 0x4e, 0x49, 0x39, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa3, 0x45, 0xbe, 0xf0, 0xdd, 0x9e, 0x39, 0x2d, + 0xd7, 0xfd, 0x76, 0xe7, 0x14, 0x00, 0x00, 0x00, 0x70, 0x04, 0x00, 0x00, + 0xc0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x72, 0x75, 0x6e, 0x4a, + 0x61, 0x63, 0x6f, 0x62, 0x69, 0x31, 0x44, 0x5f, 0x6b, 0x65, 0x72, 0x6e, + 0x65, 0x6c, 0x31, 0x00, 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0x60, 0x20, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, + 0x41, 0x80, 0x2d, 0x20, 0x00, 0x04, 0x09, 0x03, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x84, 0x20, 0x10, 0x01, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x4c, 0x16, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, + 0x80, 0x00, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x20, 0x80, 0x00, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x03, 0x28, 0x0a, 0xc0, 0x21, 0x40, 0x01, 0x8d, 0x0a, + 0xe0, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x0c, 0x05, 0x07, + 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, 0xc0, 0x01, 0x8d, 0x0a, + 0x84, 0x00, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, 0x48, 0x12, 0x80, 0x25, + 0x88, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10, 0x16, 0x2f, 0x25, + 0x07, 0x00, 0x0c, 0x04, 0x02, 0x20, 0x81, 0x00, 0x4a, 0x12, 0xa0, 0x25, + 0x88, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x81, 0x03, + 0x20, 0x0a, 0x00, 0x20, 0x80, 0x01, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x20, 0x80, 0x02, 0x40, 0x12, 0x00, 0x20, 0x80, 0x05, 0xb1, 0x12, + 0xa0, 0x05, 0xb1, 0x00, 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0x30, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x22, 0x80, 0x01, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0xc0, 0x01, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, + 0x00, 0x02, 0x8d, 0x1e, 0xfc, 0xff, 0xfc, 0xff, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x22, 0x40, 0x02, 0x8d, 0x1e, 0xfc, 0xff, 0xfc, 0xff, + 0x40, 0x96, 0x71, 0x20, 0x07, 0x24, 0x10, 0x08, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x24, 0x40, 0x02, 0x8d, 0x0a, 0x14, 0x01, 0x00, 0x00, + 0x40, 0x96, 0x71, 0x20, 0x07, 0x14, 0x14, 0x08, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0xc0, 0x22, 0xc0, 0x02, 0x8d, 0x0a, 0x14, 0x01, 0x00, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x25, 0x80, 0x04, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x25, + 0xc0, 0x04, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x00, 0x23, 0x80, 0x02, 0x00, 0x06, 0x00, 0x58, 0x60, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x23, 0xc0, 0x02, 0x00, 0x06, + 0x00, 0x58, 0x60, 0x04, 0x40, 0x56, 0x02, 0x20, 0xe7, 0x28, 0x18, 0x28, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x40, 0x25, 0xc0, 0x03, 0x8d, 0x3a, + 0x40, 0x05, 0x8d, 0x00, 0x40, 0x56, 0x02, 0x20, 0xe7, 0x28, 0x28, 0x1c, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x40, 0x25, 0x40, 0x05, 0x8d, 0x3a, + 0x40, 0x04, 0x8d, 0x00, 0x41, 0x00, 0x80, 0x00, 0xe8, 0x3a, 0x00, 0x25, + 0x00, 0x05, 0x8d, 0x3e, 0x3b, 0xaa, 0xaa, 0x3e, 0x41, 0x20, 0x80, 0x00, + 0xe8, 0x3a, 0x40, 0x25, 0x40, 0x05, 0x8d, 0x3e, 0x3b, 0xaa, 0xaa, 0x3e, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0x80, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, + 0x01, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0xa0, 0x02, 0x00, + 0x42, 0x02, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x03, 0x00, 0x31, 0x00, 0x60, 0x07, + 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x35, 0x95, 0x63, + 0xdd, 0x9e, 0x39, 0x2d, 0xd7, 0xfd, 0x76, 0xe7, 0x14, 0x00, 0x00, 0x00, + 0x48, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, + 0x72, 0x75, 0x6e, 0x4a, 0x61, 0x63, 0x6f, 0x62, 0x69, 0x31, 0x44, 0x5f, + 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x32, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x80, 0x20, + 0x14, 0x01, 0x00, 0x0a, 0x64, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x84, 0x20, 0x10, 0x01, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x4c, 0x16, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x21, + 0x80, 0x00, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x20, 0x80, 0x00, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x03, 0x28, 0x0a, 0xa0, 0x21, 0x20, 0x01, 0x8d, 0x0a, + 0xe0, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, 0x07, 0x0b, 0x05, 0x07, + 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, 0xa0, 0x01, 0x8d, 0x0a, + 0x84, 0x00, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, 0x48, 0x12, 0xe0, 0x22, + 0x88, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10, 0x16, 0x2f, 0x25, + 0x07, 0x00, 0x0b, 0x04, 0x02, 0x20, 0x81, 0x00, 0x4a, 0x12, 0x00, 0x23, + 0x88, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x81, 0x03, + 0x20, 0x0a, 0x00, 0x20, 0x60, 0x01, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x20, 0x80, 0x02, 0x40, 0x12, 0x00, 0x20, 0xe0, 0x02, 0xb1, 0x12, + 0x00, 0x03, 0xb1, 0x00, 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, + 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x21, 0x60, 0x01, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x22, 0xa0, 0x01, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x22, + 0xe0, 0x01, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xa0, 0x22, 0x20, 0x02, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0x30, 0x01, 0x00, 0xe2, 0x01, 0x00, 0x00, + 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0x50, 0x01, 0x00, + 0x22, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x03, 0x00, 0x31, 0x00, 0x60, 0x07, + 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00 +}; +unsigned int jacobi1D_Gen9core_gen_len = 3932; diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.cc b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.cc new file mode 100644 index 0000000000..cf5d2025a6 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.cc @@ -0,0 +1,388 @@ +/** + * jacobi2D.c: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#include +#include +#include +#include + +#define POLYBENCH_TIME 1 + +//select the OpenCL device to use (can be GPU, CPU, or Accelerator such as Intel Xeon Phi) +#define OPENCL_DEVICE_SELECTION CL_DEVICE_TYPE_GPU + + +#include "../../polybench.h" + +//define the error threshold for the results "not matching" +#define PERCENT_DIFF_ERROR_THRESHOLD 0.05 + +#ifdef __APPLE__ +#include +#else +#include "../../CL/cl.h" +#endif + +#include "jacobi2D.h" + +#define MAX_SOURCE_SIZE (0x100000) + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +namespace ns_jacobi_2d_imper +{ + +#include "jacobi2D_kernel.h" +#include "../../polybenchUtilFuncts.h" + + +char str_temp[1024]; + +cl_platform_id platform_id; +cl_device_id device_id; +cl_uint num_devices; +cl_uint num_platforms; +cl_int errcode; +cl_context clGPUContext; +cl_kernel clKernel1; +cl_kernel clKernel2; +cl_command_queue clCommandQue; +cl_program clProgram; +cl_mem a_mem_obj; +cl_mem b_mem_obj; +cl_mem c_mem_obj; +FILE *fp; +char *source_str; +size_t source_size; + +#define RUN_ON_CPU + + +void compareResults(int n, DATA_TYPE POLYBENCH_2D(a,N,N,n,n), DATA_TYPE POLYBENCH_2D(a_outputFromGpu,N,N,n,n), DATA_TYPE POLYBENCH_2D(b,N,N,n,n), DATA_TYPE POLYBENCH_2D(b_outputFromGpu,N,N,n,n)) +{ + int i, j, fail; + fail = 0; + + // Compare output from CPU and GPU + for (i=0; i PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + } + + for (i=0; i PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + } + + // Print results + printf("Non-Matching CPU-GPU Outputs Beyond Error Threshold of %4.2f Percent: %d\n", PERCENT_DIFF_ERROR_THRESHOLD, fail); +} + + +void read_cl_file() +{ + // Load the kernel source code into the array source_str + // fp = fopen("jacobi2D.cl", "r"); + // if (!fp) { + // fprintf(stderr, "Failed to load kernel.\n"); + // exit(1); + // } + // source_str = (char*)malloc(MAX_SOURCE_SIZE); + // source_size = fread( source_str, 1, MAX_SOURCE_SIZE, fp); + // fclose( fp ); +} + + +void init_array(int n, DATA_TYPE POLYBENCH_2D(A,N,N,n,n), DATA_TYPE POLYBENCH_2D(B,N,N,n,n)) +{ + int i, j; + + for (i = 0; i < n; i++) + { + for (j = 0; j < n; j++) + { + A[i][j] = ((DATA_TYPE) i*(j+2) + 10) / N; + B[i][j] = ((DATA_TYPE) (i-4)*(j-1) + 11) / N; + } + } +} + + +void cl_initialization() +{ + // Get platform and device information + errcode = clGetPlatformIDs(1, &platform_id, &num_platforms); + if(errcode == CL_SUCCESS) printf("number of platforms is %d\n",num_platforms); + + errcode = clGetPlatformInfo(platform_id,CL_PLATFORM_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform name is %s\n",str_temp); + + errcode = clGetPlatformInfo(platform_id, CL_PLATFORM_VERSION, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform version is %s\n",str_temp); + + errcode = clGetDeviceIDs( platform_id, OPENCL_DEVICE_SELECTION, 1, &device_id, &num_devices); + if(errcode == CL_SUCCESS) printf("device id is %d\n",device_id); + + errcode = clGetDeviceInfo(device_id,CL_DEVICE_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("device name is %s\n",str_temp); + + // Create an OpenCL context + clGPUContext = clCreateContext( NULL, 1, &device_id, NULL, NULL, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating context\n"); + + //Create a command-queue + clCommandQue = clCreateCommandQueue(clGPUContext, device_id, 0, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating command queue\n"); +} + + +void cl_mem_init(DATA_TYPE POLYBENCH_2D(A,N,N,n,n), DATA_TYPE POLYBENCH_2D(B,N,N,n,n)) +{ + a_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, N * N * sizeof(DATA_TYPE), NULL, &errcode); + b_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, N * N * sizeof(DATA_TYPE), NULL, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating buffers\n"); + + errcode = clEnqueueWriteBuffer(clCommandQue, a_mem_obj, CL_TRUE, 0, N * N * sizeof(DATA_TYPE), A, 0, NULL, NULL); + errcode = clEnqueueWriteBuffer(clCommandQue, b_mem_obj, CL_TRUE, 0, N * N * sizeof(DATA_TYPE), B, 0, NULL, NULL); + if(errcode != CL_SUCCESS)printf("Error in writing buffers\n"); +} + + +void cl_load_prog() +{ + // Create a program from the kernel source + const size_t kernel_size = jacobi2D_Gen9core_gen_len; + const unsigned char* kernel_bin = jacobi2D_Gen9core_gen; + clProgram = clCreateProgramWithBinary(clGPUContext, 1, &device_id, &kernel_size, &kernel_bin, NULL, &errcode); + // clProgram = clCreateProgramWithSource(clGPUContext, 1, (const char **)&source_str, (const size_t *)&source_size, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating program\n"); + + // Build the program + errcode = clBuildProgram(clProgram, 1, &device_id, NULL, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in building program\n"); + + // Create the OpenCL kernel + clKernel1 = clCreateKernel(clProgram, "runJacobi2D_kernel1", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel1\n"); + clKernel2 = clCreateKernel(clProgram, "runJacobi2D_kernel2", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel2\n"); + clFinish(clCommandQue); +} + +void cl_launch_kernel1(int n) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = DIM_LOCAL_WORK_GROUP_Y; + globalWorkSize[0] = N; + globalWorkSize[1] = N; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel1, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel1, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode |= clSetKernelArg(clKernel1, 2, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel1, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); +} + +void cl_launch_kernel2(int n) +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = DIM_LOCAL_WORK_GROUP_Y; + globalWorkSize[0] = N; + globalWorkSize[1] = N; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel2, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel2, 1, sizeof(cl_mem), (void *)&b_mem_obj); + errcode |= clSetKernelArg(clKernel2, 2, sizeof(int), (void *)&n); + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel2, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); +} + +void cl_launch_kernels() +{ + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = DIM_LOCAL_WORK_GROUP_X; + localWorkSize[1] = DIM_LOCAL_WORK_GROUP_Y; + globalWorkSize[0] = N; + globalWorkSize[1] = N; + int t; + + for (t = 0; t < TSTEPS ; t++) + { + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel1, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel2, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); + } +} + +void cl_clean_up() +{ + // Clean up + errcode = clFlush(clCommandQue); + errcode = clFinish(clCommandQue); + errcode = clReleaseKernel(clKernel1); + errcode = clReleaseKernel(clKernel2); + errcode = clReleaseProgram(clProgram); + errcode = clReleaseMemObject(a_mem_obj); + errcode = clReleaseMemObject(b_mem_obj); + errcode = clReleaseCommandQueue(clCommandQue); + errcode = clReleaseContext(clGPUContext); + if(errcode != CL_SUCCESS) printf("Error in cleanup\n"); +} + + +void runJacobi2DCpu(int tsteps, int n, DATA_TYPE POLYBENCH_2D(A,N,N,n,n), DATA_TYPE POLYBENCH_2D(B,N,N,n,n)) +{ + int t, i, j; + for (t = 0; t < _PB_TSTEPS; t++) + { + for (i = 1; i < _PB_N - 1; i++) + { + for (j = 1; j < _PB_N - 1; j++) + { + B[i][j] = 0.2f * (A[i][j] + A[i][(j-1)] + A[i][(1+j)] + A[(1+i)][j] + A[(i-1)][j]); + } + } + + for (i = 1; i < _PB_N-1; i++) + { + for (j = 1; j < _PB_N-1; j++) + { + A[i][j] = B[i][j]; + } + } + } +} + + +/* DCE code. Must scan the entire live-out data. + Can be used also to check the correctness of the output. */ +static +void print_array(int n, + DATA_TYPE POLYBENCH_2D(A,N,N,n,n)) + +{ + int i, j; + + for (i = 0; i < n; i++) + for (j = 0; j < n; j++) { + fprintf(stderr, DATA_PRINTF_MODIFIER, A[i][j]); + if ((i * n + j) % 20 == 0) fprintf(stderr, "\n"); + } + fprintf(stderr, "\n"); +} + + +int main(int argc, char *argv[]) +{ + /* Retrieve problem size. */ + int n = N; + int tsteps = TSTEPS; + + POLYBENCH_2D_ARRAY_DECL(a,DATA_TYPE,N,N,n,n); + POLYBENCH_2D_ARRAY_DECL(b,DATA_TYPE,N,N,n,n); + POLYBENCH_2D_ARRAY_DECL(a_outputFromGpu,DATA_TYPE,N,N,n,n); + POLYBENCH_2D_ARRAY_DECL(b_outputFromGpu,DATA_TYPE,N,N,n,n); + + init_array(n, POLYBENCH_ARRAY(a), POLYBENCH_ARRAY(b)); + + read_cl_file(); + cl_initialization(); + cl_mem_init(POLYBENCH_ARRAY(a), POLYBENCH_ARRAY(b)); + cl_load_prog(); + + /* Start timer. */ + polybench_start_instruments; + + int t; + for (t = 0; t < _PB_TSTEPS ; t++) + { + cl_launch_kernel1(n); + cl_launch_kernel2(n); + } + + + /* Stop and print timer. */ + printf("GPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + errcode = clEnqueueReadBuffer(clCommandQue, a_mem_obj, CL_TRUE, 0, N * N * sizeof(DATA_TYPE), POLYBENCH_ARRAY(a_outputFromGpu), 0, NULL, NULL); + errcode = clEnqueueReadBuffer(clCommandQue, b_mem_obj, CL_TRUE, 0, N * N * sizeof(DATA_TYPE), POLYBENCH_ARRAY(b_outputFromGpu), 0, NULL, NULL); + + if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); + + + #ifdef RUN_ON_CPU + + /* Start timer. */ + polybench_start_instruments; + + runJacobi2DCpu(tsteps, n, POLYBENCH_ARRAY(a), POLYBENCH_ARRAY(b)); + + /* Stop and print timer. */ + printf("CPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + compareResults(n, POLYBENCH_ARRAY(a), POLYBENCH_ARRAY(a_outputFromGpu), POLYBENCH_ARRAY(b), POLYBENCH_ARRAY(b_outputFromGpu)); + + #else //prevent dead code elimination + + polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(a_outputFromGpu))); + + #endif //RUN_ON_CPU + + + cl_clean_up(); + POLYBENCH_FREE_ARRAY(a); + POLYBENCH_FREE_ARRAY(a_outputFromGpu); + POLYBENCH_FREE_ARRAY(b); + POLYBENCH_FREE_ARRAY(b_outputFromGpu); + + return 0; +} + +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.cl b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.cl new file mode 100644 index 0000000000..d3da061c39 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.cl @@ -0,0 +1,41 @@ +/** + * jacobi2D.cl: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +typedef float DATA_TYPE; + + +__kernel void runJacobi2D_kernel1(__global DATA_TYPE* A, __global DATA_TYPE* B, int n) +{ + int i = get_global_id(1); + int j = get_global_id(0); + + if ((i >= 1) && (i < (n-1)) && (j >= 1) && (j < (n-1))) + { + B[i*n + j] = 0.2f * (A[i*n + j] + A[i*n + (j-1)] + A[i*n + (1 + j)] + A[(1 + i)*n + j] + + A[(i-1)*n + j]); + } +} + +__kernel void runJacobi2D_kernel2(__global DATA_TYPE* A, __global DATA_TYPE* B, int n) +{ + int i = get_global_id(1); + int j = get_global_id(0); + + if ((i >= 1) && (i < (n-1)) && (j >= 1) && (j < (n-1))) + { + A[i*n + j] = B[i*n + j]; + } +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.h new file mode 100644 index 0000000000..f9b38682cf --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D.h @@ -0,0 +1,61 @@ +/** + * jacobi2D.h: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#ifndef JACOBI2D_H +# define JACOBI2D_H + +/* Default to STANDARD_DATASET. */ +# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET) +# define MINI_DATASET +# endif + +/* Do not define anything if the user manually defines the size. */ +# if !defined(TSTEPS) && !defined(N) +/* Define the possible dataset sizes. */ +# ifdef MINI_DATASET +#define TSTEPS 20 +#define N 256 +# endif + +# ifdef SMALL_DATASET +#define TSTEPS 20 +#define N 512 +# endif + +# ifdef STANDARD_DATASET /* Default if unspecified. */ +#define TSTEPS 20 +#define N 1024 +# endif + +# ifdef LARGE_DATASET +#define TSTEPS 20 +#define N 2048 +# endif + +# ifdef EXTRALARGE_DATASET +#define TSTEPS 20 +#define N 4096 +# endif +# endif /* !N */ + +# define _PB_TSTEPS POLYBENCH_LOOP_BOUND(TSTEPS,tsteps) +# define _PB_N POLYBENCH_LOOP_BOUND(N,n) + +# ifndef DATA_TYPE +# define DATA_TYPE float +# define DATA_PRINTF_MODIFIER "%0.2lf " +# endif + +/* Thread block dimensions */ +#define DIM_LOCAL_WORK_GROUP_X 32 +#define DIM_LOCAL_WORK_GROUP_Y 8 + + +#endif /* !JACOBI2D*/ \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D_kernel.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D_kernel.h new file mode 100644 index 0000000000..512f468e55 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/jacobi-2d-imper/jacobi2D_kernel.h @@ -0,0 +1,410 @@ +unsigned char jacobi2D_Gen9core_gen[] = { + 0x43, 0x54, 0x4e, 0x49, 0x39, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x96, 0x79, 0x15, 0x7c, 0xd1, 0x55, 0x0f, 0x5c, + 0xe6, 0x50, 0x9d, 0x95, 0x14, 0x00, 0x00, 0x00, 0x98, 0x04, 0x00, 0x00, + 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x58, 0x04, 0x00, 0x00, 0x72, 0x75, 0x6e, 0x4a, + 0x61, 0x63, 0x6f, 0x62, 0x69, 0x32, 0x44, 0x5f, 0x6b, 0x65, 0x72, 0x6e, + 0x65, 0x6c, 0x31, 0x00, 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0xa0, 0x20, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x20, 0x24, 0x01, 0x00, 0x0a, + 0xb8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x20, + 0x20, 0x01, 0x00, 0x0a, 0xa4, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xc8, 0x20, 0x10, 0x01, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x4c, 0x16, 0xcc, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x21, + 0xc0, 0x00, 0x00, 0x12, 0x80, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x21, 0xc0, 0x00, 0x00, 0x12, 0x60, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x22, 0xc4, 0x00, 0x00, 0x12, + 0x40, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, + 0xc4, 0x00, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x22, 0x80, 0x01, 0x8d, 0x0a, 0xe4, 0x00, 0x00, 0x00, + 0x40, 0x96, 0x2d, 0x20, 0x07, 0x0e, 0x0a, 0x07, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x23, 0x80, 0x02, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, + 0x40, 0x96, 0x01, 0x20, 0x07, 0x16, 0x12, 0x07, 0x10, 0x20, 0x80, 0x05, + 0x22, 0x0a, 0x00, 0x20, 0x00, 0x02, 0x8d, 0x0a, 0xc8, 0x00, 0x00, 0x00, + 0x10, 0x16, 0x5f, 0x25, 0x07, 0x00, 0x0e, 0x06, 0x10, 0x20, 0x80, 0x05, + 0x20, 0x0a, 0x00, 0x20, 0x00, 0x03, 0x8d, 0x0a, 0xc8, 0x00, 0x00, 0x00, + 0x10, 0x20, 0x81, 0x03, 0x22, 0x0a, 0x00, 0x20, 0x00, 0x02, 0x8d, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x81, 0x03, 0x20, 0x0a, 0x00, 0x20, + 0xc0, 0x01, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, + 0x48, 0x12, 0x40, 0x2a, 0xcc, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x20, 0x81, 0x03, 0x22, 0x0a, 0x00, 0x20, 0x00, 0x03, 0x8d, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x81, 0x03, 0x20, 0x0a, 0x00, 0x20, + 0xc0, 0x02, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, + 0x4a, 0x12, 0x60, 0x2a, 0xcc, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x19, 0x5f, 0x25, 0x07, 0x00, 0x16, 0x06, 0x05, 0x20, 0x80, 0x02, + 0x40, 0x12, 0x00, 0x20, 0x40, 0x0a, 0xb1, 0x12, 0x60, 0x0a, 0xb1, 0x00, + 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, 0xc0, 0x02, 0x00, 0x00, + 0xc0, 0x02, 0x00, 0x00, 0x41, 0x96, 0x6d, 0x20, 0x07, 0x1a, 0x0e, 0x08, + 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, 0x00, 0x02, 0x8d, 0x0a, + 0x10, 0x01, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x27, + 0xc0, 0x01, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x27, 0x00, 0x02, 0x8d, 0x1e, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe7, 0x1a, 0x1a, 0x16, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x23, 0x80, 0x03, 0x8d, 0x0a, 0x00, 0x03, 0x8d, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x28, 0xc0, 0x01, 0x8d, 0x1e, + 0xff, 0xff, 0xff, 0xff, 0x41, 0x96, 0x6d, 0x20, 0x07, 0x3a, 0x3a, 0x08, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, 0x40, 0x03, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x24, + 0x80, 0x03, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x29, 0x00, 0x02, 0x8d, 0x1e, 0xff, 0xff, 0xff, 0xff, + 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x27, 0x80, 0x07, 0x8d, 0x0a, + 0x10, 0x01, 0x00, 0x00, 0x40, 0x96, 0x71, 0x20, 0x07, 0x22, 0x1e, 0x08, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x24, 0x00, 0x04, 0x8d, 0x0a, + 0x14, 0x01, 0x00, 0x00, 0x41, 0x96, 0x6d, 0x20, 0x07, 0x46, 0x46, 0x08, + 0x40, 0x96, 0x01, 0x20, 0xe7, 0x3a, 0x3a, 0x16, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x40, 0x24, 0x40, 0x04, 0x8d, 0x1e, 0xfc, 0xff, 0xfc, 0xff, + 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x29, 0x00, 0x09, 0x8d, 0x0a, + 0x10, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x27, + 0x80, 0x07, 0x8d, 0x0a, 0x00, 0x03, 0x8d, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x24, 0x80, 0x04, 0x8d, 0x1e, 0xfc, 0xff, 0xfc, 0xff, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0xc0, 0x24, 0x40, 0x04, 0x00, 0x06, + 0x00, 0x58, 0x60, 0x04, 0x40, 0x96, 0x01, 0x20, 0xe7, 0x46, 0x46, 0x16, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x27, 0x40, 0x07, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x25, + 0x80, 0x04, 0x00, 0x06, 0x00, 0x58, 0x60, 0x04, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x00, 0x29, 0x00, 0x09, 0x8d, 0x0a, 0x00, 0x03, 0x8d, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x27, 0x80, 0x07, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x28, + 0xc0, 0x08, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x71, 0x20, + 0x07, 0x3a, 0x3a, 0x08, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x29, + 0x00, 0x09, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x27, 0x80, 0x07, 0x8d, 0x0a, 0x14, 0x01, 0x00, 0x00, + 0x40, 0x96, 0x71, 0x20, 0x07, 0x46, 0x46, 0x08, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0xc0, 0x27, 0x40, 0x07, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x29, 0x00, 0x09, 0x8d, 0x0a, + 0x14, 0x01, 0x00, 0x00, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x28, + 0x80, 0x07, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x40, 0x96, 0x75, 0x20, + 0x07, 0x4e, 0x1e, 0x08, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x29, + 0xc0, 0x08, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0x80, 0x29, 0x00, 0x09, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2a, 0x00, 0x04, 0x8d, 0x0a, + 0x18, 0x01, 0x00, 0x00, 0x40, 0x56, 0x02, 0x20, 0xe7, 0x32, 0x28, 0x26, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x80, 0x26, 0xc0, 0x05, 0x8d, 0x3a, + 0x80, 0x05, 0x8d, 0x00, 0x40, 0x56, 0x02, 0x20, 0xe7, 0x36, 0x32, 0x2a, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x00, 0x27, 0x80, 0x06, 0x8d, 0x3a, + 0x00, 0x06, 0x8d, 0x00, 0x40, 0x56, 0x02, 0x20, 0xe7, 0x42, 0x36, 0x3e, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x80, 0x28, 0x00, 0x07, 0x8d, 0x3a, + 0x00, 0x08, 0x8d, 0x00, 0x40, 0x56, 0x02, 0x20, 0xe7, 0x4a, 0x42, 0x4a, + 0x40, 0x20, 0x80, 0x00, 0xe8, 0x3a, 0x80, 0x29, 0x80, 0x08, 0x8d, 0x3a, + 0x80, 0x09, 0x8d, 0x00, 0x41, 0x00, 0x80, 0x00, 0xe8, 0x3a, 0x40, 0x29, + 0x40, 0x09, 0x8d, 0x3e, 0xcd, 0xcc, 0x4c, 0x3e, 0x41, 0x20, 0x80, 0x00, + 0xe8, 0x3a, 0x80, 0x29, 0x80, 0x09, 0x8d, 0x3e, 0xcd, 0xcc, 0x4c, 0x3e, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0xa0, 0x04, 0x00, 0xc2, 0x09, 0x00, 0x00, + 0x01, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0xc0, 0x04, 0x00, + 0x02, 0x0a, 0x00, 0x00, 0x01, 0x5e, 0x02, 0x04, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x05, 0x00, 0x31, 0x00, 0x60, 0x07, + 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0xb9, 0x02, 0xd0, 0x72, 0xd1, 0x55, 0x0f, 0x5c, 0xe6, 0x50, 0x9d, 0x95, + 0x14, 0x00, 0x00, 0x00, 0x98, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x68, 0x02, 0x00, 0x00, 0x72, 0x75, 0x6e, 0x4a, 0x61, 0x63, 0x6f, 0x62, + 0x69, 0x32, 0x44, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x32, 0x00, + 0x01, 0x00, 0x60, 0x00, 0x0c, 0x02, 0xa0, 0x20, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, + 0x00, 0x10, 0x00, 0x16, 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xc0, 0x20, 0x24, 0x01, 0x00, 0x0a, 0xb8, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x20, 0x20, 0x01, 0x00, 0x0a, + 0xa4, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc8, 0x20, + 0x10, 0x01, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x4c, 0x16, 0xcc, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x21, 0xc0, 0x00, 0x00, 0x12, + 0x80, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x21, + 0xc0, 0x00, 0x00, 0x12, 0x60, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x22, 0xc4, 0x00, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x22, 0xc4, 0x00, 0x00, 0x12, + 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x22, + 0x80, 0x01, 0x8d, 0x0a, 0xe4, 0x00, 0x00, 0x00, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x0e, 0x0a, 0x07, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x23, + 0x80, 0x02, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x16, 0x12, 0x07, 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, + 0x00, 0x02, 0x8d, 0x0a, 0xc8, 0x00, 0x00, 0x00, 0x10, 0x16, 0x5f, 0x25, + 0x07, 0x00, 0x0e, 0x06, 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, + 0x00, 0x03, 0x8d, 0x0a, 0xc8, 0x00, 0x00, 0x00, 0x10, 0x20, 0x81, 0x03, + 0x22, 0x0a, 0x00, 0x20, 0x00, 0x02, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x81, 0x03, 0x20, 0x0a, 0x00, 0x20, 0xc0, 0x01, 0x8d, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, 0x48, 0x12, 0xc0, 0x24, + 0xcc, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x81, 0x03, + 0x22, 0x0a, 0x00, 0x20, 0x00, 0x03, 0x8d, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x81, 0x03, 0x20, 0x0a, 0x00, 0x20, 0xc0, 0x02, 0x8d, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, 0x4a, 0x12, 0xe0, 0x24, + 0xcc, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10, 0x19, 0x5f, 0x25, + 0x07, 0x00, 0x16, 0x06, 0x05, 0x20, 0x80, 0x02, 0x40, 0x12, 0x00, 0x20, + 0xc0, 0x04, 0xb1, 0x12, 0xe0, 0x04, 0xb1, 0x00, 0x22, 0x00, 0xa1, 0x00, + 0x00, 0x0e, 0x00, 0x20, 0xd0, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x41, 0x96, 0x6d, 0x20, 0x07, 0x1a, 0x0e, 0x08, 0x41, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x23, 0x00, 0x02, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, + 0x40, 0x96, 0x01, 0x20, 0xe7, 0x1a, 0x1a, 0x16, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x23, 0x80, 0x03, 0x8d, 0x0a, 0x00, 0x03, 0x8d, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x23, 0x40, 0x03, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, + 0x80, 0x03, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x75, 0x20, + 0x07, 0x1e, 0x1a, 0x08, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x24, + 0x80, 0x03, 0x8d, 0x0a, 0x18, 0x01, 0x00, 0x00, 0x40, 0x96, 0x71, 0x20, + 0x07, 0x1a, 0x1a, 0x08, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x23, + 0x80, 0x03, 0x8d, 0x0a, 0x14, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0x40, 0x24, 0xc0, 0x03, 0x00, 0x06, 0x01, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x24, 0x00, 0x04, 0x00, 0x06, + 0x01, 0x5e, 0x20, 0x04, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x20, 0x02, 0x00, + 0x42, 0x03, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0x40, 0x02, 0x00, 0x82, 0x03, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x05, 0x00, + 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, + 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00 +}; +unsigned int jacobi2D_Gen9core_gen_len = 4884; diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.cc b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.cc new file mode 100644 index 0000000000..7e42fc36f3 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.cc @@ -0,0 +1,350 @@ +/** + * lu.c: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#include +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#else +#include "../../CL/cl.h" +#endif + +#define POLYBENCH_TIME 1 + +//select the OpenCL device to use (can be GPU, CPU, or Accelerator such as Intel Xeon Phi) +#define OPENCL_DEVICE_SELECTION CL_DEVICE_TYPE_GPU + +#include "lu.h" +#include "../../polybench.h" + +//define the error threshold for the results "not matching" +#define PERCENT_DIFF_ERROR_THRESHOLD 0.05 + +#define MAX_SOURCE_SIZE (0x100000) + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + +namespace ns_lu { + +#include "../../polybenchUtilFuncts.h" +#include "lu_kernel.h" + +char str_temp[1024]; + +cl_platform_id platform_id; +cl_device_id device_id; +cl_uint num_devices; +cl_uint num_platforms; +cl_int errcode; +cl_context clGPUContext; +cl_kernel clKernel1; +cl_kernel clKernel2; +cl_command_queue clCommandQue; +cl_program clProgram; +cl_mem a_mem_obj; +FILE *fp; +char *source_str; +size_t source_size; + +#define RUN_ON_CPU + + +void compareResults(int n, DATA_TYPE POLYBENCH_2D(A_cpu,N,N,n,n), DATA_TYPE POLYBENCH_2D(A_outputFromGpu,N,N,n,n)) +{ + int i, j, fail; + fail = 0; + + // Compare a and b + for (i=0; i PERCENT_DIFF_ERROR_THRESHOLD) + { + fail++; + } + } + } + + // Print results + printf("Non-Matching CPU-GPU Outputs Beyond Error Threshold of %4.2f Percent: %d\n", PERCENT_DIFF_ERROR_THRESHOLD, fail); +} + + +void read_cl_file() +{ + // Load the kernel source code into the array source_str + // fp = fopen("lu.cl", "r"); + // if (!fp) { + // fprintf(stderr, "Failed to load kernel.\n"); + // exit(1); + // } + // source_str = (char*)malloc(MAX_SOURCE_SIZE); + // source_size = fread( source_str, 1, MAX_SOURCE_SIZE, fp); + // fclose( fp ); +} + + +void init_array(int n, DATA_TYPE POLYBENCH_2D(A,N,N,n,n)) +{ + int i, j; + + for (i = 0; i < n; i++) + { + for (j = 0; j < n; j++) + { + A[i][j] = ((DATA_TYPE) i*j + 1) / N; + } + } +} + + +void cl_initialization() +{ + // Get platform and device information + errcode = clGetPlatformIDs(1, &platform_id, &num_platforms); + if(errcode == CL_SUCCESS) printf("number of platforms is %d\n",num_platforms); + + errcode = clGetPlatformInfo(platform_id,CL_PLATFORM_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform name is %s\n",str_temp); + + errcode = clGetPlatformInfo(platform_id, CL_PLATFORM_VERSION, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("platform version is %s\n",str_temp); + + errcode = clGetDeviceIDs( platform_id, OPENCL_DEVICE_SELECTION, 1, &device_id, &num_devices); + if(errcode == CL_SUCCESS) printf("device id is %d\n",device_id); + + errcode = clGetDeviceInfo(device_id,CL_DEVICE_NAME, sizeof(str_temp), str_temp,NULL); + if(errcode == CL_SUCCESS) printf("device name is %s\n",str_temp); + + // Create an OpenCL context + clGPUContext = clCreateContext( NULL, 1, &device_id, NULL, NULL, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating context\n"); + + //Create a command-queue + clCommandQue = clCreateCommandQueue(clGPUContext, device_id, 0, &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating command queue\n"); +} + + +void cl_mem_init(DATA_TYPE POLYBENCH_2D(A,N,N,n,n)) +{ + size_t mem_size_A = N*N*sizeof(DATA_TYPE); + + a_mem_obj = clCreateBuffer(clGPUContext, CL_MEM_READ_WRITE, mem_size_A, NULL, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating buffers\n"); + + errcode = clEnqueueWriteBuffer(clCommandQue, a_mem_obj, CL_TRUE, 0, mem_size_A, A, 0, NULL, NULL); + if(errcode != CL_SUCCESS)printf("Error in writing buffers\n"); +} + + +void cl_load_prog() +{ + // Create a program from the kernel source + const size_t kernel_size = lu_Gen9core_gen_len; + const unsigned char* kernel_bin = lu_Gen9core_gen; + clProgram = clCreateProgramWithBinary(clGPUContext, 1, &device_id, &kernel_size, &kernel_bin, NULL, &errcode); + // clProgram = clCreateProgramWithSource(clGPUContext, 1, (const char **)&source_str, (const size_t *)&source_size, &errcode); + + if(errcode != CL_SUCCESS) printf("Error in creating program\n"); + + // Build the program + errcode = clBuildProgram(clProgram, 1, &device_id, NULL, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in building program\n"); + + // Create the OpenCL kernel + clKernel1 = clCreateKernel(clProgram, "lu_kernel1", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel1\n"); + clKernel2 = clCreateKernel(clProgram, "lu_kernel2", &errcode); + if(errcode != CL_SUCCESS) printf("Error in creating kernel2\n"); + clFinish(clCommandQue); +} + + +void cl_launch_kernel1(int k, int n) +{ + if (k < (_PB_N-1)) + { + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = 256; + localWorkSize[1] = 1; + globalWorkSize[0] = (size_t)ceil(((double)N - (double)(k + 1)) / 256.0) * 256; + globalWorkSize[1] = 1; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel1, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel1, 1, sizeof(int), (void *)&k); + errcode |= clSetKernelArg(clKernel1, 2, sizeof(int), (void *)&n); + + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel1, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in launching kernel\n"); + clFinish(clCommandQue); + } +} + + +void cl_launch_kernel2(int k, int n) +{ + if (k < (_PB_N-1)) + { + size_t localWorkSize[2], globalWorkSize[2]; + localWorkSize[0] = 32; + localWorkSize[1] = 8; + globalWorkSize[0] = (size_t)ceil(((double)N - (double)(k + 1)) / 32.0) * 32; + globalWorkSize[1] = (size_t)ceil(((double)N - (double)(k + 1)) / 8.0) * 8; + + // Set the arguments of the kernel + errcode = clSetKernelArg(clKernel2, 0, sizeof(cl_mem), (void *)&a_mem_obj); + errcode |= clSetKernelArg(clKernel2, 1, sizeof(int), (void *)&k); + errcode |= clSetKernelArg(clKernel2, 2, sizeof(int), (void *)&n); + + if(errcode != CL_SUCCESS) printf("Error in seting arguments\n"); + + // Execute the OpenCL kernel + errcode = clEnqueueNDRangeKernel(clCommandQue, clKernel2, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); + if(errcode != CL_SUCCESS) + { + printf("Error in launching kernel\n"); + printf("Nums: %d %d\n", globalWorkSize[0], globalWorkSize[1]); + } + clFinish(clCommandQue); + } +} + + +void cl_clean_up() +{ + // Clean up + errcode = clFlush(clCommandQue); + errcode = clFinish(clCommandQue); + errcode = clReleaseKernel(clKernel1); + errcode = clReleaseKernel(clKernel2); + errcode = clReleaseProgram(clProgram); + errcode = clReleaseMemObject(a_mem_obj); + errcode = clReleaseCommandQueue(clCommandQue); + errcode = clReleaseContext(clGPUContext); + if(errcode != CL_SUCCESS) printf("Error in cleanup\n"); +} + + +void lu(int n, DATA_TYPE POLYBENCH_2D(A,N,N,n,n)) +{ + int i, j, k; + for (k = 0; k < _PB_N; k++) + { + for (j = k + 1; j < _PB_N; j++) + { + A[k][j] = A[k][j] / A[k][k]; + } + + for (i = k + 1; i < _PB_N; i++) + { + for (j = k + 1; j < _PB_N; j++) + { + A[i][j] = A[i][j] - A[i][k] * A[k][j]; + } + } + } +} + + +/* DCE code. Must scan the entire live-out data. + Can be used also to check the correctness of the output. */ +static +void print_array(int n, + DATA_TYPE POLYBENCH_2D(A,N,N,n,n)) + +{ + int i, j; + + for (i = 0; i < n; i++) + for (j = 0; j < n; j++) { + fprintf (stderr, DATA_PRINTF_MODIFIER, A[i][j]); + if ((i * n + j) % 20 == 0) fprintf (stderr, "\n"); + } + fprintf (stderr, "\n"); +} + + +int main(int argc, char *argv[]) +{ + int n = N; + + POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,N,N,n,n); + POLYBENCH_2D_ARRAY_DECL(A_outputFromGpu,DATA_TYPE,N,N,n,n); + + init_array(n, POLYBENCH_ARRAY(A)); + + read_cl_file(); + cl_initialization(); + cl_mem_init(POLYBENCH_ARRAY(A)); + cl_load_prog(); + + /* Start timer. */ + polybench_start_instruments; + + int k; + for (k = 0; k < _PB_N; k++) + { + cl_launch_kernel1(k, n); + cl_launch_kernel2(k, n); + } + + /* Stop and print timer. */ + printf("GPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + errcode = clEnqueueReadBuffer(clCommandQue, a_mem_obj, CL_TRUE, 0, N*N*sizeof(DATA_TYPE), POLYBENCH_ARRAY(A_outputFromGpu), 0, NULL, NULL); + if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); + + #ifdef RUN_ON_CPU + + /* Start timer. */ + polybench_start_instruments; + + lu(n, POLYBENCH_ARRAY(A)); + + /* Stop and print timer. */ + printf("CPU Time in seconds:\n"); + polybench_stop_instruments; + polybench_print_instruments; + + compareResults(n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(A_outputFromGpu)); + + #else //prevent dead code elimination + + polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A_outputFromGpu))); + + #endif //RUN_ON_CPU + + + cl_clean_up(); + + POLYBENCH_FREE_ARRAY(A); + POLYBENCH_FREE_ARRAY(A_outputFromGpu); + + return 0; +} + +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.cl b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.cl new file mode 100644 index 0000000000..d6524a9e9c --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.cl @@ -0,0 +1,41 @@ +/** + * lu.cl: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#if defined(cl_khr_fp64) // Khronos extension available? +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension available? +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif + + +typedef float DATA_TYPE; + + + +__kernel void lu_kernel1(__global DATA_TYPE *A, int k, int n) +{ + int j = get_global_id(0) + (k + 1); + + if ((j < n)) + { + A[k*n + j] = A[k*n + j] / A[k*n + k]; + } +} + +__kernel void lu_kernel2(__global DATA_TYPE *A, int k, int n) +{ + int j = get_global_id(0) + (k + 1); + int i = get_global_id(1) + (k + 1); + + if ((i < n) && (j < n)) + { + A[i*n + j] = A[i*n + j] - A[i*n + k] * A[k*n + j]; + } +} diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.h new file mode 100644 index 0000000000..02e9e9047f --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu.h @@ -0,0 +1,59 @@ +/** + * lu.h: This file is part of the PolyBench/GPU 1.0 test suite. + * + * + * Contact: Scott Grauer-Gray + * Will Killian + * Louis-Noel Pouchet + * Web address: http://www.cse.ohio-state.edu/~pouchet/software/polybench/GPU + */ + +#ifndef LU_H +# define LU_H + +/* Default to STANDARD_DATASET. */ +# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET) +# define MINI_DATASET +# endif + +/* Do not define anything if the user manually defines the size. */ +# if !defined(N) +/* Define the possible dataset sizes. */ +# ifdef MINI_DATASET +#define N 512 +# endif + +# ifdef SMALL_DATASET +#define N 1024 +# endif + +# ifdef STANDARD_DATASET /* Default if unspecified. */ +#define N 2048 +# endif + +# ifdef LARGE_DATASET +#define N 4096 +# endif + +# ifdef EXTRALARGE_DATASET +#define N 8192 +# endif +# endif /* !N */ + +# define _PB_N POLYBENCH_LOOP_BOUND(N,n) + +# ifndef DATA_TYPE +# define DATA_TYPE float +# define DATA_PRINTF_MODIFIER "%0.2lf " +# endif + +/* Thread block dimensions for kernel 1 */ +#define DIM_LOCAL_WORK_GROUP_KERNEL_1_X 256 +#define DIM_LOCAL_WORK_GROUP_KERNEL_1_Y 1 + +/* Thread block dimensions for kernel 2 */ +#define DIM_LOCAL_WORK_GROUP_KERNEL_2_X 32 +#define DIM_LOCAL_WORK_GROUP_KERNEL_2_Y 8 + + +#endif /* !LU*/ \ No newline at end of file diff --git a/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu_kernel.h b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu_kernel.h new file mode 100644 index 0000000000..37afe0ec10 --- /dev/null +++ b/repos/hello_gpgpu/src/hello_gpgpu/benchmark/lu/lu_kernel.h @@ -0,0 +1,346 @@ +unsigned char lu_Gen9core_gen[] = { + 0x43, 0x54, 0x4e, 0x49, 0x39, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb6, 0x71, 0x36, 0xba, 0x9f, 0xef, 0x13, 0x68, + 0xcf, 0x0e, 0xdb, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x44, 0x04, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0x6c, 0x75, 0x5f, 0x6b, + 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x31, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x80, 0x20, + 0x14, 0x01, 0x00, 0x0a, 0x64, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0x84, 0x20, 0x08, 0x01, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, + 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x20, 0x80, 0x00, 0x00, 0x12, + 0x20, 0x00, 0xb1, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x21, + 0x80, 0x00, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x05, 0x05, 0x07, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x21, + 0x20, 0x01, 0x8d, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x40, 0x96, 0x2d, 0x20, + 0x07, 0x0b, 0x05, 0x04, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xa0, 0x21, + 0x20, 0x01, 0x8d, 0x0a, 0x84, 0x00, 0x00, 0x00, 0x10, 0x16, 0x67, 0x25, + 0x07, 0x00, 0x0b, 0x08, 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, + 0xa0, 0x01, 0x8d, 0x0a, 0x0c, 0x01, 0x00, 0x00, 0x22, 0x00, 0xa1, 0x00, + 0x00, 0x0e, 0x00, 0x20, 0x18, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x88, 0x20, 0x08, 0x01, 0x00, 0x0a, + 0x0c, 0x01, 0x00, 0x00, 0x40, 0x96, 0x19, 0x20, 0xe0, 0x0f, 0x04, 0x0b, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x8c, 0x20, 0x88, 0x00, 0x00, 0x0a, + 0x08, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x22, + 0x88, 0x00, 0x00, 0x0a, 0xa0, 0x01, 0x8d, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xe0, 0x21, 0xe0, 0x01, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x90, 0x20, 0x8c, 0x00, 0x00, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x22, + 0x20, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x6d, 0x20, + 0x07, 0x0f, 0x0f, 0x08, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0x00, 0x21, + 0x90, 0x00, 0x00, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x20, 0x22, 0x20, 0x02, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x60, 0x22, 0xe0, 0x01, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x00, 0x0a, 0x0c, 0x02, 0xe0, 0x22, + 0x00, 0x01, 0x00, 0x06, 0x00, 0x08, 0x11, 0x02, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xa0, 0x22, 0x20, 0x02, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x38, 0x56, 0x02, 0x29, 0x07, 0x18, 0x13, 0x17, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x20, 0x80, 0x09, 0xe8, 0x3a, 0x40, 0x23, 0xa0, 0x02, 0x8d, 0x3a, + 0xe0, 0x02, 0x00, 0x00, 0x33, 0x00, 0x80, 0x0c, 0x70, 0x80, 0x01, 0x00, + 0xe2, 0x01, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, + 0x70, 0xa0, 0x01, 0x00, 0x22, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, + 0x25, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x03, 0x00, + 0x31, 0x00, 0x60, 0x07, 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, + 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, + 0x00, 0x00, 0x00, 0x03, 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x2a, 0x3b, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x74, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xbb, 0x0b, 0x9a, 0x9f, 0xef, 0x13, 0x68, + 0xcf, 0x0e, 0xdb, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x44, 0x04, 0x00, 0x00, + 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x6c, 0x75, 0x5f, 0x6b, + 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x32, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, + 0x0c, 0x02, 0xa0, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x16, + 0xc0, 0x04, 0xc0, 0x04, 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc0, 0x2f, + 0x14, 0x01, 0x00, 0x0a, 0xa4, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x0a, 0xc0, 0x20, 0x08, 0x01, 0x00, 0x1e, 0x01, 0x00, 0x01, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc4, 0x2f, 0x18, 0x01, 0x00, 0x0a, + 0xb8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x16, 0xc4, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x2f, 0xc0, 0x0f, 0x00, 0x12, 0x40, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2f, 0xc4, 0x0f, 0x00, 0x12, + 0x80, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, 0x28, 0x0a, 0x20, 0x21, + 0xc0, 0x0f, 0x00, 0x12, 0x20, 0x00, 0xb1, 0x00, 0x40, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0xa0, 0x21, 0xc4, 0x0f, 0x00, 0x12, 0x60, 0x00, 0xb1, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2f, 0x80, 0x0f, 0x8d, 0x0a, + 0xe0, 0x00, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x00, 0x2f, + 0x00, 0x0f, 0x8d, 0x0a, 0xe4, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x09, 0x09, 0x07, 0x40, 0x96, 0x2d, 0x20, 0x07, 0x0d, 0x0d, 0x07, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x60, 0x21, 0x80, 0x0f, 0x8d, 0x0a, + 0xc0, 0x00, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2e, + 0x00, 0x0f, 0x8d, 0x0a, 0xc0, 0x00, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0x07, 0x7a, 0x09, 0x06, 0x40, 0x96, 0x01, 0x20, 0x07, 0x0f, 0x0d, 0x06, + 0x10, 0x20, 0x80, 0x05, 0x22, 0x0a, 0x00, 0x20, 0x60, 0x01, 0x8d, 0x0a, + 0x0c, 0x01, 0x00, 0x00, 0x10, 0x20, 0x80, 0x05, 0x20, 0x0a, 0x00, 0x20, + 0xc0, 0x0e, 0x8d, 0x0a, 0x0c, 0x01, 0x00, 0x00, 0x10, 0x16, 0x67, 0x25, + 0x07, 0x00, 0x7a, 0x08, 0x02, 0x20, 0x81, 0x00, 0x4a, 0x12, 0x60, 0x2d, + 0xc4, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x81, 0x00, + 0x48, 0x12, 0x20, 0x23, 0xc4, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x19, 0x67, 0x25, 0x07, 0x00, 0x0f, 0x08, 0x05, 0x20, 0x80, 0x02, + 0x40, 0x12, 0x00, 0x20, 0x20, 0x03, 0xb1, 0x12, 0x60, 0x0d, 0xb1, 0x00, + 0x22, 0x00, 0xa1, 0x00, 0x00, 0x0e, 0x00, 0x20, 0xb8, 0x01, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x41, 0x96, 0x65, 0x20, 0x07, 0x11, 0x0f, 0x08, + 0x41, 0x00, 0x00, 0x00, 0x2c, 0x0a, 0xc8, 0x2f, 0x08, 0x01, 0x00, 0x0a, + 0x0c, 0x01, 0x00, 0x00, 0x41, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x80, 0x2e, + 0xc0, 0x0e, 0x8d, 0x0a, 0x0c, 0x01, 0x00, 0x00, 0x40, 0x96, 0x01, 0x20, + 0xe7, 0x13, 0x11, 0x7a, 0x40, 0x96, 0x5d, 0x20, 0x07, 0x17, 0x11, 0x08, + 0x40, 0x96, 0x19, 0x20, 0xe0, 0x1e, 0x7e, 0x7a, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x2d, 0xc8, 0x0f, 0x00, 0x0a, 0x60, 0x01, 0x8d, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2e, 0x80, 0x0e, 0x8d, 0x0a, + 0x60, 0x01, 0x8d, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2d, + 0x80, 0x0e, 0x8d, 0x0a, 0x08, 0x01, 0x00, 0x00, 0x09, 0x00, 0x80, 0x00, + 0x28, 0x0a, 0x60, 0x22, 0x60, 0x02, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xe0, 0x22, 0xe0, 0x02, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x00, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x23, + 0xc0, 0x03, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x2d, 0x80, 0x0d, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, + 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2e, 0x40, 0x0e, 0x8d, 0x1e, + 0x02, 0x00, 0x02, 0x00, 0x09, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2d, + 0xc0, 0x0d, 0x8d, 0x1e, 0x02, 0x00, 0x02, 0x00, 0x40, 0x96, 0x6d, 0x20, + 0x07, 0x13, 0x13, 0x08, 0x40, 0x96, 0x6d, 0x20, 0x07, 0x17, 0x17, 0x08, + 0x40, 0x96, 0x6d, 0x20, 0x07, 0x1e, 0x1e, 0x08, 0x40, 0x20, 0x80, 0x00, + 0x28, 0x0a, 0x80, 0x2d, 0x80, 0x0d, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, + 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0x40, 0x2e, 0x40, 0x0e, 0x8d, 0x0a, + 0x10, 0x01, 0x00, 0x00, 0x40, 0x20, 0x80, 0x00, 0x28, 0x0a, 0xc0, 0x2d, + 0xc0, 0x0d, 0x8d, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x31, 0x00, 0x80, 0x0c, + 0x68, 0x02, 0xa0, 0x22, 0x60, 0x02, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x40, 0x23, 0xe0, 0x02, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x00, 0x80, 0x0c, 0x68, 0x02, 0x20, 0x2d, + 0xc0, 0x03, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, + 0x68, 0x02, 0xe0, 0x2c, 0x80, 0x0d, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, + 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x00, 0x2e, 0x40, 0x0e, 0x00, 0x06, + 0x00, 0x5e, 0x20, 0x04, 0x31, 0x20, 0x80, 0x0c, 0x68, 0x02, 0x80, 0x23, + 0xc0, 0x0d, 0x00, 0x06, 0x00, 0x5e, 0x20, 0x04, 0x5b, 0x0e, 0x02, 0x20, + 0x00, 0xa8, 0x68, 0xd2, 0x5b, 0x5f, 0x06, 0x20, 0x00, 0x80, 0x73, 0xce, + 0x33, 0x00, 0x80, 0x0c, 0x70, 0x00, 0x02, 0x00, 0x62, 0x02, 0x00, 0x00, + 0x00, 0x5e, 0x02, 0x04, 0x33, 0x20, 0x80, 0x0c, 0x70, 0x50, 0x06, 0x00, + 0x42, 0x0e, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x04, 0x25, 0x00, 0xa0, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x4d, 0x00, 0x20, 0x07, 0x7f, 0x05, 0x00, 0x31, 0x00, 0x60, 0x07, + 0x04, 0x02, 0x00, 0x20, 0xe0, 0x0f, 0x00, 0x06, 0x10, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0x00, 0x00, 0x00, 0x03, + 0x7f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x2a, 0x3b, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x74, 0x3b, + 0x34, 0x00, 0x00, 0x00, 0x4e, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00 +}; +unsigned int lu_Gen9core_gen_len = 4116; diff --git a/repos/hello_gpgpu/src/hello_gpgpu/main.cc b/repos/hello_gpgpu/src/hello_gpgpu/main.cc index 12fa5a9b40..9c90279212 100644 --- a/repos/hello_gpgpu/src/hello_gpgpu/main.cc +++ b/repos/hello_gpgpu/src/hello_gpgpu/main.cc @@ -34,17 +34,31 @@ void testvm_construct(Genode::Env &env) // run 2mm Libc::with_libc([&] { clInitGenode(alloc); - ns_2mm::main(0,0); - ns_3mm::main(0, 0); - ns_atax::main(0,0); - ns_bicg::main(0,0); - ns_doitgen::main(0,0); - ns_gemm::main(0,0); - ns_gemver::main(0,0); - ns_gesummv::main(0,0); - ns_mvt::main(0,0); - ns_syr2k::main(0,0); - ns_syrk::main(0,0); + + //ns_2mm::main(0,0); + // ns_3mm::main(0, 0); + // ns_atax::main(0,0); + // ns_bicg::main(0,0); + // ns_doitgen::main(0,0); + // ns_gemm::main(0,0); + // ns_gemver::main(0,0); + // ns_gesummv::main(0,0); + // ns_mvt::main(0,0); + // ns_syr2k::main(0,0); + // ns_syrk::main(0,0); + + // ns_correlation::main(0,0); // sqrt bug + // ns_covariance::main(0,0); + + // ns_adi::main(0,0); + // ns_convolution_2d::main(0,0); + // ns_convolution_3d::main(0,0); + // ns_fdtd_2d::main(0,0); + // ns_jacobi_1d_imper::main(0,0); + // ns_jacobi_2d_imper::main(0,0); + // ns_gramschmidt::main(0,0); // sqrt bug + ns_lu::main(0,0); + }); Genode::log("hello gpgpu completed"); diff --git a/repos/hello_gpgpu/src/hello_gpgpu/target.mk b/repos/hello_gpgpu/src/hello_gpgpu/target.mk index dadbd17521..011a3e8097 100644 --- a/repos/hello_gpgpu/src/hello_gpgpu/target.mk +++ b/repos/hello_gpgpu/src/hello_gpgpu/target.mk @@ -1,5 +1,29 @@ TARGET = hello_gpgpu -SRC_CC = main.cc test.cc polybench.cc CL/cl.cc benchmark/2mm/2mm.cc benchmark/3mm/3mm.cc benchmark/atax/atax.cc benchmark/bicg/bicg.cc benchmark/doitgen/doitgen.cc benchmark/gemm/gemm.cc benchmark/gemver/gemver.cc benchmark/gesummv/gesummv.cc benchmark/mvt/mvt.cc benchmark/syr2k/syr2k.cc benchmark/syrk/syrk.cc -LIBS = base libc +SRC_CC = main.cc \ + test.cc \ + polybench.cc \ + CL/cl.cc benchmark/2mm/2mm.cc \ + benchmark/3mm/3mm.cc \ + benchmark/atax/atax.cc \ + benchmark/bicg/bicg.cc \ + benchmark/doitgen/doitgen.cc \ + benchmark/gemm/gemm.cc \ + benchmark/gemver/gemver.cc \ + benchmark/gesummv/gesummv.cc \ + benchmark/mvt/mvt.cc \ + benchmark/syr2k/syr2k.cc \ + benchmark/syrk/syrk.cc \ + benchmark/correlation/correlation.cc \ + benchmark/covariance/covariance.cc \ + benchmark/adi/adi.cc \ + benchmark/convolution-2d/2DConvolution.cc \ + benchmark/convolution-3d/3DConvolution.cc \ + benchmark/fdtd-2d/fdtd2d.cc \ + benchmark/jacobi-1d-imper/jacobi1D.cc \ + benchmark/jacobi-2d-imper/jacobi2D.cc \ + benchmark/gramschmidt/gramschmidt.cc \ + benchmark/lu/lu.cc \ + +LIBS = base libc CC_CXX_WARN_STRICT =